From 02a7af6e0d4d485560eb5b302c5ac0ed6f6667e2 Mon Sep 17 00:00:00 2001 From: Mohamad Bader almsaddi alzin Date: Thu, 30 Jul 2026 14:15:35 +0200 Subject: [PATCH 01/10] added task1 readme --- task-1/README.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/task-1/README.md b/task-1/README.md index 569d9a9..c978605 100644 --- a/task-1/README.md +++ b/task-1/README.md @@ -12,3 +12,31 @@ Add your Databricks notebook here. - Two or three sentences on when you would choose PySpark versus dbt SQL. See the [Week 13 assignment](https://www.notion.so/hackyourfuture/Assignment-2af50f64ffc98112b371c42a3f469749) for full requirements. + +**reference:** +from pyspark.sql import functions as F + +trips = spark.read.table("hyf.nyc_yellow.raw_trips") +zones = spark.read.table("hyf.nyc_yellow.raw_zones") + +**Question 1:** + +borough_counts = ( + trips + .join(zones, trips.pickup_location_id == zones.location_id) + .groupBy("borough") + .agg(F.count("*").alias("trip_count")) + .orderBy(F.col("trip_count").desc()) +) + +borough_counts.show(1) + +**Question 2:** +payment_avg = ( + trips + .groupBy("payment_type") + .agg(F.round(F.avg("total_amount"), 2).alias("avg_total_amount")) + .orderBy("payment_type") +) + +payment_avg.show() From 7c9d6fd77cb93645b07a2ef6faa2f28fd0fc3e8c Mon Sep 17 00:00:00 2001 From: Mohamad Bader almsaddi alzin Date: Thu, 30 Jul 2026 14:16:47 +0200 Subject: [PATCH 02/10] added dbt project --- task-2/.gitignore | 165 ++++++++++++++++++ task-2/dbt_project.yml | 25 +++ task-2/macros/safe_divide.sql | 6 + .../models/marts/_fct_daily_borough_stats.yml | 36 ++++ .../models/marts/fct_daily_borough_stats.sql | 41 +++++ task-2/models/marts/fct_trips.sql | 33 ++++ task-2/models/marts/fct_trips.yml | 53 ++++++ task-2/models/staging/_sources.yml | 10 ++ task-2/models/staging/_stg_trips.yml | 30 ++++ task-2/models/staging/_stg_zones.yml | 15 ++ task-2/models/staging/stg_trips.sql | 51 ++++++ task-2/models/staging/stg_zones.sql | 6 + task-2/package-lock.yml | 5 + task-2/packages.yml | 3 + .../assert_avg_tip_pct_within_bounds.sql | 22 +++ 15 files changed, 501 insertions(+) create mode 100644 task-2/.gitignore create mode 100644 task-2/dbt_project.yml create mode 100644 task-2/macros/safe_divide.sql create mode 100644 task-2/models/marts/_fct_daily_borough_stats.yml create mode 100644 task-2/models/marts/fct_daily_borough_stats.sql create mode 100644 task-2/models/marts/fct_trips.sql create mode 100644 task-2/models/marts/fct_trips.yml create mode 100644 task-2/models/staging/_sources.yml create mode 100644 task-2/models/staging/_stg_trips.yml create mode 100644 task-2/models/staging/_stg_zones.yml create mode 100644 task-2/models/staging/stg_trips.sql create mode 100644 task-2/models/staging/stg_zones.sql create mode 100644 task-2/package-lock.yml create mode 100644 task-2/packages.yml create mode 100644 task-2/tests/assert_avg_tip_pct_within_bounds.sql diff --git a/task-2/.gitignore b/task-2/.gitignore new file mode 100644 index 0000000..5f1af3c --- /dev/null +++ b/task-2/.gitignore @@ -0,0 +1,165 @@ +# dbt +target/ +dbt_packages/ +logs/ +profiles.yml +.user.yml + +# System files +.DS_Store +Thumbs.db +[Dd]esktop.ini + +# hyf +.hyf/score.json + +# Editor and IDE settings +.vscode/ +.idea/ +*.iml +*.code-workspace +*.sublime-project +*.sublime-workspace +.history/ +.ionide/ + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.* +!.env.example + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# Sveltekit cache directory +.svelte-kit/ + +# vitepress build output +**/.vitepress/dist + +# vitepress cache directory +**/.vitepress/cache + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# Firebase cache directory +.firebase/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v3 +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# Vite logs files +vite.config.js.timestamp-* +vite.config.ts.timestamp-* + diff --git a/task-2/dbt_project.yml b/task-2/dbt_project.yml new file mode 100644 index 0000000..fca4ee5 --- /dev/null +++ b/task-2/dbt_project.yml @@ -0,0 +1,25 @@ +name: 'nyc_taxi' +version: '1.0.0' +config-version: 2 + +# This project connects to the profile of the same name in profiles.yml. +profile: 'nyc_taxi' + +model-paths: ["models"] +macro-paths: ["macros"] +test-paths: ["tests"] + +target-path: "target" +clean-targets: + - "target" + - "dbt_packages" + +# Folder-level materialization defaults. Staging models stay as views (cheap, +# always fresh); the mart is built as a table (queried repeatedly by the +# dashboard). You can override per model with {{ config(materialized='...') }}. +models: + nyc_taxi: + staging: + +materialized: view + marts: + +materialized: table diff --git a/task-2/macros/safe_divide.sql b/task-2/macros/safe_divide.sql new file mode 100644 index 0000000..8695fe0 --- /dev/null +++ b/task-2/macros/safe_divide.sql @@ -0,0 +1,6 @@ +{% macro safe_divide(numerator, denominator) %} + case + when {{ denominator }} > 0 then round(({{ numerator }} / {{ denominator }})::numeric, 4) + else null + end +{% endmacro %} \ No newline at end of file diff --git a/task-2/models/marts/_fct_daily_borough_stats.yml b/task-2/models/marts/_fct_daily_borough_stats.yml new file mode 100644 index 0000000..716bc4e --- /dev/null +++ b/task-2/models/marts/_fct_daily_borough_stats.yml @@ -0,0 +1,36 @@ +version: 2 + +models: + - name: fct_daily_borough_stats + description: "One row per completed NYC green taxi trip in January 2024, with + pickup/dropoff zone attributes folded in (OBT-style mart). Queried + directly by dashboards and ad-hoc analysis. + + **Grain:** one row per trip. + **Source:** `public.raw_trips` joined to `public.raw_zones` on + `pickup_location_id` and `dropoff_location_id`. + **Not included:** trips where `pickup_location_id` is NULL (dropped + in `stg_trips`); duplicate rows from the TLC source are kept as-is + and surfaced by `dbt_utils.unique_combination_of_columns`." + # TODO: Task 5 -- add the compound uniqueness test on the mart's primary + # key (pickup_borough, pickup_date). You need the dbt_utils package for + # this: declare it in packages.yml and run `dbt deps` first. + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: + - pickup_borough + - pickup_date + severity: warn + columns: + - name: pickup_borough + description: "TLC borough where the trip started" + - name: pickup_date + description: "the day the trip started (date only, no time)" + - name: trip_count + description: "total trips that started in this borough on this day" + - name: total_fare + description: "total revenue from trips that started in this borough on this day in USD" + - name: avg_tip_pct + description: "average tip percentage for trips that started in this borough on this day, expressed as a decimal (e.g. 0.15 = 15%)" + - name: avg_trip_distance + description: "average distance of trips that started in this borough on this day, in miles" diff --git a/task-2/models/marts/fct_daily_borough_stats.sql b/task-2/models/marts/fct_daily_borough_stats.sql new file mode 100644 index 0000000..0e6af8b --- /dev/null +++ b/task-2/models/marts/fct_daily_borough_stats.sql @@ -0,0 +1,41 @@ +-- Mart: daily borough trip statistics. +-- Grain: one row per (pickup_borough, pickup_date). +-- Used to answer: trip volume, revenue, tipping behaviour, and distance profile +-- per borough per day for January 2024. +{{ + config( + materialized='incremental', + incremental_strategy='merge', + unique_key='trip_id' + ) +}} + +WITH trips AS ( + SELECT * + FROM {{ ref('stg_trips') }} +), + +zones AS ( + SELECT * + FROM {{ ref('stg_zones') }} +) + +SELECT + + z.borough AS pickup_borough, + t.pickup_datetime AS pickup_date, + COUNT(*) AS trip_count, + SUM(t.fare_amount) AS total_fare, + AVG(t.tip_pct) AS avg_tip_pct, + AVG(t.trip_distance) AS avg_trip_distance + +FROM trips t +INNER JOIN zones z + ON t.pickup_location_id = z.location_id + +{% if is_incremental() %} +WHERE t.pickup_datetime::date > (select max(pickup_date) from {{ this }}) +{% endif %} + +GROUP BY pickup_borough, pickup_date + diff --git a/task-2/models/marts/fct_trips.sql b/task-2/models/marts/fct_trips.sql new file mode 100644 index 0000000..dcef618 --- /dev/null +++ b/task-2/models/marts/fct_trips.sql @@ -0,0 +1,33 @@ +{{ + config( + materialized='incremental', + incremental_strategy='merge', + unique_key='trip_id' + ) +}} + +select + t.trip_id, + t.pickup_datetime, + t.dropoff_datetime, + t.fare_amount, + t.tip_amount, + t.trip_distance, + t.trip_duration_minutes, + t.tip_pct, + t.fare_per_mile, + t.payment_type_label, + pz.borough as pickup_borough, + pz.zone as pickup_zone, + dz.borough as dropoff_borough, + dz.zone as dropoff_zone +from {{ ref('stg_trips') }} t +left join {{ ref('stg_zones') }} pz + on t.pickup_location_id = pz.location_id +left join {{ ref('stg_zones') }} dz + on t.dropoff_location_id = dz.location_id + +{% if is_incremental() %} + -- On incremental runs, only process trips newer than what we already have. + where t.pickup_datetime > (select max(pickup_datetime) from {{ this }}) +{% endif %} diff --git a/task-2/models/marts/fct_trips.yml b/task-2/models/marts/fct_trips.yml new file mode 100644 index 0000000..b11f8bb --- /dev/null +++ b/task-2/models/marts/fct_trips.yml @@ -0,0 +1,53 @@ +version: 2 + +models: + - name: fct_trips + description: | + One row per completed NYC yellow taxi trip (2023-2025), with + pickup/dropoff zone attributes folded in (OBT-style mart). Queried + directly by dashboards and ad-hoc analysis. + + **Grain:** one row per trip (`trip_id` surrogate key). + **Source:** `hyf.nyc_yellow.raw_trips` joined to `raw_zones` on + `pickup_location_id` and `dropoff_location_id`. + **Not included:** trips where `pickup_location_id` is NULL (dropped + in `stg_trips`); duplicate rows from the TLC source are kept as-is + and surfaced by `dbt_utils.unique_combination_of_columns`. + columns: + - name: trip_id + description: Surrogate key generated in `stg_trips` for incremental merge. + tests: [not_null, unique] + - name: pickup_datetime + description: Wall-clock time the trip began (America/New_York, no timezone attached). + tests: [not_null] + - name: dropoff_datetime + description: Wall-clock time the trip ended. + - name: fare_amount + description: Metered fare in USD, not including tip, tolls, or surcharges. + - name: tip_amount + description: Tip in USD. Non-zero only when payment_type is credit card (1). + - name: trip_distance + description: Distance in miles as reported by the taximeter. + - name: tip_pct + description: | + `tip_amount / fare_amount`, rounded to 4 decimals. NULL when + `fare_amount` is 0 (voided trips, no-charge rides). + - name: fare_per_mile + description: | + `fare_amount / trip_distance`, rounded to 4 decimals. NULL when + `trip_distance` is 0 (data-quality anomalies). + - name: payment_type_label + description: | + Human-readable payment method from the TLC code. See the jinja + dictionary in `stg_trips.sql` for the 1-6 → label mapping. + - name: pickup_borough + description: | + NYC borough of the pickup zone, joined from `stg_zones.borough`. + Values: Manhattan, Brooklyn, Queens, Bronx, Staten Island, EWR, + Unknown, NaN, or NULL when `pickup_location_id` did not resolve. + - name: pickup_zone + description: Human-readable pickup-zone name from `stg_zones.zone`. + - name: dropoff_borough + description: NYC borough of the dropoff zone. + - name: dropoff_zone + description: Human-readable dropoff-zone name. diff --git a/task-2/models/staging/_sources.yml b/task-2/models/staging/_sources.yml new file mode 100644 index 0000000..1eff526 --- /dev/null +++ b/task-2/models/staging/_sources.yml @@ -0,0 +1,10 @@ +version: 2 + +sources: + - name: nyc_taxi + description: Raw NYC yellow taxi trip records and zone lookup on Databricks (Unity Catalog). + database: hyf + schema: nyc_yellow + tables: + - name: raw_trips + - name: raw_zones \ No newline at end of file diff --git a/task-2/models/staging/_stg_trips.yml b/task-2/models/staging/_stg_trips.yml new file mode 100644 index 0000000..5a947ef --- /dev/null +++ b/task-2/models/staging/_stg_trips.yml @@ -0,0 +1,30 @@ +version: 2 + +models: + - name: stg_trips + description: "Cleaned green taxi trips, one row per trip. This reads from the raw_trips source." + columns: + - name: pickup_datetime + description: "when the trip started" + tests: + - not_null + - name: pickup_location_id + description: "TLC zone id where the trip started" + tests: + - not_null + - relationships: + to: ref('stg_zones') + field: location_id + config: + severity: warn + - name: fare_amount + description: "cost of the trip in USD" + - name: tip_amount + description: "tip paid for the trip" + + - name: trip_distance + description: "distance of the trip in miles" + + - name: tip_pct + description: "percentage of tip relative to trip cost" + diff --git a/task-2/models/staging/_stg_zones.yml b/task-2/models/staging/_stg_zones.yml new file mode 100644 index 0000000..13c591d --- /dev/null +++ b/task-2/models/staging/_stg_zones.yml @@ -0,0 +1,15 @@ +version: 2 + +models: + - name: stg_zones + description: "One row per TLC taxi zone (265 zones total)" + columns: + - name: location_id + description: TLC zone ID. + tests: + - unique + - not_null + - name: borough + description: NYC borough (Manhattan, Brooklyn, Queens, Bronx, Staten Island, EWR, Unknown). + tests: + - not_null \ No newline at end of file diff --git a/task-2/models/staging/stg_trips.sql b/task-2/models/staging/stg_trips.sql new file mode 100644 index 0000000..ac1a499 --- /dev/null +++ b/task-2/models/staging/stg_trips.sql @@ -0,0 +1,51 @@ +{{ config(materialized='view') }} + +{% set payment_types = { + 1: 'Credit card', + 2: 'Cash', + 3: 'No charge', + 4: 'Dispute', + 5: 'Unknown', + 6: 'Voided trip' +} %} + +with base as ( + select + {{ dbt_utils.generate_surrogate_key([ + 'vendor_id', 'pickup_datetime', 'dropoff_datetime', 'pickup_location_id', + 'dropoff_location_id', 'fare_amount', 'trip_distance', 'total_amount', 'passenger_count' + ]) }} as trip_id, + pickup_datetime, + dropoff_datetime, + pickup_location_id, + dropoff_location_id, + fare_amount, + tip_amount, + trip_distance, + payment_type, + case + when fare_amount > 0 then round(tip_amount / fare_amount, 4) + else null + end as tip_pct, + case + when trip_distance > 0 then round(fare_amount / trip_distance, 4) + else null + end as fare_per_mile, + case payment_type + {% for code, label in payment_types.items() %} + when {{ code }} then '{{ label }}' + {% endfor %} + else 'Other' + end as payment_type_label, + round((unix_timestamp(dropoff_datetime) - unix_timestamp(pickup_datetime)) / 60.0, 2) as trip_duration_minutes + from {{ source('nyc_taxi', 'raw_trips') }} + where pickup_location_id is not null + and fare_amount >= 0 +) + +select * +from base +qualify row_number() over ( + partition by trip_id + order by pickup_datetime +) = 1 diff --git a/task-2/models/staging/stg_zones.sql b/task-2/models/staging/stg_zones.sql new file mode 100644 index 0000000..1e98897 --- /dev/null +++ b/task-2/models/staging/stg_zones.sql @@ -0,0 +1,6 @@ +select + location_id, + borough, + zone, + service_zone +from {{ source('nyc_taxi', 'raw_zones') }} diff --git a/task-2/package-lock.yml b/task-2/package-lock.yml new file mode 100644 index 0000000..1ce78fc --- /dev/null +++ b/task-2/package-lock.yml @@ -0,0 +1,5 @@ +packages: + - name: dbt_utils + package: dbt-labs/dbt_utils + version: 1.4.1 +sha1_hash: e6424ba9e5a22487e47f023803aa4f0411946808 diff --git a/task-2/packages.yml b/task-2/packages.yml new file mode 100644 index 0000000..71fdb1a --- /dev/null +++ b/task-2/packages.yml @@ -0,0 +1,3 @@ +packages: + - package: dbt-labs/dbt_utils + version: [">=1.1.0", "<2.0.0"] \ No newline at end of file diff --git a/task-2/tests/assert_avg_tip_pct_within_bounds.sql b/task-2/tests/assert_avg_tip_pct_within_bounds.sql new file mode 100644 index 0000000..054736d --- /dev/null +++ b/task-2/tests/assert_avg_tip_pct_within_bounds.sql @@ -0,0 +1,22 @@ +-- Singular test: flag (borough, date) combinations where avg_tip_pct > 1. +-- A tip_pct > 1 means the average tip exceeded the total fare for that cell, +-- which is unusual and almost always indicates a small-sample bucket (e.g. the +-- Unknown borough) where a few high-tip outliers dominate the average. +-- +-- Set this test to WARN severity by adding an inline config at the top of this +-- file (below these comments): {{ config(severity='warn') }} +-- That keeps a few expected Unknown-borough rows from blocking `dbt build`, while +-- still surfacing them for your reports/answers.md write-up (the rubric requires +-- documenting this finding). Do NOT set a project-level test severity in +-- dbt_project.yml: that would also downgrade your not_null and +-- unique_combination primary-key tests, which you want to stay at ERROR. +-- +-- The test passes (no WARN) when zero rows are returned; any returned rows are flagged. + +-- TODO: write the SELECT here. +-- Query {{ ref('fct_daily_borough_stats') }} and return rows where avg_tip_pct > 1. + +{{ config(severity='warn') }} +select pickup_borough, pickup_date, avg_tip_pct +from {{ ref('fct_daily_borough_stats') }} +where avg_tip_pct > 1 \ No newline at end of file From 1be0cfee6b2aee04fcadc81076a198b99d3e0dd0 Mon Sep 17 00:00:00 2001 From: Mohamad Bader almsaddi alzin Date: Thu, 30 Jul 2026 14:17:04 +0200 Subject: [PATCH 03/10] filled writeup for task 2 --- task-2/WRITEUP.md | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/task-2/WRITEUP.md b/task-2/WRITEUP.md index f3d1eb3..051c8d5 100644 --- a/task-2/WRITEUP.md +++ b/task-2/WRITEUP.md @@ -4,21 +4,30 @@ Fill in after running `dbt build --select fct_trips --full-refresh` baseline fol ## First build (full / initial load with --full-refresh) -- **Wall-clock time:** +- **Wall-clock time: 13:51** +94.80s - **Notes:** (optional: warehouse size, any errors you fixed) ## Second build (incremental rerun) -- **Wall-clock time:** - +- **Wall-clock time:13:53** +81.36s + ## Why was the second run faster? -Write two or three sentences in your own words (see the assignment for the concepts you must name): - +Write two or three sentences in your own words (see the assignment for the concepts you must name): is_incremental() speeds up the process because if the table exists it wont rebuild the entire table from scratch and if its true {{this}} filter starts to work and check if there is new inserts to be modified or added `___` ## Delta Table History (DESCRIBE HISTORY) Paste the output or summary of `DESCRIBE HISTORY hyf.dev_yourname.fct_trips` (showing `CREATE OR REPLACE TABLE` and `MERGE` operations) or reference a screenshot: +![Alt Text](describe.png) +version,timestamp,userId,userName,operation,operationParameters,job,notebook,queryHistoryStatementId,clusterId,readVersion,isolationLevel,isBlindAppend,operationMetrics,userMetadata,engineInfo +4,2026-07-30T11:53:06.000Z,142272964130057,baderalmsaddy@gmail.com,MERGE,"{""predicate"":""[\""(trip_id#28336 <=> trip_id#28476)\""]"",""clusterBy"":""[]"",""matchedPredicates"":""[{\""actionType\"":\""update\""}]"",""statsOnLoad"":""false"",""notMatchedBySourcePredicates"":""[]"",""notMatchedPredicates"":""[{\""actionType\"":\""insert\""}]""}",null,null,01f18c0d-0da2-1778-887c-ca46c7e0c62d,null,3,WriteSerializable,false,"{""numTargetRowsCopied"":""0"",""numTargetRowsDeleted"":""0"",""numTargetBytesRemoved"":""0"",""numTargetDeletionVectorsAdded"":""0"",""numTargetRowsMatchedUpdated"":""0"",""numTargetRowsMatchedDeleted"":""0"",""numTargetRowsUpdated"":""0"",""numTargetChangeFilesAdded"":""0"",""numTargetRowsNotMatchedBySourceDeleted"":""0"",""rewriteTimeMs"":""3702"",""numTargetFilesAdded"":""0"",""numTargetBytesAdded"":""0"",""executionTimeMs"":""74496"",""materializeSourceTimeMs"":""70033"",""numTargetRowsInserted"":""0"",""numTargetDeletionVectorsUpdated"":""0"",""scanTimeMs"":""728"",""numOutputRows"":""0"",""numTargetDeletionVectorsRemoved"":""0"",""numTargetRowsNotMatchedBySourceUpdated"":""0"",""numSourceRows"":""0"",""numTargetFilesRemoved"":""0""}",null,Databricks-Runtime/18.x-aarch64-photon-scala2.13 +3,2026-07-30T11:51:16.000Z,142272964130057,baderalmsaddy@gmail.com,CREATE OR REPLACE TABLE AS SELECT,"{""partitionBy"":""[]"",""clusterBy"":""[]"",""description"":null,""isManaged"":""true"",""properties"":""{\""delta.checkpoint.writeStatsAsJson\"":\""false\"",\""delta.checkpoint.writeStatsAsStruct\"":\""true\"",\""delta.parquet.compression.codec\"":\""zstd\"",\""delta.enableDeletionVectors\"":\""true\""}"",""statsOnLoad"":""true""}",null,null,01f18c0c-c1be-1515-b30a-1fb61ac6307f,null,2,WriteSerializable,false,"{""numFiles"":""64"",""numRemovedFiles"":""65"",""numRemovedBytes"":""5159027812"",""numDeletionVectorsRemoved"":""0"",""numOutputRows"":""124241246"",""numOutputBytes"":""5160528189""}",null,Databricks-Runtime/18.x-aarch64-photon-scala2.13 +2,2026-07-30T11:45:23.000Z,142272964130057,baderalmsaddy@gmail.com,MERGE,"{""predicate"":""[\""(trip_id#24719 <=> trip_id#24859)\""]"",""clusterBy"":""[]"",""matchedPredicates"":""[{\""actionType\"":\""update\""}]"",""statsOnLoad"":""false"",""notMatchedBySourcePredicates"":""[]"",""notMatchedPredicates"":""[{\""actionType\"":\""insert\""}]""}",null,null,01f18c0b-f890-1e66-aa1d-5f2c56335061,null,1,WriteSerializable,false,"{""numTargetRowsCopied"":""0"",""numTargetRowsDeleted"":""0"",""numTargetBytesRemoved"":""0"",""numTargetDeletionVectorsAdded"":""0"",""numTargetRowsMatchedUpdated"":""0"",""numTargetRowsMatchedDeleted"":""0"",""numTargetRowsUpdated"":""0"",""numTargetChangeFilesAdded"":""0"",""numTargetRowsNotMatchedBySourceDeleted"":""0"",""rewriteTimeMs"":""1982"",""numTargetFilesAdded"":""0"",""numTargetBytesAdded"":""0"",""executionTimeMs"":""75613"",""materializeSourceTimeMs"":""72818"",""numTargetRowsInserted"":""0"",""numTargetDeletionVectorsUpdated"":""0"",""scanTimeMs"":""790"",""numOutputRows"":""0"",""numTargetDeletionVectorsRemoved"":""0"",""numTargetRowsNotMatchedBySourceUpdated"":""0"",""numSourceRows"":""0"",""numTargetFilesRemoved"":""0""}",null,Databricks-Runtime/18.x-aarch64-photon-scala2.13 +1,2026-07-30T11:41:45.000Z,142272964130057,baderalmsaddy@gmail.com,MERGE,"{""predicate"":""[\""(trip_id#22154 <=> trip_id#22294)\""]"",""clusterBy"":""[]"",""matchedPredicates"":""[{\""actionType\"":\""update\""}]"",""statsOnLoad"":""false"",""notMatchedBySourcePredicates"":""[]"",""notMatchedPredicates"":""[{\""actionType\"":\""insert\""}]""}",null,null,01f18c0b-7800-1e38-bc8d-2bd108a77adb,null,0,WriteSerializable,false,"{""numTargetRowsCopied"":""0"",""numTargetRowsDeleted"":""0"",""numTargetBytesRemoved"":""0"",""numTargetDeletionVectorsAdded"":""0"",""numTargetRowsMatchedUpdated"":""0"",""numTargetRowsMatchedDeleted"":""0"",""numTargetRowsUpdated"":""0"",""numTargetChangeFilesAdded"":""0"",""numTargetRowsNotMatchedBySourceDeleted"":""0"",""rewriteTimeMs"":""2856"",""numTargetFilesAdded"":""0"",""numTargetBytesAdded"":""0"",""executionTimeMs"":""73312"",""materializeSourceTimeMs"":""69355"",""numTargetRowsInserted"":""0"",""numTargetDeletionVectorsUpdated"":""0"",""scanTimeMs"":""1072"",""numOutputRows"":""0"",""numTargetDeletionVectorsRemoved"":""0"",""numTargetRowsNotMatchedBySourceUpdated"":""0"",""numSourceRows"":""0"",""numTargetFilesRemoved"":""0""}",null,Databricks-Runtime/18.x-aarch64-photon-scala2.13 +0,2026-07-30T11:38:34.000Z,142272964130057,baderalmsaddy@gmail.com,CREATE OR REPLACE TABLE AS SELECT,"{""partitionBy"":""[]"",""clusterBy"":""[]"",""description"":null,""isManaged"":""true"",""properties"":""{\""delta.checkpoint.writeStatsAsJson\"":\""false\"",\""delta.checkpoint.writeStatsAsStruct\"":\""true\"",\""delta.parquet.compression.codec\"":\""zstd\"",\""delta.enableDeletionVectors\"":\""true\""}"",""statsOnLoad"":""true""}",null,null,01f18c0a-f72d-1a36-a628-ffc3ee779511,null,null,WriteSerializable,false,"{""numFiles"":""65"",""numRemovedFiles"":""0"",""numRemovedBytes"":""0"",""numDeletionVectorsRemoved"":""0"",""numOutputRows"":""124241246"",""numOutputBytes"":""5159027812""}",null,Databricks-Runtime/18.x-aarch64-photon-scala2.13 + `___` From 70e3fa93fbeae46447530b5246825a3485e9880d Mon Sep 17 00:00:00 2001 From: Mohamad Bader almsaddi alzin Date: Thu, 30 Jul 2026 14:17:13 +0200 Subject: [PATCH 04/10] added proof task2 --- task-2/describe.png | Bin 0 -> 79588 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 task-2/describe.png diff --git a/task-2/describe.png b/task-2/describe.png new file mode 100644 index 0000000000000000000000000000000000000000..f204ad2dce4fa4a04c9bc10a09862a6799cd8ad1 GIT binary patch literal 79588 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 IdiTly1y3otApigX literal 0 HcmV?d00001 From e666652de72abb5beaee0abd85edaaa56092c102 Mon Sep 17 00:00:00 2001 From: Mohamad Bader almsaddi alzin Date: Thu, 30 Jul 2026 14:19:57 +0200 Subject: [PATCH 05/10] added requierments --- task-2/requirements.txt | 78 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 task-2/requirements.txt diff --git a/task-2/requirements.txt b/task-2/requirements.txt new file mode 100644 index 0000000..cbfe19a --- /dev/null +++ b/task-2/requirements.txt @@ -0,0 +1,78 @@ +agate==1.9.1 +annotated-types==0.8.0 +attrs==26.1.0 +babel==2.18.0 +certifi==2026.7.22 +cffi==2.1.0 +charset-normalizer==3.4.9 +click==8.4.2 +colorama==0.4.6 +cryptography==49.0.0 +daff==1.4.2 +databricks-sdk==0.117.0 +databricks-sql-connector==4.3.0 +dbt-adapters==1.24.5 +dbt-common==1.37.5 +dbt-core==1.12.0 +dbt-core-experimental-parser==2.0.0a5 +dbt-databricks==1.12.3 +dbt-extractor==0.6.0 +dbt-protos==1.0.541 +dbt-spark==1.10.3 +deepdiff==8.6.2 +et_xmlfile==2.0.0 +google-auth==2.56.2 +idna==3.18 +importlib_metadata==9.0.0 +isodate==0.7.2 +Jinja2==3.1.6 +jsonschema==4.26.0 +jsonschema-specifications==2025.9.1 +leather==0.4.1 +lz4==4.4.5 +MarkupSafe==3.0.3 +mashumaro==3.17 +metricflow==0.211.0 +more-itertools==10.8.0 +msgpack==1.2.1 +networkx==3.6.1 +numpy==2.5.1 +oauthlib==3.3.1 +openpyxl==3.1.5 +orderly-set==5.5.0 +packaging==25.0 +pandas==3.0.5 +parsedatetime==2.6 +pathspec==1.0.4 +protobuf==6.33.6 +pyarrow==25.0.0 +pyasn1==0.6.4 +pyasn1_modules==0.4.2 +pybreaker==1.4.1 +pycparser==3.0 +pydantic==2.12.5 +pydantic_core==2.41.5 +PyJWT==2.13.0 +python-dateutil==2.9.0.post0 +python-dotenv==1.2.2 +python-slugify==8.0.4 +pytimeparse==1.1.8 +pytz==2026.3.post1 +PyYAML==6.0.3 +RapidFuzz==3.14.5 +referencing==0.37.0 +requests==2.34.2 +rpds-py==2026.6.3 +six==1.17.0 +snowplow-tracker==1.1.0 +sqlglot==30.14.0 +sqlparams==6.2.0 +sqlparse==0.5.5 +tabulate==0.10.0 +text-unidecode==1.3 +thrift==0.22.0 +typing-inspection==0.4.2 +typing_extensions==4.16.0 +tzdata==2026.3 +urllib3==2.7.0 +zipp==4.1.0 From e45d02af89d26700fcb7fc88c960c85f4898ca5d Mon Sep 17 00:00:00 2001 From: Mohamad Bader almsaddi alzin Date: Thu, 30 Jul 2026 15:46:04 +0200 Subject: [PATCH 06/10] added screenshots --- task-3/screenshots/dbt.png | Bin 0 -> 38183 bytes task-3/screenshots/git.png | Bin 0 -> 6391 bytes task-3/screenshots/schedule.png | Bin 0 -> 23697 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 task-3/screenshots/dbt.png create mode 100644 task-3/screenshots/git.png create mode 100644 task-3/screenshots/schedule.png diff --git a/task-3/screenshots/dbt.png b/task-3/screenshots/dbt.png new file mode 100644 index 0000000000000000000000000000000000000000..4082447d0e9032a3d44c2197608ee9a761ff5e58 GIT binary patch literal 38183 zcmceecT`i|+U-$LR0PCE6HyV7B1o4+zzQNws`MhANGCx`K;%_ang~b@p!D7ey{L2u zoj^iU1cVR*0-=O*SMd0r^R;uoG42>Qf51*iNcPI!Yt833=d<5DQd49+#&L{>hK5n; z!97hHn!~0vGzUbE90recoUkBVY74OjGW6sTiJ9IX;Rd3VK6ooNtn;!!Ak2*il zccYvTSAE#T$L zP)9p_W4QZ`^Hia*=3|{knYT4L>m%Oln`@hJ8{wgPn`_|KRy>tDE^_^{*Xpc3OcrK0 zw<$L==D0q zKhLA-Y4oo36B*kGs_&8C!S3noZOqD7^Gf^1tFZVS`17ovZ_oJjGAfbM{5HDlD|r3B zd7uCDCz>Y}A33Ej*ZLK3N^f^mpZJ#-wJ}n=n= zTXNWuIwLK&cu6iUoL~H=nP`<*O4KZ7ceMB66}|D>>8b7Js!`LiW^D!WwWgs=Fo>6l zrj(xVp&2QQ^U=P8l3JS6&Uf7!TPRn_QgGKpaQGRi8p5Cs(pr51)_5OB^Za>D`RGc0 zAZa*1c4AJ_;mnKa{r5Fu=6WGA&OADVxwRKIG4xBSQ>~{k^bz`00iLPmb=8(!Nf;Nc zEVeA*^DFB>rqUbXLmT%Drox5-x^25hhJ+7F)!ho~4QKJWsVA&7GL8DsvdtyxkEIK% zUtxVpk1Wf{SnuOVx=N7Hqid51H7;dW(k#nd0RLgytMJFxX3YFnZyQWdI7yr}MXXCSFgWZH1&*f}!*yj{4gEDUW%{ple{@uz1<4yd!?o4fh{8ge)Ms%si zqTK!%K8NvL+IWv0GS~Pb^4V|HIy&hpT(cO0|G<=*#kUOklAzXeloD8SWvy&XG|70p zw|5L}uuv5sk)1DY&=xlTb&<_zG&+5y)_r4h%>;`nMjuXV?#`xTfV9J4zS<#P;(9&0 z2v5Zl0es7sE$<5Js64r1ZbQf;Ew}@Hdm6iH+PGb{5w=yYaB6(+brGaS(G~H${l+dH zo>l3D{^;FwzI^@dFdQR?XZ%3Z>XUx4wqIQ>kWgmrfisyUFfJ)AFLG5??LnL#YB6s? z3xDsD;8_+Qee7LR#cI>(5oCdQl|g@-=bbO;E}P*I=J1rc`ktj*S~dlFdpe0@q+xz* zD+4-3S;ay4V|9`zkEmeTV|%92$bxLy*IL+eAFb7A`WMyCwtd#V^KiyM@h##yI<~)O zS9*&qq}Ml2{C02Yi&iv+Jru6qVfvFKo>hz~KM{4pf1sT)v|w0zcI@8cL3XeZo!tjM!J-uE@6o=y10 zHk$+YapTaq)4!4j4;f`z@j33J`-AX;m>mQYqfwvkg7TAhu!1`4^lQ9YZ}-o1xhE`* z(ZZH}4;cs6?%FP;L}8U24>64L3*_IDlFh!ib7Q>pM)b$Rk0}YG;mK3V^c?N_D9G>5*x!YpEucRzZ~I62DJ+Bl70#Iv>LM`EuHmnyk2N+yv5ZIXjza zvLmO;4>Le_bIh^ zDk$6IM&xH^NAzWPrEIJ>_54+5mz#EOTU9;fGsih9g88H-I!j7UL)RkvC&R7SSOdJm zcYSbx$BIKE>@VdtMQEH6Ho%%8KQR3$%Oz84el4V_(JM$!FYeXUsYt;!gFJjgf7Gmx z<@1Fg&%4~bMBo_9zif9|I-PrT$KKbPQ|+wb1#yf6H1@r~N`!r6?UsQRSt^py=jqWe zXfSJ`pJ8onY!+8ijxQn)kK261zAC5O{9Z+Sp{}whb)abnOTY;-juEv^a8YNe=gi5> zjnOsbGkk+r>1Q|5(BV6ffrJYIgZlal+5Hn<4q+(MmyFj`YWoonQ27tZL&wgKXXtFH!ZnoDWp=9V$%WWiQICk;lU+KE@M^%2}mI2f<*w)G^9m*YTKnm$Bhc zatlv!J{K;^r{(K0S0nd0*&MlPDfTzf8CaribvNF`gT{Tv*uz?fsh00)j)8WW`EmRG zIewDIt#MM>#4u1MYt*s5Kn=0B`f{Y`*_+Ye2(x!Tr=pGPrU-g#>F?&#OL|NgJ{n;k zB!s8G6x|z;uT1?B@72j3Ycezk&aNja`~$J4u5Kx`8zymzJX#GG6?;_0VdrGcGVE82 zicVbkbxO6vdjg?Piw%fnG~a{w_hN%yBTceu-)q`g5zR*DmYWE!AE$a@)mwv|DibuIi|q5yODSz&rY}T;r$Jr^wo} zd0Jt41pJQmh3jq_y2-XK^>#M*^z`{0XH?C<9J__QmD2*>a|tD^8A?V}Eaa zB|4rfY8+d+ygw1%H!e#0mW#jrwY62eP5=|*71Fa=kMz`Fs4+GS0#&aVxeU%`i>_$n zoq-2mO*>`M+v7bH@MXo@qq04ANsoiFr4%Hi+6WyVX_5GT8AoFtRDV(iC;sr|9`p}X`#L@k4Q0J~(wbGNQ>|@ zE9acgs)gxbj|_e)p7t1D_1-;=ECYMz3y26H}=jY zR=E)?QcBW_)y6(!C_ZZ&sPtJk&1kLfp8XkTq9FX02NqkYt4<<*@DN>?)l!w=we0yJ zv{v%CrIm^o{$v3PIw5OfoxCTGC$3}?n4WLwa_h$ynzG)>XRd?Q+C5e`tp$h@E%cE(nuarRc!~7gW822hAYa3b(^DU| z`WEeeR~0!tdH1LF!|tG8>PM-y08InDsnlZsUs8X_KEa9px$|6E;XkU;KYyTEWocyn zbLY9-rHzAs?(`_qndWCzcEyD<5$n5r3fZEs6y$y3%CmeCwyu$$`qu4fQgkHa2M^8R zo?dfR!~ZS zV#~eu=Tk5c-rGz&bTQZ)`P|fZc1FUF)D6o!-t`;xwE8yf5X04d5!KB~l;{v9{k%FX z>VR-3msm6)Cm6d9bqIed{5bNF_L^F%q#Tg0DQlDBI5)BrD+Pn@?s900)E3<{9sWt$ zC7?emD0^3Z$i8pI*T*4(4d8t@3RA{5rj@mDBt3w+)Uyj!`pTtO`9Afk@g<)-x22a4 zZAb%CJ%8Tv8z4|6&y&aeVzFzt%&>JHb6ZstikKaXC6m^@XY1?l7YTRsPia_bfa3#; zc5vjO?!}}*(2=?yWpKTLrJ(m@On{XpV)KnAA8(EuZ0=T^*GW=fX8-a{s@hiajvK&Y z!iYeC>y&r2LsVy~C>KqJd+yAm)Vj8;A7=kJOjPqPZH_kKm-JgUQv!>)qQ`{&@<~Wf z$$wU{+e~BN;44URb@6*t@)1P?7DsT#p8l!VI9LK*#$(?Ffo`~f4d`tW#BZ3@yc+R-7OVbH_809P=_>~cTm(K zt!f2(e*^~xILu!i#-+4V_n0Q>)$7TQs`Co&OS*|;>yY4VNmK%#gb&{5l`P}^9}m8Z zNZjlh7=cmhVPPQ}?S!q5!i;0TYzFjF=)U;Y;2ZtdNN{U8A4>YkwP=%uWT1sNljWQ| zksbowi|e~7^<57h+0gyim$y~tjb;9!ZimpcpMI>ZMV6u$9TcZWlu=B<_U-Gj;s&0H z5$$7#OmNl%r={FWW7nhNZ%a)OeEcuC*`HdGCAPRJ*_mlFs8x=T53)brO-|gblL?8r zAHF?e+Ialx9@!(DYv{wKXCopUJM`_9ZZJz#V>e;#*gDChkXNO+%p@C}!$+x50Lg&a~>ClAz=xEVHQJ4R4gA zZsCQRyYdAh5vr(x?;%GJ2br&t*0%EE+C)=$*8J1yU-*9#)E@59P#gdG(Bg8Yc$KS5 zJ^vu;cyi1EX76lNnWMrZ8@c{R9Y4Fc;b)JeA{}jHnikoLpo~6Rdnz}{9@>}Pwtfw> zn;T$TjdQfbs%ug@V^JEC;X~isGLJd(Wu7_V-a)31(obAIFM>^5DV%%t3l~?Pl}*7F zM~Vj=k;z(!LRCdABro0SXPmvUiFR=;v9@$sgV~?(PIbaVu1KQ1tQ_|G{3X^J9M)^k zGoO(vy}sRtZ!VS~AP~Hg4q-U1wz1w3P5lhlgYg;^BT!$YqjoHO65&jGBZ!PeQBlkR z(-|WJJR^@=z6}eW#idRGjbhKcS)U?q^L7265?@x#h(Akl2h_kh)TN`;inzWx??Jyy zFnf$$NVO)_mC2Xn_W$5=f?f($v^3_yM_uNXKt47oSx1T7Ee;9Ac7J{q+NrUDnLOyt zxm^$x5z;qTmC{NqOlLgSEfg|3%Yx;a+=}U)y{kDDvUk%9Ii&q$gMs8<8nryS=_BqQ zQ!XkhIcE}$CMZ$lE*gN!hgZ{1`bL~_T?)%OrSly>e?)E$P8I1L&d)zZ!GwB>9HD;G z6}np|eA+N3P-;%rOLQ{$RVWxysTe^*Z9Q4D9+ar#+86 zhdozzO3hXYhr)$a^whmV*cinLuxhL-vJ^}pf@qV z`naS&aoq(wZU9+H2#ynED;rjz9=O4C$+>nt-_`a`30JV?f+5JjIKu9&tv((XErw{( z>K`}2eko^|er1Q8c!pTh;`un|v$4g54m{O-2j_|8>TI=(zHJ_MnwePfY)4nsBZM;t z`PFo#$sGRvX?03}UKT#VlL+KUTH*+<<@XWZIyWA(Pgnot+6YQRj67Hv` zcJh+2tt*n*#Nm_=wfrkvjW`iqnx@36j+^ul;z}8*Oj;tnQpF%kVd-30TcT@AmC1ds zu%A`r(fp^FfhY&G0#Uuh zj?og*WBi!B!s1F$;i3!cdi=$SH~ZsG5WckW-Tjze>}8Dhqs4<5Q&oYBZW;^Exb|RhU>V=Ium#``DcVjw_W&4yaeS+={lBc2##owGv z9(cG|2S4aXRq0;O4D-&Gm5X?LWqx{PT51^ZF{=KWA*@EvztvdQSpMAtqUN1fnrun7 zHQwdyd}u#nlt0mxBV0U9r{=j{K}!ly8|7U{4zwG;eNs!|77D#r<4`I-ozODtH2<~L z_n5J>tk?$U-GNPx5k&6uG&JKbavWy-m^%tSe{*lq@Y;uvSA#A|B>O$fMiE)YkMT9HonULVkG6T(X=uShgEv}Vq^=4wv5o*=+9-vN;&gE>yIOLG`gPD?KmREQ zeii_oBxXYtucB!H{PG(Y>KeS=h%TQ2w-ETbb{_;9ag!$Mu_2t&tAVDzB)PNUn}192 z=Z*j_KR3PRmW`S;t>GuiSvB(4`S`IW&K%i@beBGJMcCT0zlsSty!K=NeNoqmZ2KGF z$E~m!#PL6OCg1;WDfORMQ0szdn7w03ddgjjlQ_4~;i@O)8F_b-3kzL}%0KXDeXrSd zRuqh#JeAK3lYeR}thaQ#({|cZRk2&S{csSD|Ec@>c3lUI06Aw--Bn&{MZRz%RiE$`LnBB!0d#9=F>ObwmiS7gkewLTIPjVIU4|?Vh$JDNKkGebDfCbuhpAWE zfDgAqooQ)4%YR|j+iI&o6|Y_hdTWiOf5b-_gV>716U7ce71RcB44=+ zSCHVZ^pUG==#SUJSe_Hwsy+0mxLh=#Xjav3 zzOjikxWAJd&%sU-yx4jxbvzNKBR17Te*aYYsGSoscVv59s>#Exzx1%o09t;KPiY2< zf|CV>)df=vVS>=`TG49(+;)FLd1P$eK8v{=Vx5#H^*Y5q#rZcw^y zO)~!j4nM1 zd8v0@>%zvKuUm1v>podF$FtNi=LTmt5MHzh2Ft$1`T4S?d}QE+;5q}yN%n1ahO z!lcaN1nGH>VJ8QiT4_x=le7fZ@gW)!78r%L{2-HHVMeM}Q99!$AGe3bV-j3Kzv7t= ziH*2&hz7mj!B^YP5;54HWb<Sx)$N`D@9_uf((Lu{!gEqtfv%A-?1;8psKFP7{8w-Or}Q0ih@a-XC-Z!k{fTwM*f zzWtWzLGz#TUovt{{|KeyG6mHhX8vC8&1$DGCWnV`K2F{l2{p2|6-@1xQ2L;v?vPqx zgjncPFYS;iICLZODPHNlYM6k_?n8=8dCE0Gwi_n-%Ci@>ihs-Lj!Ayy5=TW+u2~Q}5J!YUZB1=0T z_G2+{{#H5K;#01cct_h96O3C$IyhGV`sGWz+|e3gHL15K$!U4{8Vi1l+N6R?AVn4x_L9^Nv%|mjHCL2vp9Z(YxWMHR>#=R z7NK!a(yW9Mk-%}q8}_Jc2h2Zb;v@(1YRX;v5bFJ`GN_+JMK|oB?Q&NO3Nn5ywhT^9 z4p@w5uDu)(yhheWZ_G5muY3AB#YmH5t8=k*1c2=vxjYBrlek5f2`c5L%rP)B59mnZ zrhrVz?7lxxMoiEun8;@LKD~UVgtpkxxS)O0AFSVJU}010b2=i`2SOhbqvDWuP*q|c zG^swHdwvk-gofkKJKnpK>i;I$gN#4-SG=X=O0%UV&NE}ie90DouMN<0 znVAgTvb~87L9ee+KFYmbEaH`C9%DdZWZ^yKA+bxd335Bn*!RG0X6#U<*k)xOx8>~|*O zFq{5ofx;OJE6WkKbrjEF;bE|Y-YmMRJ+SE|)2YHSOGyq2HKUO&#QNw%9*M^i*uFZ} zEKexs`FbRO{2=+;Y~8rAdfo>>r#HuIzUr?u9ZQht_AT8@0@@N2Hce46b+4hyeDi(At+uZ9hjB9qZ>C$ll}CQy@rGUBcytx!UMKxBY;c)FYHhfx zZp`WML2=feEBL83eJ!3!45}A6Re5R`Ca!vm!_v5Y2Sz+K+0hYgjw`VXOPx52 zYm3bG{t^HQ?%p@qisF=mGd)B%-4iu=r@+V^7iz%Ud`qEJz za;Dx++}{?Cr&k0a(auA0M|0e?W2L*SZ52M&maE$ax@*U-?BHCtp;5qy{jGG@jKIcE zAbIy6$pjn5$$)H!!$SnBlkGJIt0Ety<*k#A4HF284|HA2(jz`X+m9bQzkkY2@|bvEOa*`i>MMYmz<&2eVL-ldNFjP*-Hj|#TM_;= zTLnR-V_>cUV0~8`LFjZMEq0pXFA4dC#A9u`dU9jiOPoqsM_49aQa?cS^c3AX08uc! z&nR~JM-s=Jt*w1U?(bLwzmyH^9p6E89e8n!}o+^@ZFGRb^S!3F9 zP>=TQ+2WORvqlJv(!?DyYreWOH(ddhQ%d0Q1lhb^@0$E0*WzF*2b`|L+>XZ5pL0#(0X$rvle7tjc| z%<~AIA`@QJnrLsLTtX7GQ_e}5S^iIayP@Dd!n4I-yS6~<(R3O7nWBxdIqD7fEnqor ztLlusBpgUKl^a;Y#BISh?pGgwx-T5^F_d)@e5#po=Uendb=ZB&y8VZ#Kavf>9W1E6 z+I_0wka=9)_uQ92-bh~4jq$4Nj=fZ@sE#(wNzbZP=Fk~4oKeoGsvB6^4rDtzu7K~1 zR>Qlf&NEMPh!^lYb{Q)aGf5|AwW{IsW%pr6!{E^lpNs!Ov{MQv8Tv#24uJey^!@iI z+pSf83s*JM!qNZ-D@Bwq{V=u#F=4m=c1EXu$2Ho2so;y3 zeo6UomF1y=SQ#Of(H;hV!SSe$oq4vOg%z;g*z3l{GH z|6Z4<8_<2U-<#eK;hB*`-udS99C3(-`<|A!vOnqh2a@+x9QQA-8)&-;W!(DH8DyH_ z6(!tYzcpW}bS};LwP!k-&z6I2r6-@*E zX=;Mw%WJi&_7Y0F9KLK53_HI*zvj_D>A#Hw6wP~V<|l?@#(Mh*)Qch zKHPfjI{w&0VUO9oPnYd&Ust%xO2z8TNl&`Y`E#*3pp3^gtYn-9Bnu~SrKqc1cpYtH zo^*eL9=5#Gf`!Z>Zg?#t+)R|l=n>#Oc9ZEo=(i5FnsC2IrewQEzq3@_cmA`ueQ)@G z7q{bI@uANFNp*Eqd=VHd>794gK6%|RmY5C z{`m7cQ_sejB6;zM_m=%B4-@M9d=rSa9mfubMuP}LYvfaqHUOrg*t7P&T)c~HN>sH1 zx&I!H@tgr=w0#jm^qLp4v$WUdQ=Yp;?gytgYi(!Yo6>U52!r8HkMU5o!&fAUmI6@( zj!I6q(=HPucu|d^tk~%vj)7&&>6{9>QK%+!t0X!TRzA)qOx&*|?(w3?%e+(`Zb#d^ z>mrul4xeI_eUp{&%2cnw5L9CI^P`AQU+o_g=W*s76=ZnGca?svA-lo{pyHglj7~J~ zKJYv!mQ(rR+7t%sg{P(~kcFh*)}(O$Kf@JJbs}cuothP2>vcH|D)Q}{lLtApZwD9& zW&Ua^-c`jtYQ2A`FFXuTUr$zj0TzgpV$MR|ZOQfeb+V4_&?EFOT)PrpR#oGN`zJ&E zB&R<&|G!956WuR&=A+JfXB+ysStyxGebo@=XGDT1)WUqmE1jepEt#CE=#WKlCn9U@ znmiA)2i#bK`zp+2_2}hjq&`?Nj`;s`mAy^Pn)B&$5CFIzCYdm!DXd zDJZ)Aaycei@&t#99WcDAty`)^2g77*-?3g+0<&m0$N6U&Nl&b$zMd-QddyetqsXH` zA1HlIYk2hzahPXn%3AAm^LD?&^!xWt^P+q?A9MQ;@DZk5J=qU~lP#8*Yg&@d_px8* z0I>%_ll+(*C!$Pmf5nX}U^qm2mr@6$g2X^^`nmm?o;z?nKm@E8;r`J#V0C)_5i=uU zOfB$%nDG=KBEO2*VSyVg!=@MRA%`{2%qx+9K?-ciz|$m^`(*KYQ>vuc&UTs{=- z(=XPPB-asME6L__bpRA4T}USbFt?YM-_1C0h(%MnZkf#-#94aR$ieI{V?D>-ftgB| z@12NYL#M%9AU7P5sNGDoEXKDeb-}_M%BP;x9M7)oVy?X2_fcOw%4Wh=q?o6UfvU7bI$Dk{f-D}ke6ylps?A8HCOrl4#9Rv6Wv!aF&B0^L z^7zXUun1a7j;@ys$t{iud#7Kaz<`_JbXul*%kwo7h^_4G zFa$FDejc&IHy30#bZIzgw(QozqmEMGjV6IP+nA0-RMP)K$0;&=5veu|nxq9$&0~|; zOTgcULJW^FBpO|T#o@lO62%Jl#Zm?2-yllBD~(vGL9iir-@JKTVg+t)4%lKt1CPz; zr4p2x)7!=>NZJ^EsGnQS-6VtT9k? zcnLQO&wdO{nVSW3KRuO3%zEJw{8_GgT2`J{^jt3%;nYChB4d`O;pKGMw6Dj4E$=BI zk~9U{u-ln;r*Qvleopv!cd3cukH>lb+*`&QjK3OVpF{jQ40$BN;od4tD&1vUhYPG% zTQn@X|FltbHosePm);=Z0abY|D-s%QN@o`)gvltUBu#}K64|+8d!^+#lYaORi9q9vP+;D2>!geyKU*4Q zJT6METw8bU5->#mSSX>D)WIT>jpBN>=TYSyz??c1AgiXR0y4x^3a(^1>CiodvHc?6 z;ipMaAaSQcpCWDjZmQTyuK(Tm9A8HNfW1$v#DX=rIUd{n=m3@q6A?xVL0w%#7qB`hv>2mZ=F;#j{5lC!~_hZRGD+oB8|}gZMpT z@28fYxxgcoaPLUcu&^@tE94GZak0R!Kz!vJUOFnXepTU#E({{WJurK%fMf!QZ#t)y z>`kT*?vou~m&Jq=gxY18ae( zhL({odjj9e*gXkPt4+_GJ79O2RSY8i!tZka z-W~`RIb7pR@$F)%o3WiN%nkq0`2T-pGNc!!X*lqIL*( z7y>ZO1ck_+RUb1>6!P(PbknfH%8kQvg1_L`VvUx=TngZl@*-^aLcNSr9dVfLRAFZX z?JZL<`Ts{8DNXCVKb95N00$elrbcmO5(1_C<1Q3Lj2=5%;m?xvj}WQ!lhLC$OKY$I z7{vMef2LJsrlY+t+Zw42QYA#kbh?N!&x8o*Nq3*QTX$u0cq)MBBMT`7DT1e`Eslj< zrD93r&_YwBr4<|3A?T<@Yr5j#4HGo2Ra-gg^2loD$=QNZZW}1B_=P_>THMcz@fre_ z{zatrcp}y2$8_6H=gXvhh<;=Cn@TQ3wv5hl1*?S2Tk?;^eVex2i@YnA4mj`(3M-?p z=mPwUO^~t0>-8xKC`iR=Mc+b1aO#0NBsNL=%b2v9J_u_xw&Si620BBJS-J%OXkHE2 zNyM+EimBm^ycbYB7ZqH`<(6uNsS)6Ikr~mt2gZ5WS2j!n+4&m6X+)Za>G*w-Hq7o_ z04tDim%iM(Z_zX;e)^|K%V;Qq+T4X$pg;olw$bsqRdo8wF{&%i=$?SBgrAEd7U(lgK`8!m&C@|XXN^+7obdd&l+_YU4(c`haq(Mo=XP}dJ zRq`r8g#2*lLhuvQ7s0y7b_elE;ULe@T)DUM4$Yz2jcW9~M5VpLq#AY)yt1s)j?ViY2w7 z3ZT%t!K2Dxv6~g+s?;XE78Ak$=pPwZMYx8^%-bCsI-i6!*wE_NY|@#5+4fkfZ|*cZ zozZ$!%$H~SOU6N3n$>ueMkO_ajdh{92QnCSPGFg5EX(Epje1)?u1_k1rNMHN7ZWF< zJDKW9PTAQ5HE#;7NFJjp!?WBBt^=kXpxM#dm*` zKZ3P3D03kGqq%JGsMwP~4l{u&TJ^AU^<&Q!%G-6XO* zD~AH}Zl{3t(FvWd3Rs@3mEJp{?A-PLM>$9OtsEm)#@>Uh%JH^``TuQb^?8)i`wVH8MW=gTe_Bo3TMReqe0 z>!I&P5v(E>wrfz>WfBNDQd4);U69My67ElRHO-^kY=}igTrzeOdgv68#$L4KJR`Xc zY>ahP?3#1i=quj@D4Bz2+N0Us+MlUbswG8SkkD1_`!y%WZD*;tdOK;(7@B(_pYu4J zT)BgO=QY^0^`LfO&~L}x1cvxjo(GE@c9;cu(N6LK8t$RrjP6dWM+engC_KPZ?X~qC zb&|HR<+niFb=;PU_2Tw9(I6SlpC#s}HP~>8WGji**P6*i4voTpi4LBj`Sb_aHAZw; zs%k;EKe-M4PKZVmcPQ&sE>o{|mpVveEtkYVJJ~;OJ=b1{H1J)!J{?CA8DF(G?ugX3 z+Z37=!9*HAZjonvGATknZNDRqX4hnKCF7XcaT4=ILk^YsCK#3;x6*C56)RO>kCkQsJ3%&pf= zyjhSJmTYmlp(Qh`Hm$UoZ;@a(=zH}U_X!v7URS5HJ`VBT5CZA0DOT7ujGd*zl~iOv z>bNwr&Q0yX+Hah5Zu;Ar{*+p~Vir3nlK|n@mtXqbJmtHs8`KWD{Sxp%iL3$?_tZA*s$ipB7dto<2}b8Ws>sQ3bh?fdsW!BdSi8a zsh&2`D6qD>8uM8APd-$`A;QwwFBi|d6rV=iJkdh@_7^qd&t3OHmpe^Tj@l6Rg82#H z=Dp)yPfX*d4sFp~2(9u+dXx{lJj;B&GlbE;z~@3*Uo%p1Rrc$sb#L`v!UGDeoapL0 zlyGo82FT7pnYLPwwQ?SiA55usDtkb)AE}VD2lx>#oA7|}&0xtznc7|zk^j&3s+7%3 ziv527qV(J+3w|p-`L{jopMP3MTC5^gg%phO$1HE7#A+77P_KTAD%7gQf0wBPq2 zzw0XQI{D`lzj$#nwOerI{mf@_n2eZA%o~<9NLeDSiy}j}!%(Ttb;VBu*7IM)%w;<|eh>^~$Y`Ol7B4h0#y_x9=q?}go*X+pgy6XnPq}(Ve z>}Rr9eM@J$V%m=8Pncl$q9W6!r3r?njr{%f(&xm#v|+U}w_YFDehf0EK3|`hm|ls8 zWHoWWB*GyrJH4YK#sg)AA9=(rEP*T}Kj;C(g2N*{+qFdFN$Af~(1}$&nYjjBNNst9 z;$PPNDfZ_I@CVXU>)go%oQ0tBmE2P)1_QXd1+{VEjE;8_V$;FT)@&5I9EO6Qrj&v{ z2BHvG&Wc5iQ8dOoHvd}I+<+hfu1w!I5Rgw86&ZRxT3SxfbemuwAq4lJdfQh%IYGoS z+?ws7L#>7)v_cB_q7trc2jO=+*RN*<*SX+xs{Im#$`L$n^j9RI+r?|}IMB;-+xuPDCI0cL!)CwxYQ6a; za+zX~D6^uFERq zxx))sr=T!grEoOhmEN(9KR~zRN&Bk~be#csoC4^9k&$#rAbC+|#0L7_Kx(HEwdE@S z6@^eVe?VVx%91VV>fB|W$^PAF^Sjw5T|#W452%ep44PN{m;_FI)YnZEp! z9_12!DE2;l`Fc)qf%rOszcN-Sr)4**CE->h2mnhSn_%-Nou4ZHOe?_>w^+B|rIli< zki;xmwvNIk3V`OvIDLpLjM|Ll0h+OTlI7~(m-q8RTPwL-)r|A2vK>DdYK#o~A5F=p z22D^qRa8}bSb@^{PCl@=M-FH}D`fk^%8mT&NF*~<9_Fsd-H!I;w{ACSwhh>@sR^YH zOjj!6wWmVX#xy~@kE-lhPv&ojGdnc%lVZ7>J%$KqWL5oZsrT=P5+>JnldY#L)pdUd zN0E5P{Smg>x4`+wjRVuD7C0SLJ+F5MXyMk@)tI4BIET-I=IY0M2w1&SgWnZf&SMUZLaz5w*^LkR2cY{kUdT#qx(6mQfVwlXY zjgwtq9{X+>$iESMWTw)Gm*-QLO58ixk>{o|7G133&PhswR%#J4@>yS>i>}4+{5t=c z<3|ZKXtCyBf7i=>>occ>)_(hxQ1h)b-p>7Br8Rf&T6)t`cj7w;fj$vB4QT3{l9?dM zU%iHUqXrcc0x>K$UC|4_xIzGM-%Ue65c#ke&`0$!rr+SqdE2TWe*EWWvG*`Pm28e> z1;J}DA-o}31qq>M7W1N7Kh6GTnMbL(SpKHm)Wuw%>;c|&f+pss9=W*S(SE6F3Y%(;NRYbr!GZ@k@)v#=0= zMnuShZtQK#uLg>|R_|Rf(^M?#oH5)cOkx9UmcU+t{i>qG?k3B2zjOttR+X7ckZ-x& z#Dv&W(MYwK0E(cn&CaK#=h5P_R>S0bQ8KW-zif0yCX}zWRA~LjQ0M=~^CpP!arXL= zo~X#qoI*0Ycvld0Hsg-q3#xJQc3Z`7W}DyJCk|A#nw1yVfdr^5lC(eQ!lw6@n&wUy zo?S+ye*k?@yY2ITNnrKgtOSf1lA63o-&n_S47!H{D|?<%)Q-yUUHZY0_1M5YWAg2I zsL7hq5}16_3#^Em`aR)I4bR7JkI@A#qYTmjtZswo@P%Ca$3_+^1j=A z+74hW3B?hRt%eYK&LNI%Hx=bOt;aiZb|*w3VNY&2jG*;ucVacHYVrGAv{Q=p#;k7r z%FJid>C{zyii!8Hvo6e}QU>SHl1iGI0y+OV>ruBp`Mjat?M$`NtZK*#Mn-UBt~93= zX#yI?d~JlJxa&dyxhWgFp6-?f&@gnw6nOks>5J!sI|~7h{R)ZRft?i^CS+DviOi2n zVI~HYoEhU0#2N$ba-*<{D~2Ru6cj7CC)vjz<`!avvpRU@CM0Fn|ydB1`e-NMpYdqci)*Ge2Jy(kG@eTXT56r zI6XJra|VzAiLKAFUsyB$9*fWAcN;P;ADM33Z~jV1=AqdZaJg3V;TR{RiZa9&ysywI zRQ@eqeW7mnw>`e-X05;ndJ$m;x!2cXv@+az0kcKG1|`Zo^m(GZ+kNJYut{}WY+|Mm zrDnly-uI?G5?o#vH#o%Mm?|h zZ~s|~|81uK1lK;m4uHOK#X$0ewVYlsA-S-3m+gL36ZKLDCY+f<-E>LL4tfr7a3O;i zu%DXqar{|*%WR+~sYr=ZS#qJ-7~a?8NIGn#^5*#pwN6UdEU#6-ez@kjVE@I9?{FG4 zLWn#p^VCDToMJv~*wbhlJ+vNz3q21X4rSnfYK!=JE9ey9o2in!wz3<+kkzWc(@{FZqpguPb`h;2#i<z?wIYwt~I zaW?|+Rr9iy4^yY_B0TvJ@tZxMMeJZh!Cl~jgZCK4_Gj-rT9Ui)UGCHLxX=bpYTbQk zB9Lig6%jV#wP)q1XvSH+i76q;H+QU=9i@)m0+~RBbo2b4Jl(EB)(ObW3&2DMa9A3V44ut3J z6L;8rHVh1?>DaFpd50PDKPqSCAg{eET`elWGvHRo#^6=`4&#*XOy(;m0GdP$M+59@uOw*IZb_bmE3_=mf$ zw)`ai3~NBRpKN7wIjDlU+PaTZUk3jbEcMT88=Rb&cQNLu;9q}a-S<#3w5$pNnr>pE z&$xj`vc;T(Vo7#aH}q6~!%`lT6tR?1A+A3fyo!TA?jP-4nI`m#&e@rhdz9{xx{=h# z7=gp(T6rnv#2t$=)Tea%)bIqY^C|iNtpayBy|2KFAW@J(AY4!XqPaVl zyjBAqc^N}!T@sZ}T6o;E{e5)7G` z--0NNg0;3m5G4TdA#`w4lo}7MRl$B3aG#G_t4gD_o4<{PFS5e!IT}zemO%<$fGhk2 zfUnX|B3GPa_+M4E6jfC>fiC?&s(PUSp%o8;hKLO-0zm@!wE^VQk{6S(Y6(?WsAjqE z1gJATh~*<6^Y^{-8^niky8>#H7#S0Dod&3geBQze8iI=DiO5nIFhR8yX|csC7HV7=iYGr7-f>l z5Poc|Bi)gg`E+5cy<@eim4!JOBHLR0 zH&Q5Cd}+^8zJ1B%GF`s9Qb??Tj7&p0L?Jh7>|&qnUYDLdCk-VtSa5_7DmlUvKvrU2 zG=9+k(U9FQHNtG3tYe$mfrN&!xI{XI?SnLOT+MMJ){}A(y6p*9+Pn!rGarW5ly}LXmR;B^X5NEX!pk3#SYxh^OF~Xk)rhjNx%5A%AMjU6TQdSwU z8LEIWwcBe?H~-s?&nOf4W5Oj5|zha(#Po%Wb{GO9$b~g z*ecElVLS`snrimTV%9jSVT9)CZT~^YCk|t~dxAx6#*!x8Z=SV*d@aOO0MDH(vFB;( zzrA!oE%qPR5Rj#ARDsCl{v*Jvuwu;wX1pcnY}pb7X_?RH;hHn|meX-!_b2X-o_DN1 zI3~$rQE&aQy)@n)4f0x99wvvgJKDEQMxDs3wfkZ93Lnr{o}txX@D;DWjh~~7q1bD_ zX@CfZ%L_S-L->chnL#k~DF|kEzHG*OJlxo1y=eNNw(k>k>=9ru0`|~Ld9vk00xl-; zoCD*Uqjm}Tnj3LYV9Rq<8urz%IQXe5g0>$0;s9Cyrh%|a0q)CrasqZvtudDzfCjKm zS1ZfRE@A32&uB0`N7zEt&y_EC>W`qy1N#sAFf`zk*mZ`gjb&?X)b96rVe))uyIxN4 zKbR{47a)+ZQ{~2%_X{`3U_k4kS^d!Cqy~5KMHxGfdoq6DJzdg~K~rM$95G%ZLzU+$ z%5M-Yb50nQBm*PfobZ{Zp`bT7UGpgFJSC&Yoj&8<_+7d>d4qK2ke)g3WWN8?+Iv7X znQmd*%%Eb&j(~uQilP)LQbMtUpn!A%DN2)$0ztqK5fzmt(z^<#QLKUTj z5D*9@K)(G3EOXBJ&-%Z!zN|Gf%!~<1-tz3{-uHd&l0L)53C?<#k?E8!HIaYXjUeyt0>v8M$)+Sen??%{rv(HD+an$uIVm}6VCjDT1R@EhJWld{i-7QUMbc7<`p@5vgzW@^;eME(;M!g*437=3a)2 z-Ll!;;p_DYMIMuVSl9UnN;8siF41kXm={=-4q2CPE*j!VhKzJ^?y2t)9D~jH zJEzIR?SzVlTR@2kV3AJRb!y~zTFQd5@R;sOY%0kALGAysXaocXQZznewFjRm(t#iC z9gDGkcp&)Hbm$Yvu#2%NzwdXVHeH>-WDlH?h0M!8?D>B&Z^$ZE6DeB%_)pt)`jDPm4co^;*RW5c&trbxgbuZuPo*N}?%y z`%H=|4hb7ygW^5BDzme*Gh7kh2$F6Lb7Zq01oBUW5}Yp%cbh0)p!AL4vkc_! zgZ&-siQN}M|HvBYY19$J<@3`v1KI0!zv1b6t3_F#Flr+b0lFa|5aD%-%`U*Q<9Jj5 zaqYRBimhJhRF||ZtZiNI|7^kEsYxEawi+<1D9kneSyoPq+n}I`>f#Q;-ztvpWTzia z%4wXg8o{5f4i%HstIO>&V|7Wf_(phR-+~_E!sofropk}*K%i4v2rl?ST6UR6%QGN1 z-N(Y6rfy`K{J8l|>MUI8jaRf!m$qmND!jkgXP7EACg9Skyuamg$#{<`!^K|ghKbXL zJ$cBtOviia59j4jwdo6yw!poo_+?MY1m+l;JO}Twz5QHD?p(P1R_xCEkf@aBMp#UF z(ut6X5)hOL+Ad_|yDmkdC=HBf!sox#%RCc%(-M_vnNrUTiFb;5 z%|Km)9QLT!br(zH&yO5#sd;MSgL^XAv*;z_KD5S$4`k~qaSz&ai)yKUf1&&eKFQGW zu8tO~wdQ<`%@uLEkDn%gC=dp`7adT_Nc*0v%~mj{SOBU_t@w#Oyi+nG+E&#pPA+4m zX=TLKHoa3RCXd`<;dtoJ)Q~ZQq`*<*y3wgyxox8O4hvn`yS-CCN_cDDW`pXj1Vxa* z#9k;n#1j(U=n|tpvGcc#vO~iH#~7P%i|MajI;}Z+FTw4}L+MQdJY3HUgQdM-!%TD{ zYt3tm`^`lQY8O~2I+}O8(7x!@8yrYTuwE%qc{_TCPRw7GGD~9THY5oajj#qXsSgEu zIQ|fCL3#C^hzludnHmz73yQpL_Wu&&nW990)InkiK?5{@E zOU8ZpF_?XPx^Cbnw8#C9%W~Xuo6GMpBv&u|t0y4TZv>e8S ztrm(&D8CPxR9z8qPO)g&*pbSPGtBWlE|~}4j*$^on_ek`5(hncg~X|6>!?{M}yLpi0xC*gq z*FIU|aD+5A>WOBHRW^17&tt5SVrbS&R?&RPh-=g1)%~iJ7)YX+#NP*B=~eUBc;yhx zO9Xom<6aq_d&ilA1ZYdSL8olwHz>TQ0)m};t5VI;>ItlsFeDs#ZSv8aXpHQ zlbC^oVyE~It@MW5JQ>0!Zq?-S>wyE~*;hrKeNl(@;AmD(J7paUZZ5|^ zgHeFmQ=Tj5?2|UQV`p{gE;UX#unuOXa>Q4sggW+&bfd-7hkF@0+${AuFJ!%cQ)4nN zeD7h))b)r2*2=$cu10bQ1yCP0gJF|U0zW9j4@GC8Py|Grdb`WdAMD_VH$VRig0Vuo zA$Eaw;l$*!h^^PCC7z%v!^-!8IFOoJgS$E}r4O6in?`?YQ3%(Qbi1*LhdZvuK2x1m zm20lW+dc1b{XK2bh%t6J@9gQ4w{mamV9MyNk~wgA%D;Y>c^g<#Gx8@)kMx6j7!*-{ zVFrDpAg5Zpn?opWV1KI~ew0%xwzzcbCWDe+;%4&S6p8c>g0j(z2E^YX9BI}xp5t=s zj#SJ3^<%lRc9^irh-{lw{Hm~tYKRETahwR0yzyfwC=UWfp9@uJy5v>Ued9;6GE0l? zPOg}yx|+6&=neVX^*S-Dy1gu zv_5~0__k7Zx~9iS`-P|Cj-#zS>{!^6`B#=&-pV{JY@a)|$lfv+`Tf4hw^v8-U4~X7 zA}>v6@7cel z$-O{@!7Kx`Cvw61g*>I|=d~~fxtQ!zXuR1|Ep2jnnqq9Ei zlsO7{GqlIzZ?33(7m6_mD5qR-RD=+m6atUA2nqMB^J<{+GH1eXPc$_db6=q%nmY$l~+)T|sbY?CnR^X;{LZ zuN@+oW7^QR+a>?jRNR`@JVoB>S!vJ?e=&OK4`|T6jf<&_ctS2~ZZR*;M6U&7MAOPB z8hDDr(I;garS`6VNDv-Xeg{*lwPz)*jU&9IwdW+cQ5IF9+T%ymXHqJ6!2;CBxUHrR z`pEoCD$w%ZtPuC>W91t$ZAFMyw^MSy;Is9>e)6XG*oC8sb!k6_A_MA9*lFB#m;9+J za{v6j}m;Thr3B5uO0FzgJ|Hhz7Nw zEN97KLmL>g@1?za{>|j0S8Hu)LN&563X#vJI`*cihE_WJWasS(aXtk*Cs&pBq;MIh z8T8NhLN_z^Pm{|Ztlp=)_T3-F{MNtevJd_d8v_v9uNV2>wl%+=j!+e9ft$2SOgqN_ z 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 literal 0 HcmV?d00001 diff --git a/task-3/screenshots/git.png b/task-3/screenshots/git.png new file mode 100644 index 0000000000000000000000000000000000000000..f26c8acdcef0a58834fdd3a2fba2d70608d41f99 GIT binary patch literal 6391 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 Oh>Lngy7+T9AN?JuT4J;S literal 0 HcmV?d00001 From a8f0522cb47287aafa38e5ef40cc0d9ea8e84b95 Mon Sep 17 00:00:00 2001 From: Mohamad Bader almsaddi alzin Date: Thu, 30 Jul 2026 15:46:16 +0200 Subject: [PATCH 07/10] added task 3 md --- task-3/SCHEDULING.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/task-3/SCHEDULING.md b/task-3/SCHEDULING.md index 2780686..de55d9c 100644 --- a/task-3/SCHEDULING.md +++ b/task-3/SCHEDULING.md @@ -2,7 +2,7 @@ ## Databricks Job Run URL -Paste the URL of your successful Job run from the Databricks UI address bar: +Paste the URL of your successful Job run from the Databricks UI address bar: https://adb-7405619530719547.7.azuredatabricks.net/jobs/282713845764221?o=7405619530719547 `___` @@ -18,6 +18,7 @@ Ensure the following screenshot files exist in `task-3/screenshots/`: ### When would you choose Databricks Jobs versus Apache Airflow for pipeline orchestration? -Write two to three sentences comparing Databricks Jobs and Apache Airflow in your own words: +Write two to three sentences comparing Databricks Jobs and Apache Airflow in your own words: in databricks u find everything in its own catagory with a very well made UI except for monitoring, seeing all the jobs clearly in one UI with whats failed and what succeeded in airflow looks simplest on the eyes +databricks on the otherhand even tho more userfriendly and has more advantages (notebooks) unless u need them airflow is simpler to monitor if thats the only goal `___` From 533aa58616631c81e22be55da383498c18fcf8de Mon Sep 17 00:00:00 2001 From: Mohamad Bader almsaddi alzin Date: Thu, 30 Jul 2026 15:46:26 +0200 Subject: [PATCH 08/10] added AI assist --- AI_ASSIST.md | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/AI_ASSIST.md b/AI_ASSIST.md index b134b96..81d7bf9 100644 --- a/AI_ASSIST.md +++ b/AI_ASSIST.md @@ -4,13 +4,33 @@ Record at least one point where you used an AI coding assistant (ChatGPT, Claude ## Interaction 1 -- **Tool used:** (e.g. ChatGPT / Cursor / Claude) -- **Task / Problem:** (e.g. debugging dbt connection profile / writing PySpark join / configuring Job trigger) +- **Tool used:** (gemeni flash-lite) +- **Task / Problem:** debugging dbt connection profile - **Prompt sent:** - > `___` + > ERROR:databricks.sql.backend.thrift_backend:ThriftBackend.attempt_request: Exception: + +10:19:34 Databricks adapter: Connection(session-id=Unknown) - Exception while trying to create connection: Error during request to server. + +Error properties: attempt=1/30, bounded-retry-delay=None, elapsed-seconds=0.07423233985900879/900.0, error-message=, http-code=404, method=OpenSession, no-retry-reason=non-retryable error, original-exception=, query-id=None, session-id=None + +10:19:34 Connection test: [ERROR] + + +10:19:34 1 check failed: + +10:19:34 dbt was unable to connect to the specified database. + +The database returned the following error: + + + >Database Error + + Database Error + + Error during request to server. - **Output provided by AI:** - > `___` + > An HTTP 404 (OpenSession not found) error during a dbt debug connection test means that the Databricks SQL driver successfully reached your server hostname, but the specific HTTP Path (http_path) pointing to your SQL Warehouse or cluster is invalid, mistyped, or pointing to a resource that no longer exists.How to Fix ItCheck your profiles.yml file (usually located in ~/.dbt/profiles.yml) and inspect the host and http_path settings. 1. Check for Common Syntax Errors in profiles.ymlNo https:// in the host: The host field should just be the domain name.❌ Incorrect: host: [https://adb-123456789.12.azuredatabricks.net](https://adb-123456789.12.azuredatabricks.net)✔️ Correct: host: adb-123456789.12.azuredatabricks.netMissing Leading Slash (/) in HTTP Path: The http_path must always begin with a forward slash. ❌ Incorrect: http_path: sql/protocolv1/o/...✔️ Correct: http_path: /sql/protocolv1/o/...2. Re-copy the HTTP Path from DatabricksIt is very easy to accidentally miss a character or copy an old cluster path that has been terminated.Log into your Databricks Workspace.Go to SQL Warehouses and click on the warehouse you want to use.Go to the Connection Details tab. Copy the HTTP Path fresh and paste it directly into your profiles.yml.3. Verify the SQL Warehouse is RunningIf the SQL Warehouse is currently Stopped, the connection will fail. Make sure the warehouse status is running/started in the Databricks UI before executing dbt debug. - **What I kept, changed, or rejected, and why:** - > `___` + > after some back and forth it was a naming mistake inside the sql schema not the actual env schema changed it and everything worked *(Ensure no personal passwords, Databricks tokens, or unapproved credentials are included in prompts or logged outputs.)* From 32d4ba983886690772ae0e11f0fe54fc870aa67d Mon Sep 17 00:00:00 2001 From: Mohamad Bader almsaddi alzin Date: Thu, 30 Jul 2026 15:56:53 +0200 Subject: [PATCH 09/10] edited url to specifec run --- task-3/SCHEDULING.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/task-3/SCHEDULING.md b/task-3/SCHEDULING.md index de55d9c..fd9f2fc 100644 --- a/task-3/SCHEDULING.md +++ b/task-3/SCHEDULING.md @@ -2,8 +2,7 @@ ## Databricks Job Run URL -Paste the URL of your successful Job run from the Databricks UI address bar: https://adb-7405619530719547.7.azuredatabricks.net/jobs/282713845764221?o=7405619530719547 - +Paste the URL of your successful Job run from the Databricks UI address bar: https://adb-7405619530719547.7.azuredatabricks.net/jobs/282713845764221/runs/984569826693564?o=7405619530719547 `___` ## Screenshots From 3fdae0834148c140f93b321380a2d848ce67a92d Mon Sep 17 00:00:00 2001 From: Mohamad Bader almsaddi alzin Date: Thu, 30 Jul 2026 15:57:01 +0200 Subject: [PATCH 10/10] added notebook --- task-1/pyspark_exploration.ipynb | 100 +++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 task-1/pyspark_exploration.ipynb diff --git a/task-1/pyspark_exploration.ipynb b/task-1/pyspark_exploration.ipynb new file mode 100644 index 0000000..d8454e9 --- /dev/null +++ b/task-1/pyspark_exploration.ipynb @@ -0,0 +1,100 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": {}, + "finishTime": 1785326358620, + "inputWidgets": {}, + "nuid": "ff04faac-5cf0-4fe7-bfcd-6abc9f8f2a16", + "showTitle": false, + "startTime": 1785326358084, + "submitTime": 1785326357672, + "tableResultSettingsMap": {}, + "title": "" + } + }, + "outputs": [], + "source": [ + "from pyspark.sql import functions as F\n", + "\n", + "trips = spark.read.table(\"hyf.nyc_yellow.raw_trips\")\n", + "zones = spark.read.table(\"hyf.nyc_yellow.raw_zones\").select(\n", + " \"location_id\",\n", + " \"borough\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "application/vnd.databricks.v1+cell": { + "cellMetadata": { + "byteLimit": 2048000, + "rowLimit": 10000 + }, + "finishTime": 1785327406693, + "inputWidgets": {}, + "nuid": "78a135c8-e36c-4292-babd-f6d97f97cd5c", + "showTitle": false, + "startTime": 1785327404237, + "submitTime": 1785327403902, + "tableResultSettingsMap": {}, + "title": "" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "output_type": "stream", + "text": [ + "+---------+----------+\n| borough|trip_count|\n+---------+----------+\n|Manhattan| 112028489|\n+---------+----------+\nonly showing top 1 row\n" + ] + } + ], + "source": [ + "borough_counts = (\n", + " trips\n", + " .join(zones, trips.pickup_location_id == zones.location_id)\n", + " .groupBy(\"borough\")\n", + " .agg(F.count(\"*\").alias(\"trip_count\"))\n", + " .orderBy(F.col(\"trip_count\").desc())\n", + ")\n", + "\n", + "borough_counts.show(1)" + ] + } + ], + "metadata": { + "application/vnd.databricks.v1+notebook": { + "computePreferences": null, + "dashboards": [], + "environmentMetadata": { + "base_environment": "", + "environment_version": "5" + }, + "inputWidgetPreferences": null, + "language": "python", + "notebookMetadata": { + "mostRecentlyExecutedCommandWithImplicitDF": { + "commandId": -1, + "dataframes": [ + "_sqldf" + ] + }, + "pythonIndentUnit": 4 + }, + "notebookName": "New Notebook 2026-07-29 13:54:03", + "widgets": {} + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file