การปรับแต่งคิวรีและแผนการดำเนินการ

การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

Liam Brannigan

Data Scientist & Polars Contributor

แนะนำการปรับแต่งคิวรี

ภาพตารางที่มีแถวและคอลัมน์

การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แนะนำการปรับแต่งคิวรี

ภาพตารางที่มีแถวและคอลัมน์

การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แนะนำการปรับแต่งคิวรี

ภาพการรันการดำเนินการแบบอนุกรม

การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แนะนำการปรับแต่งคิวรี

ภาพการรันการดำเนินการแบบขนาน

การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แนะนำการปรับแต่งคิวรี

ไปป์ไลน์ที่มีการดำเนินการซ้ำซ้อนสองครั้ง

การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แนะนำการปรับแต่งคิวรี

ไปป์ไลน์ที่มีการดำเนินการซ้ำซ้อนสองครั้ง

การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

ประเภทคำขอสูงสุดตามแผนก

department_request_types = (
    requests





)
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

ประเภทคำขอสูงสุดตามแผนก

department_request_types = (
    requests
    .filter(pl.col("STATUS") == "Completed")




)
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

ประเภทคำขอสูงสุดตามแผนก

department_request_types = (
    requests
    .filter(pl.col("STATUS") == "Completed")
    .group_by("DEPARTMENT")



)
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

ประเภทคำขอสูงสุดตามแผนก

department_request_types = (
    requests    
    .filter(pl.col("STATUS") == "Completed")
    .group_by("DEPARTMENT")
    .agg(pl.col("TYPE").n_unique().alias("n_request_types"))


)
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

ประเภทคำขอสูงสุดตามแผนก

department_request_types = (
    requests
    .filter(pl.col("STATUS") == "Completed")
    .group_by("DEPARTMENT")
    .agg(pl.col("TYPE").n_unique().alias("n_request_types"))
    .sort("n_request_types", descending=True)
    .head(5)
)
  • แผน Naive
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แผนที่ยังไม่ถูกปรับแต่ง

print(department_request_types)
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แผนที่ยังไม่ถูกปรับแต่ง

print(department_request_types)







        Csv SCAN [311_Service_Requests.csv]
        PROJECT */39 COLUMNS
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แผนที่ยังไม่ถูกปรับแต่ง

print(department_request_types)





      FILTER [(col("STATUS")) == ("Completed")]
      FROM
        Csv SCAN [311_Service_Requests.csv]
        PROJECT */39 COLUMNS
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แผนที่ยังไม่ถูกปรับแต่ง

print(department_request_types)


    AGGREGATE[maintain_order: false]
      [col("TYPE").n_unique().alias("n_request_types")] BY [col("DEPARTMENT")]
      FROM
      FILTER [(col("STATUS")) == ("Completed")]
      FROM
        Csv SCAN [311_Service_Requests.csv]
        PROJECT */39 COLUMNS
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แผนที่ยังไม่ถูกปรับแต่ง

print(department_request_types)
SLICE[offset: 0, len: 5]
  SORT BY [descending: [true]] [col("n_request_types")]
    AGGREGATE[maintain_order: false]
      [col("TYPE").n_unique().alias("n_request_types")] BY [col("DEPARTMENT")]
      FROM
      FILTER [(col("STATUS")) == ("Completed")]
      FROM
        Csv SCAN [311_Service_Requests.csv]
        PROJECT */39 COLUMNS
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แผนที่ถูกปรับแต่งแล้ว

print(department_request_types.explain())
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แผนที่ถูกปรับแต่งแล้ว







        Csv SCAN [311_Service_Requests.csv]
        PROJECT 3/39 COLUMNS
        SELECTION: [(col("STATUS")) == ("Completed")]
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แผนที่ถูกปรับแต่งแล้ว






      simple pi 2/2 ["TYPE", "DEPARTMENT"]
        Csv SCAN [311_Service_Requests.csv]
        PROJECT 3/39 COLUMNS
        SELECTION: [(col("STATUS")) == ("Completed")]
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แผนที่ถูกปรับแต่งแล้ว



    AGGREGATE[maintain_order: false]
      [col("TYPE").n_unique().alias("n_request_types")] BY [col("DEPARTMENT")]
      FROM
      simple pi 2/2 ["TYPE", "DEPARTMENT"]
        Csv SCAN [311_Service_Requests.csv]
        PROJECT 3/39 COLUMNS
        SELECTION: [(col("STATUS")) == ("Completed")]
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แผนที่ถูกปรับแต่งแล้ว

SORT BY [slice: (0, 10, ...), descending: [true]] [col("n_request_types")]
  FILTER col("n_request_types").dynamic_predicate() FROM
    AGGREGATE[maintain_order: false]
      [col("TYPE").n_unique().alias("n_request_types")] BY [col("DEPARTMENT")]
      FROM
      simple pi 2/2 ["TYPE", "DEPARTMENT"]
        Csv SCAN [311_Service_Requests.csv]
        PROJECT 3/39 COLUMNS
        SELECTION: [(col("STATUS")) == ("Completed")]
  • ค้นหา 10 แถวสูงสุดใน n_request_types
  • กรองแถวที่เหลือออก
  • เรียงลำดับ 10 แถวนั้น
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

แผนที่ถูกปรับแต่งแล้วในรูปแบบกราฟ

print(department_request_types.show_graph())

ภาพกราฟของแผนที่ปรับแต่งแล้ว แสดงการสแกน CSV พร้อมการปรับแต่ง

การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

การปรับแต่งเพิ่มเติม

(
    requests








)
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

การปรับแต่งเพิ่มเติม

(
    requests
    .filter(pl.col("STATUS") == "Completed")
    .filter(pl.col("DEPARTMENT") == "Sanitation")






)
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

การปรับแต่งเพิ่มเติม

(
    requests
    .filter(pl.col("STATUS") == "Completed")
    .filter(pl.col("DEPARTMENT") == "Sanitation")
    .with_columns(
        pl.col("TYPE").str.to_lowercase().alias("type_lower")
    )
    .with_columns(
        pl.col("STATUS").str.to_lowercase().alias("status_lower")
    )
)
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

การปรับแต่งเพิ่มเติม



  Csv SCAN [311_Service_Requests.csv]
  PROJECT */39 COLUMNS
  SELECTION: [([(col("DEPARTMENT")) == ("Sanitation")]) & ([(col("STATUS")) == ("Completed")])]
  • รวมเงื่อนไข AND ไว้ด้วยกัน
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

การปรับแต่งเพิ่มเติม

 WITH_COLUMNS:
 [col("TYPE").str.to_lowercase().alias("type_lower"), col("STATUS").str.to_lowercase().alias("status_lower")]
  Csv SCAN [311_Service_Requests.csv]
  PROJECT */39 COLUMNS
  SELECTION: [([(col("DEPARTMENT")) == ("Sanitation")]) & ([(col("STATUS")) == ("Completed")])]
  • รวมเงื่อนไข AND ไว้ด้วยกัน
  • จัดกลุ่มนิพจน์ WITH_COLUMNS เข้าด้วยกัน
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

มาฝึกกันเถอะ!

การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

Preparing Video For Download...