ऑप्टिमाइज़ेशन और क्वेरी प्लान्स

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

Liam Brannigan

Data Scientist & Polars Contributor

क्वेरी ऑप्टिमाइज़ेशन का परिचय

पंक्तियों और कॉलम वाली टेबल की छवि

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

क्वेरी ऑप्टिमाइज़ेशन का परिचय

पंक्तियों और कॉलम वाली टेबल की छवि

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

क्वेरी ऑप्टिमाइज़ेशन का परिचय

सीरियल में चलती ऑपरेशंस की छवि

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

क्वेरी ऑप्टिमाइज़ेशन का परिचय

पैरलल में चलती ऑपरेशंस की छवि

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

क्वेरी ऑप्टिमाइज़ेशन का परिचय

डुप्लिकेट ऑपरेशंस दो बार चलने वाली पाइपलाइन

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

क्वेरी ऑप्टिमाइज़ेशन का परिचय

डुप्लिकेट ऑपरेशंस दो बार चलने वाली पाइपलाइन

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

विभाग अनुसार सबसे अधिक अनुरोध प्रकार

department_request_types = (
    requests





)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

विभाग अनुसार सबसे अधिक अनुरोध प्रकार

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




)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

विभाग अनुसार सबसे अधिक अनुरोध प्रकार

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



)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

विभाग अनुसार सबसे अधिक अनुरोध प्रकार

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


)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

विभाग अनुसार सबसे अधिक अनुरोध प्रकार

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)
)
  • साधारण योजना
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

अनऑप्टिमाइज़्ड योजना

print(department_request_types)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

अनऑप्टिमाइज़्ड योजना

print(department_request_types)







        Csv SCAN [311_Service_Requests.csv]
        PROJECT */39 COLUMNS
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

अनऑप्टिमाइज़्ड योजना

print(department_request_types)





      FILTER [(col("STATUS")) == ("Completed")]
      FROM
        Csv SCAN [311_Service_Requests.csv]
        PROJECT */39 COLUMNS
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

अनऑप्टिमाइज़्ड योजना

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
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

अनऑप्टिमाइज़्ड योजना

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
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

ऑप्टिमाइज़्ड योजना

print(department_request_types.explain())
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

ऑप्टिमाइज़्ड योजना







        Csv SCAN [311_Service_Requests.csv]
        PROJECT 3/39 COLUMNS
        SELECTION: [(col("STATUS")) == ("Completed")]
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

ऑप्टिमाइज़्ड योजना






      simple pi 2/2 ["TYPE", "DEPARTMENT"]
        Csv SCAN [311_Service_Requests.csv]
        PROJECT 3/39 COLUMNS
        SELECTION: [(col("STATUS")) == ("Completed")]
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

ऑप्टिमाइज़्ड योजना



    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")]
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

ऑप्टिमाइज़्ड योजना

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")]
  • n_request_types में शीर्ष 10 पंक्तियाँ खोजें
  • बाकी को हटा दें
  • 10 पंक्तियाँ sort करें
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

ग्राफ़ के रूप में ऑप्टिमाइज़्ड योजना

print(department_request_types.show_graph())

ऑप्टिमाइज़्ड योजना का ग्राफ़ व्यू, जिसमें ऑप्टिमाइज़ेशंस सहित CSV स्कैन दिखता है.

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

और ऑप्टिमाइज़ेशन

(
    requests








)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

और ऑप्टिमाइज़ेशन

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






)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

और ऑप्टिमाइज़ेशन

(
    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")
    )
)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

और ऑप्टिमाइज़ेशन



  Csv SCAN [311_Service_Requests.csv]
  PROJECT */39 COLUMNS
  SELECTION: [([(col("DEPARTMENT")) == ("Sanitation")]) & ([(col("STATUS")) == ("Completed")])]
  • संयुक्त AND प्रेडिकेट
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

और ऑप्टिमाइज़ेशन

 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 एक्सप्रेशंस
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

अभ्यास करते हैं!

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

Preparing Video For Download...