Xử lý dữ liệu ngày tháng trong Spark

แชร์
ฝัง
  • เผยแพร่เมื่อ 14 ต.ค. 2024
  • #bigdata
    #spark
    #dataengineer
    #maide

ความคิดเห็น •

  • @SortStoryyFong
    @SortStoryyFong 4 หลายเดือนก่อน +1

    Tuy tiếng hơi nhỏ nhưng mà video hay với chị chỉ chuyên sâu cách thức hoạt động ít ai làm được như thế. Bật max loa là khác phục được hehe

    • @MaiDE-uq7ws
      @MaiDE-uq7ws  4 หลายเดือนก่อน

      cám ơn em đã thích video của chị, cmt của em đã tiếp thêm động lực cho chị ra tiếp những video như thế này. Đúng là không có những cmt giống như của em, chị thôi làm video lâu rồi ý, vì bỏ nhiều thời gian công sức làm video mà không có ai xem, huhu 😢

  • @tranthang2104
    @tranthang2104 4 หลายเดือนก่อน +1

    tuyệt vời chị ơi, em cảm ơn ạ !!! Rất hữu ích với em

    • @MaiDE-uq7ws
      @MaiDE-uq7ws  4 หลายเดือนก่อน +1

      cám ơn em, cmt của em rất hữu ích với chị 🥰

  • @trinhnguyen-lv9km
    @trinhnguyen-lv9km 5 หลายเดือนก่อน +1

    Em nghĩ chị có thể làm những khóa học về Data Engineering, Spark rồi up lên Udemy, vì thực sự ko có mấy ai giải thích chi tiết dễ hiểu và cặn kẽ như chị.

    • @MaiDE-uq7ws
      @MaiDE-uq7ws  5 หลายเดือนก่อน

      Cám ơn bạn rất nhiều về lời nhận xét này, đó cũng chính là điều mà mình muốn mang đến cho cộng đồng DE ở Việt Nam khi xây kênh. Nhờ vào cmt của bạn mà mình biết được rằng mình đã phần nào đó thực hiện được mong muốn của bản thân, cám ơn bạn rất nhiều 🥰

    • @centuruslee
      @centuruslee 4 หลายเดือนก่อน +1

      chị up lên full khoá spark lên udemy là +1 học sinh ạaaaaa ☺️

    • @MaiDE-uq7ws
      @MaiDE-uq7ws  4 หลายเดือนก่อน

      @@centuruslee cám ơn bạn đã ủng hộ mình 🥰

  • @nguyeninhan8542
    @nguyeninhan8542 5 หลายเดือนก่อน +1

    tuyệt vời luôn chị ơi

    • @MaiDE-uq7ws
      @MaiDE-uq7ws  5 หลายเดือนก่อน

      cám ơn bạn, mà bạn nghe có bị âm thanh hơi nhỏ và khó nghe không?

  • @TynE
    @TynE 5 หลายเดือนก่อน +1

    Chị có thế giải thích giúp em cơ chế hoạt động của Shared variables : Broadcast variable và Accumulator được ko ạ. ❤❤❤

    • @MaiDE-uq7ws
      @MaiDE-uq7ws  5 หลายเดือนก่อน +1

      Chào bạn, mình đã note yêu cầu của bạn rồi nhé, có dịp thích hợp mình sẽ ra video về chủ đề này :)

  • @thanhhocdata
    @thanhhocdata 3 หลายเดือนก่อน +1

    chị ơi cho em hỏi giả xử cột ngày tháng của mình có rất nhiều định dạng thì mình sẽ xử lý như thế nào ạ
    Em có tìm hiểu được 2 cách sau.
    cách 1: dùng when
    df = df.withColumn("normalized_date",
    when(df["date"].rlike(r'\d{2}/\d{2}/\d{4}'), to_date(df["date"], "dd/MM/yyyy"))
    .when(df["date"].rlike(r'\d{4}-\d{2}-\d{2}'), to_date(df["date"], "yyyy-MM-dd"))
    .when(df["date"].rlike(r'\d{2}-[a-zA-Z]{3}-\d{4}'), to_date(df["date"], "dd-MMM-yyyy"))
    .when(df["date"].rlike(r'\d{2}-[a-zA-Z]{4,}-\d{4}'), to_date(df["date"], "dd-MMMM-yyyy"))
    .when(df["date"].rlike(r'\d{2}-\d{2}-\d{4}'), to_date(df["date"], "dd-MM-yyyy"))
    .otherwise(None)
    )
    cách 2: dùng udf
    def normalize_date(date_str):
    if date_str is None:
    return None
    date_str = date_str.strip().lower()

    patterns = [
    (r'\d{4}-\d{1,}-\d{1,}', '%Y-%m-%d'),
    (r'\d{1,}/\d{1,}/\d{4}', '%d/%m/%Y'),
    (r'\d{1,}-\d{1,}-\d{4}', '%d-%m-%Y'),
    (r'\d{1,}-[a-zA-Z]{3}-\d{4}', '%d-%b-%Y'),
    (r'\d{1,}-[a-zA-Z]{4,}-\d{4}', '%d-%B-%Y'),
    ]

    for pattern, date_format in patterns:
    if re.match(pattern, date_str):
    try:
    date_obj = datetime.strptime(date_str, date_format)
    return date_obj.strftime('%Y-%m-%d')
    except ValueError:
    return None
    return None
    # tạo udf
    normalize_date_udf = udf(normalize_date, StringType())
    # tạo column mới ở dạng chuẩn
    df = df.withColumn("normalized_date", normalize_date_udf(col("date")))
    Em thấy cách 1 mình sẽ phải liệt kê tất cả các định dạng ra ví dụ như yyyy-MM-dd tuy dạng này nhưng nếu ngày chỉ có 1 số thì ta phải liệt kê thêm yyyy-MM-d . vậy nên sẽ rất dài. em không biết có cách nào tối ưu hơn để xử lý. và làm sao mình xác định được có những định dạng nào không ạ.

    • @MaiDE-uq7ws
      @MaiDE-uq7ws  3 หลายเดือนก่อน +1

      em dùng hàm parse của dateutil.parser để tự động phát hiện định dạng của ngày tháng nhé, sau đó em dùng strftime('%Y-%m-%d) để đưa ngày tháng về dạng yyyy-mm-dd là được nhé

  • @HuyVũ-z2r
    @HuyVũ-z2r หลายเดือนก่อน +1

    Trong trường date ở định dạng dd-MM-yyyy HH:mm:ss thì xử lý như nào ạ. Em làm tương tự như video thì chương trình báo lỗi. Em có hỏi chat gpt thì nó gợi ý dùng to_timestamp thay cho to_date. Tuy nhiên khi em làm theo thì vẫn báo lỗi.

    • @MaiDE-uq7ws
      @MaiDE-uq7ws  หลายเดือนก่อน +1

      em dùng format_date nhé, tuần tới chị sẽ ra 1 video về cách sử dụng hàm này

    • @HuyVũ-z2r
      @HuyVũ-z2r หลายเดือนก่อน +1

      @@MaiDE-uq7ws vâng em cảm ơn chị ạ

    • @HuyVũ-z2r
      @HuyVũ-z2r หลายเดือนก่อน +1

      @@MaiDE-uq7ws Chị có thể làm thêm trường hợp định dạng ngày ở dạng Unix Timestamp và dạng ngày bị chuyển sang dạng dãy số được không ạ?

    • @MaiDE-uq7ws
      @MaiDE-uq7ws  หลายเดือนก่อน

      @@HuyVũ-z2r ok em, chị note yêu cầu rồi nhé, có gì chị sẽ ra thêm video về chủ đề này

  • @keendev
    @keendev 5 หลายเดือนก่อน +1

    video này volume nhỏ hơi khó nghe c ơi

    • @MaiDE-uq7ws
      @MaiDE-uq7ws  5 หลายเดือนก่อน +1

      ôi thế à, để mình rút kinh nghiệm, cám ơn bạn đã góp ý nhé