ऑप्टिमाइज़ेशन का पूरा लाभ उठाएँ

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

Liam Brannigan

Data Scientist & Polars Contributor

लेज़ी मोड में पिवट

monthly_requests
shape: (5, 3)
| MONTH | DEPARTMENT      | count    |
| ---   | ---             | ---      |
| i8    | str             | u32      |
|-------|-----------------|----------|
| 1     | Aviation        | 1        |
| 1     | Animal Control  | 342      |
| 1     | Fire            | 2        |
| 1     | Health          | 42       |
| 2     | Finance         | 47       |
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

डिपार्टमेंट्स को पिवट करना

department_names = ["Aviation", "Animal Control", "Finance", "Fire", "Health"]
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

डिपार्टमेंट्स को पिवट करना

monthly_requests.pivot(




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

डिपार्टमेंट्स को पिवट करना

monthly_requests.pivot(
    on="DEPARTMENT",
    index="MONTH",
    values="count",

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

डिपार्टमेंट्स को पिवट करना

monthly_requests.pivot(
    on="DEPARTMENT",
    index="MONTH",
    values="count",
    on_columns=department_names,
)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

डिपार्टमेंट्स को पिवट करना

shape: (8, 6)
| MONTH | Aviation | Animal Control | Finance | Fire | Health |
| ---   | ---      | ---            | ---     | ---  | ---    |
| i8    | u32      | u32            | u32     | u32  | u32    |
|-------|----------|----------------|---------|------|--------|
| 1     | 1        | 342            | 0       | 2    | 42     |
| 2     | 1086     | 311            | 47      | 10   | 28     |
| 3     | 386      | 309            | 16      | 2    | 46     |
| 4     | 4        | 260            | 0       | 1    | 44     |
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

लेज़ी क्वेरी का प्रोफाइलिंग

result, timings = requests


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

लेज़ी क्वेरी का प्रोफाइलिंग

result, timings = requests.with_columns(pl.selectors.integer().cast(pl.Int32))


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

लेज़ी क्वेरी का प्रोफाइलिंग

result, timings = requests.with_columns(pl.selectors.integer().cast(pl.Int32)).filter(
    pl.col("STATUS") == "Completed"
)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

लेज़ी क्वेरी का प्रोफाइलिंग

result, timings = requests.with_columns(pl.selectors.integer().cast(pl.Int32)).filter(
    pl.col("STATUS") == "Completed"
).sort("COST")
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

लेज़ी क्वेरी का प्रोफाइलिंग

result, timings = requests.with_columns(pl.selectors.integer().cast(pl.Int32)).filter(
    pl.col("STATUS") == "Completed"
).sort("COST").profile()
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

प्रोफाइल आउटपुट पढ़ना

timings
shape: (3, 4)
| node                            | start    | end      |
| ---                             | ---      | ---      |             
| str                             | u64      | u64      |             
|---------------------------------|----------|----------|
| optimization                    | 0        | 16115139 |           
| with_column(ZIP_CODE, STREET_N  | 16115139 | 18423529 |           
| sort(COST)                      | 18423529 | 41897636 |
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

प्रोफाइल आउटपुट पढ़ना

timings
shape: (3, 4)
| node                            | start    | end      | duration_seconds |
| ---                             | ---      | ---      | ---              |
| str                             | u64      | u64      | f64              |
|---------------------------------|----------|----------|------------------|
| optimization                    | 0        | 16115139 | 16.11            |
| with_column(ZIP_CODE, STREET_N  | 16115139 | 18423529 | 2.030            |
| sort(COST)                      | 18423529 | 41897636 | 23.47            |
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

सॉर्टेड डेटा और फास्ट पाथ्स

id कॉलम से सॉर्टेड डेटा वाली टेबल

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

सॉर्टेड डेटा और फास्ट पाथ्स

id कॉलम से सॉर्टेड टेबल, पहली 3 पंक्तियाँ हाइलाइटेड

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

फास्ट-पाथ फ़िल्टर

requests


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

फास्ट-पाथ फ़िल्टर

requests.set_sorted("CREATED_DATE")


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

फास्ट-पाथ फ़िल्टर

requests.set_sorted("CREATED_DATE").filter(
    pl.col("CREATED_DATE") < pl.date(2020,1,1)
).collect()
shape: (4, 39)
| TYPE                          | STATUS    | DEPARTMENT    | CREATED_DATE        | ... |
| ---                          | ---       | ---            | ---                 | --- |
| str                          | str       | str            | str                 | ... |
|------------------------------|-----------|----------------|---------------------|-----|
| Pothole in Street Complaint  | Completed | Transportation | 2019-12-16T10:09:08 | ... |
| Tree Trim Request            | Canceled  | Sanitation     | 2019-09-18T01:05:08 | ... |
| Pothole in Street Complaint  | Completed | Transportation | 2019-03-21T10:41:01 | ... |
| Alley Light Out              | Completed | Sanitation     | 2019-11-03T08:22:15 | ... |
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

फास्ट-पाथ स्टैटिस्टिक्स

requests.set_sorted("CREATED_DATE").select(


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

फास्ट-पाथ स्टैटिस्टिक्स

requests.set_sorted("CREATED_DATE").select(
    pl.col("CREATED_DATE").min().alias("min"),
    pl.col("CREATED_DATE").median().alias("median"),
)
shape: (1, 2)
| min                 | median                  |
| ---                 | ---                     |
| datetime[µs]        | datetime[µs]            |
|---------------------|-------------------------|
| 2018-07-01 01:01:29 | 2019-06-03 09:46:29.500 |
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

अन्य फास्ट-पाथ ऑप्टिमाइज़ेशन

requests.set_sorted("CREATED_DATE").join(
    responses.set_sorted("CREATED_DATE"),on="CREATED_DATE"
)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

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

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

Preparing Video For Download...