From 5607297ed187a99f862d8db54af93907a7c237c7 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Sun, 5 Mar 2023 05:25:35 +0000 Subject: [PATCH 01/28] Rename notebook --- ...ke Features (1).sql => 1.3 - Advanced Delta Lake Features.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 1- Databricks Lakehouse Platform/{1.3 - Advanced Delta Lake Features (1).sql => 1.3 - Advanced Delta Lake Features.sql} (100%) diff --git a/1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features (1).sql b/1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features.sql similarity index 100% rename from 1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features (1).sql rename to 1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features.sql From 4eef1e46c97c9223e18297ddaf21412c945da49c Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Sun, 16 Jul 2023 22:33:13 +0000 Subject: [PATCH 02/28] Move transformations code --- .../2.3 - Advanced Transformations.sql | 35 +------------------ 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/2- ELT with Spark SQL and Python/2.3 - Advanced Transformations.sql b/2- ELT with Spark SQL and Python/2.3 - Advanced Transformations.sql index 27a0baa..e1e0c69 100644 --- a/2- ELT with Spark SQL and Python/2.3 - Advanced Transformations.sql +++ b/2- ELT with Spark SQL and Python/2.3 - Advanced Transformations.sql @@ -1,6 +1,6 @@ -- Databricks notebook source -- MAGIC %md-sandbox --- MAGIC +-- MAGIC -- MAGIC
-- MAGIC Databricks Learning -- MAGIC
@@ -135,36 +135,3 @@ SELECT * FROM ( ); SELECT * FROM transactions - --- COMMAND ---------- - -SELECT - order_id, - books, - FILTER (books, i -> i.quantity >= 2) AS many_books -FROM orders - --- COMMAND ---------- - -SELECT order_id, many_books -FROM ( - SELECT - order_id, - FILTER (books, i -> i.quantity >= 2) AS many_books - FROM orders) -WHERE size(many_books) > 0; - --- COMMAND ---------- - -SELECT - order_id, - books, - TRANSFORM ( - books, - k -> CAST(k.subtotal * 0.8 AS INT) - ) AS subtotal_after_discount -FROM orders; - --- COMMAND ---------- - - From cc0b6147a5c79b0eb1890aaac5884db924176421 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Mon, 11 Sep 2023 23:27:46 +0000 Subject: [PATCH 03/28] Add images folder --- Includes/images/bookstore_schema.png | Bin 0 -> 65169 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Includes/images/bookstore_schema.png diff --git a/Includes/images/bookstore_schema.png b/Includes/images/bookstore_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..47c66c70023b47c40fb7488f33b75f6cf0df7598 GIT binary patch literal 65169 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±{gO9h}D7LvJ+Dk<{CH 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 literal 0 HcmV?d00001 From 346f0df597d0bfac360530b2852ed2ff5fc4e7c3 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Mon, 11 Sep 2023 23:32:13 +0000 Subject: [PATCH 04/28] Update images links --- .../1.1 - Notebook Basics.py | 18 +++++++-------- .../2.1 - Querying Files.sql | 4 ++-- .../2.2 - Writing to Tables.sql | 4 ++-- .../2.3 - Advanced Transformations.sql | 2 +- ... - Higher Order Functions and SQL UDFs.sql | 4 ++-- .../3.1 - Structured Streaming.py | 4 ++-- .../3.2 - Auto Loader.py | 4 ++-- .../3.3 - Multi-Hop Architecture.py | 4 ++-- .../4.1 - Delta Live Tables.sql | 22 +++++++++---------- 9 files changed, 33 insertions(+), 33 deletions(-) diff --git a/1- Databricks Lakehouse Platform/1.1 - Notebook Basics.py b/1- Databricks Lakehouse Platform/1.1 - Notebook Basics.py index 65c4d54..dc19c61 100644 --- a/1- Databricks Lakehouse Platform/1.1 - Notebook Basics.py +++ b/1- Databricks Lakehouse Platform/1.1 - Notebook Basics.py @@ -12,31 +12,31 @@ # MAGIC # Title 1 # MAGIC ## Title 2 # MAGIC ### Title 3 -# MAGIC +# MAGIC # MAGIC text with a **bold** and *italicized* in it. -# MAGIC +# MAGIC # MAGIC Ordered list # MAGIC 1. first # MAGIC 1. second # MAGIC 1. third -# MAGIC +# MAGIC # MAGIC Unordered list # MAGIC * coffee # MAGIC * tea -# MAGIC * tea -# MAGIC -# MAGIC +# MAGIC * milk +# MAGIC +# MAGIC # MAGIC Images: # MAGIC ![Associate-badge](https://www.databricks.com/wp-content/uploads/2022/04/associate-badge-eng.svg) -# MAGIC +# MAGIC # MAGIC And of course, tables: -# MAGIC +# MAGIC # MAGIC | user_id | user_name | # MAGIC |---------|-----------| # MAGIC | 1 | Adam | # MAGIC | 2 | Sarah | # MAGIC | 3 | John | -# MAGIC +# MAGIC # MAGIC Links (or Embedded HTML): Managing Notebooks documentation # COMMAND ---------- diff --git a/2- ELT with Spark SQL and Python/2.1 - Querying Files.sql b/2- ELT with Spark SQL and Python/2.1 - Querying Files.sql index 7d26b9d..f5267ec 100644 --- a/2- ELT with Spark SQL and Python/2.1 - Querying Files.sql +++ b/2- ELT with Spark SQL and Python/2.1 - Querying Files.sql @@ -1,8 +1,8 @@ -- Databricks notebook source -- MAGIC %md-sandbox --- MAGIC +-- MAGIC -- MAGIC
--- MAGIC Databricks Learning +-- MAGIC Databricks Learning -- MAGIC
-- COMMAND ---------- diff --git a/2- ELT with Spark SQL and Python/2.2 - Writing to Tables.sql b/2- ELT with Spark SQL and Python/2.2 - Writing to Tables.sql index 91f3a23..c55ff4a 100644 --- a/2- ELT with Spark SQL and Python/2.2 - Writing to Tables.sql +++ b/2- ELT with Spark SQL and Python/2.2 - Writing to Tables.sql @@ -1,8 +1,8 @@ -- Databricks notebook source -- MAGIC %md-sandbox --- MAGIC +-- MAGIC -- MAGIC
--- MAGIC Databricks Learning +-- MAGIC Databricks Learning -- MAGIC
-- COMMAND ---------- diff --git a/2- ELT with Spark SQL and Python/2.3 - Advanced Transformations.sql b/2- ELT with Spark SQL and Python/2.3 - Advanced Transformations.sql index e1e0c69..483500a 100644 --- a/2- ELT with Spark SQL and Python/2.3 - Advanced Transformations.sql +++ b/2- ELT with Spark SQL and Python/2.3 - Advanced Transformations.sql @@ -2,7 +2,7 @@ -- MAGIC %md-sandbox -- MAGIC -- MAGIC
--- MAGIC Databricks Learning +-- MAGIC Databricks Learning -- MAGIC
-- COMMAND ---------- diff --git a/2- ELT with Spark SQL and Python/2.4 - Higher Order Functions and SQL UDFs.sql b/2- ELT with Spark SQL and Python/2.4 - Higher Order Functions and SQL UDFs.sql index 620fcf7..218a39a 100644 --- a/2- ELT with Spark SQL and Python/2.4 - Higher Order Functions and SQL UDFs.sql +++ b/2- ELT with Spark SQL and Python/2.4 - Higher Order Functions and SQL UDFs.sql @@ -1,8 +1,8 @@ -- Databricks notebook source -- MAGIC %md-sandbox --- MAGIC +-- MAGIC -- MAGIC
--- MAGIC Databricks Learning +-- MAGIC Databricks Learning -- MAGIC
-- COMMAND ---------- diff --git a/3- Incremental Data Processing/3.1 - Structured Streaming.py b/3- Incremental Data Processing/3.1 - Structured Streaming.py index 91e8c07..b558703 100644 --- a/3- Incremental Data Processing/3.1 - Structured Streaming.py +++ b/3- Incremental Data Processing/3.1 - Structured Streaming.py @@ -1,8 +1,8 @@ # Databricks notebook source # MAGIC %md-sandbox -# MAGIC +# MAGIC # MAGIC
-# MAGIC Databricks Learning +# MAGIC Databricks Learning # MAGIC
# COMMAND ---------- diff --git a/3- Incremental Data Processing/3.2 - Auto Loader.py b/3- Incremental Data Processing/3.2 - Auto Loader.py index 1c6f1bb..6da29b7 100644 --- a/3- Incremental Data Processing/3.2 - Auto Loader.py +++ b/3- Incremental Data Processing/3.2 - Auto Loader.py @@ -1,8 +1,8 @@ # Databricks notebook source # MAGIC %md-sandbox -# MAGIC +# MAGIC # MAGIC
-# MAGIC Databricks Learning +# MAGIC Databricks Learning # MAGIC
# COMMAND ---------- diff --git a/3- Incremental Data Processing/3.3 - Multi-Hop Architecture.py b/3- Incremental Data Processing/3.3 - Multi-Hop Architecture.py index 15777c4..3f6e350 100644 --- a/3- Incremental Data Processing/3.3 - Multi-Hop Architecture.py +++ b/3- Incremental Data Processing/3.3 - Multi-Hop Architecture.py @@ -1,8 +1,8 @@ # Databricks notebook source # MAGIC %md-sandbox -# MAGIC +# MAGIC # MAGIC
-# MAGIC Databricks Learning +# MAGIC Databricks Learning # MAGIC
# COMMAND ---------- diff --git a/4- Production Pipelines/4.1 - Delta Live Tables.sql b/4- Production Pipelines/4.1 - Delta Live Tables.sql index 1968c3b..07e9c16 100644 --- a/4- Production Pipelines/4.1 - Delta Live Tables.sql +++ b/4- Production Pipelines/4.1 - Delta Live Tables.sql @@ -1,15 +1,15 @@ -- Databricks notebook source -- MAGIC %md --- MAGIC --- MAGIC +-- MAGIC +-- MAGIC -- MAGIC # Delta Live Tables -- COMMAND ---------- -- MAGIC %md-sandbox --- MAGIC +-- MAGIC -- MAGIC
--- MAGIC Databricks Learning +-- MAGIC Databricks Learning -- MAGIC
-- COMMAND ---------- @@ -43,11 +43,11 @@ AS SELECT * FROM json.`${datasets_path}/customers-json` -- COMMAND ---------- -- MAGIC %md --- MAGIC --- MAGIC --- MAGIC +-- MAGIC +-- MAGIC +-- MAGIC -- MAGIC ## Silver Layer Tables --- MAGIC +-- MAGIC -- MAGIC #### orders_cleaned -- COMMAND ---------- @@ -68,7 +68,7 @@ AS -- MAGIC %md -- MAGIC >> Constraint violation --- MAGIC +-- MAGIC -- MAGIC | **`ON VIOLATION`** | Behavior | -- MAGIC | --- | --- | -- MAGIC | **`DROP ROW`** | Discard records that violate constraints | @@ -78,8 +78,8 @@ AS -- COMMAND ---------- -- MAGIC %md --- MAGIC --- MAGIC +-- MAGIC +-- MAGIC -- MAGIC ## Gold Tables -- COMMAND ---------- From cd3ec26de01df9e72446fb171ec43c998244f71d Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Sat, 16 Sep 2023 01:26:23 +0000 Subject: [PATCH 05/28] Insert employees in multiple transactions --- .../1.2 - Understanding Delta Tables.sql | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql b/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql index e122db9..c88a3a4 100644 --- a/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql +++ b/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql @@ -4,15 +4,29 @@ CREATE TABLE employees -- COMMAND ---------- +-- NOTE: With latest Databricks Runtimes, inserting few records in single transaction is optimized into single data file. +-- For this demo, we will insert the records in multiple transactions in order to create 4 data files. + INSERT INTO employees VALUES (1, "Adam", 3500.0), - (2, "Sarah", 4020.5), + (2, "Sarah", 4020.5); + +INSERT INTO employees +VALUES (3, "John", 2999.3), - (4, "Thomas", 4000.3), - (5, "Anna", 2500.0), + (4, "Thomas", 4000.3); + +INSERT INTO employees +VALUES + (5, "Anna", 2500.0); + +INSERT INTO employees +VALUES (6, "Kim", 6200.3) +-- NOTE: When executing multiple SQL statements in the same cell, only the last statement's result will be displayed in the cell output. + -- COMMAND ---------- SELECT * FROM employees From f9981abf969afa55c876aea6e0f9a37276117edf Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Sat, 16 Sep 2023 12:47:23 +0000 Subject: [PATCH 06/28] Update the number of transaction log file --- .../1.2 - Understanding Delta Tables.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql b/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql index c88a3a4..0e9a02d 100644 --- a/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql +++ b/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql @@ -71,7 +71,7 @@ DESCRIBE HISTORY employees -- COMMAND ---------- --- MAGIC %fs head 'dbfs:/user/hive/warehouse/employees/_delta_log/00000000000000000002.json' +-- MAGIC %fs head 'dbfs:/user/hive/warehouse/employees/_delta_log/00000000000000000005.json' -- COMMAND ---------- From b0947c05cfccd600684bd6f8f33c157050838703 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Sat, 16 Sep 2023 13:09:17 +0000 Subject: [PATCH 07/28] Update table version numbers --- .../1.3 - Advanced Delta Lake Features.sql | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features.sql b/1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features.sql index 13fe336..7a9c48f 100644 --- a/1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features.sql +++ b/1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features.sql @@ -1,14 +1,18 @@ -- Databricks notebook source + + +-- COMMAND ---------- + DESCRIBE HISTORY employees -- COMMAND ---------- SELECT * -FROM employees VERSION AS OF 1 +FROM employees VERSION AS OF 4 -- COMMAND ---------- -SELECT * FROM employees@v1 +SELECT * FROM employees@v4 -- COMMAND ---------- @@ -20,7 +24,7 @@ SELECT * FROM employees -- COMMAND ---------- -RESTORE TABLE employees TO VERSION AS OF 2 +RESTORE TABLE employees TO VERSION AS OF 5 -- COMMAND ---------- From 27c53ba46f38484779c8878fb46b3ad88596aef9 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Sun, 17 Sep 2023 13:26:30 +0000 Subject: [PATCH 08/28] Add comments --- .../1.2 - Understanding Delta Tables.sql | 38 +++++++++++++++++++ .../1.3 - Advanced Delta Lake Features.sql | 26 ++++++++++--- ...4 - Databases and Tables on Databricks.sql | 31 +++++++++++++-- .../1.5A - Views.sql | 26 +++++++++++-- .../1.5B - Views (Session 2).sql | 6 +++ .../2.1 - Querying Files.sql | 36 ++++++++++++++++-- .../2.2 - Writing to Tables.sql | 15 ++++++++ .../2.3 - Advanced Transformations.sql | 38 +++++++++++++++++++ ... - Higher Order Functions and SQL UDFs.sql | 21 ++++++++-- 9 files changed, 216 insertions(+), 21 deletions(-) diff --git a/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql b/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql index 0e9a02d..30f833f 100644 --- a/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql +++ b/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql @@ -1,9 +1,27 @@ -- Databricks notebook source +-- MAGIC %md +-- MAGIC ## Creating Delta Lake Tables + +-- COMMAND ---------- + CREATE TABLE employees (id INT, name STRING, salary DOUBLE); -- COMMAND ---------- +-- MAGIC %md +-- MAGIC +-- MAGIC ## Catalog Explorer +-- MAGIC +-- MAGIC Check the created **employees** table in the **Catalog** explorer. + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC ## Inserting Data + +-- COMMAND ---------- + -- NOTE: With latest Databricks Runtimes, inserting few records in single transaction is optimized into single data file. -- For this demo, we will insert the records in multiple transactions in order to create 4 data files. @@ -33,14 +51,29 @@ SELECT * FROM employees -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Exploring Table Metadata + +-- COMMAND ---------- + DESCRIBE DETAIL employees -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Exploring Table Directory + +-- COMMAND ---------- + -- MAGIC %fs ls 'dbfs:/user/hive/warehouse/employees' -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Updating Table + +-- COMMAND ---------- + UPDATE employees SET salary = salary + 100 WHERE name LIKE "A%" @@ -63,6 +96,11 @@ SELECT * FROM employees -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Exploring Table History + +-- COMMAND ---------- + DESCRIBE HISTORY employees -- COMMAND ---------- diff --git a/1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features.sql b/1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features.sql index 7a9c48f..260d342 100644 --- a/1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features.sql +++ b/1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features.sql @@ -1,5 +1,7 @@ -- Databricks notebook source - +-- MAGIC %md +-- MAGIC +-- MAGIC ## Delta Time Travel -- COMMAND ---------- @@ -36,6 +38,12 @@ DESCRIBE HISTORY employees -- COMMAND ---------- +-- MAGIC %md +-- MAGIC +-- MAGIC ## OPTIMIZE Command + +-- COMMAND ---------- + DESCRIBE DETAIL employees -- COMMAND ---------- @@ -57,6 +65,12 @@ DESCRIBE HISTORY employees -- COMMAND ---------- +-- MAGIC %md +-- MAGIC +-- MAGIC ## VACUUM Command + +-- COMMAND ---------- + VACUUM employees -- COMMAND ---------- @@ -85,16 +99,18 @@ SELECT * FROM employees@v1 -- COMMAND ---------- -DROP TABLE employees +-- MAGIC %md +-- MAGIC +-- MAGIC ## Dropping Tables -- COMMAND ---------- -SELECT * FROM employees +DROP TABLE employees -- COMMAND ---------- --- MAGIC %fs ls 'dbfs:/user/hive/warehouse/employees' +SELECT * FROM employees -- COMMAND ---------- - +-- MAGIC %fs ls 'dbfs:/user/hive/warehouse/employees' diff --git a/1- Databricks Lakehouse Platform/1.4 - Databases and Tables on Databricks.sql b/1- Databricks Lakehouse Platform/1.4 - Databases and Tables on Databricks.sql index 3bdd7ad..8fb17df 100644 --- a/1- Databricks Lakehouse Platform/1.4 - Databases and Tables on Databricks.sql +++ b/1- Databricks Lakehouse Platform/1.4 - Databases and Tables on Databricks.sql @@ -1,4 +1,9 @@ -- Databricks notebook source +-- MAGIC %md +-- MAGIC ## Managed Tables + +-- COMMAND ---------- + CREATE TABLE managed_default (width INT, length INT, height INT); @@ -11,6 +16,12 @@ DESCRIBE EXTENDED managed_default -- COMMAND ---------- +-- MAGIC %md +-- MAGIC +-- MAGIC ## External Tables + +-- COMMAND ---------- + CREATE TABLE external_default (width INT, length INT, height INT) LOCATION 'dbfs:/mnt/demo/external_default'; @@ -24,6 +35,12 @@ DESCRIBE EXTENDED external_default -- COMMAND ---------- +-- MAGIC %md +-- MAGIC +-- MAGIC ## Dropping Tables + +-- COMMAND ---------- + DROP TABLE managed_default -- COMMAND ---------- @@ -40,6 +57,11 @@ DROP TABLE external_default -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Creating Schemas + +-- COMMAND ---------- + CREATE SCHEMA new_default -- COMMAND ---------- @@ -88,6 +110,11 @@ DROP TABLE external_new_default; -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Creating Schemas in Custom Location + +-- COMMAND ---------- + CREATE SCHEMA custom LOCATION 'dbfs:/Shared/schemas/custom.db' @@ -134,7 +161,3 @@ DROP TABLE external_custom; -- COMMAND ---------- -- MAGIC %fs ls 'dbfs:/mnt/demo/external_custom' - --- COMMAND ---------- - - diff --git a/1- Databricks Lakehouse Platform/1.5A - Views.sql b/1- Databricks Lakehouse Platform/1.5A - Views.sql index 16d569e..e4fb1e8 100644 --- a/1- Databricks Lakehouse Platform/1.5A - Views.sql +++ b/1- Databricks Lakehouse Platform/1.5A - Views.sql @@ -1,4 +1,9 @@ -- Databricks notebook source +-- MAGIC %md +-- MAGIC ## Preparing Sample Data + +-- COMMAND ---------- + CREATE TABLE IF NOT EXISTS smartphones (id INT, name STRING, brand STRING, year INT); @@ -20,6 +25,11 @@ SHOW TABLES -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Creating Stored Views + +-- COMMAND ---------- + CREATE VIEW view_apple_phones AS SELECT * FROM smartphones @@ -35,6 +45,12 @@ SHOW TABLES; -- COMMAND ---------- +-- MAGIC %md +-- MAGIC +-- MAGIC ## Creating Temporary Views + +-- COMMAND ---------- + CREATE TEMP VIEW temp_view_phones_brands AS SELECT DISTINCT brand FROM smartphones; @@ -47,6 +63,12 @@ SHOW TABLES; -- COMMAND ---------- +-- MAGIC %md +-- MAGIC +-- MAGIC ## Creating Global Temporary Views + +-- COMMAND ---------- + CREATE GLOBAL TEMP VIEW global_temp_view_latest_phones AS SELECT * FROM smartphones WHERE year > 2020 @@ -67,7 +89,3 @@ SHOW TABLES IN global_temp; -- COMMAND ---------- SHOW TABLES - --- COMMAND ---------- - - diff --git a/1- Databricks Lakehouse Platform/1.5B - Views (Session 2).sql b/1- Databricks Lakehouse Platform/1.5B - Views (Session 2).sql index bcb8b4e..a955d62 100644 --- a/1- Databricks Lakehouse Platform/1.5B - Views (Session 2).sql +++ b/1- Databricks Lakehouse Platform/1.5B - Views (Session 2).sql @@ -11,6 +11,12 @@ SELECT * FROM global_temp.global_temp_view_latest_phones; -- COMMAND ---------- +-- MAGIC %md +-- MAGIC +-- MAGIC ## Dropping Views + +-- COMMAND ---------- + DROP TABLE smartphones; DROP VIEW view_apple_phones; diff --git a/2- ELT with Spark SQL and Python/2.1 - Querying Files.sql b/2- ELT with Spark SQL and Python/2.1 - Querying Files.sql index f5267ec..dc26764 100644 --- a/2- ELT with Spark SQL and Python/2.1 - Querying Files.sql +++ b/2- ELT with Spark SQL and Python/2.1 - Querying Files.sql @@ -7,6 +7,11 @@ -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Querying JSON + +-- COMMAND ---------- + -- MAGIC %run ../Includes/Copy-Datasets -- COMMAND ---------- @@ -39,14 +44,30 @@ SELECT count(*) FROM json.`${dataset.bookstore}/customers-json` -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Querying text Format + +-- COMMAND ---------- + SELECT * FROM text.`${dataset.bookstore}/customers-json` -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Querying binaryFile Format + +-- COMMAND ---------- + SELECT * FROM binaryFile.`${dataset.bookstore}/customers-json` -- COMMAND ---------- +-- MAGIC %md +-- MAGIC +-- MAGIC ## Querying CSV + +-- COMMAND ---------- + SELECT * FROM csv.`${dataset.bookstore}/books-csv` -- COMMAND ---------- @@ -66,6 +87,12 @@ SELECT * FROM books_csv -- COMMAND ---------- +-- MAGIC %md +-- MAGIC +-- MAGIC ## Limitations of Non-Delta Tables + +-- COMMAND ---------- + DESCRIBE EXTENDED books_csv -- COMMAND ---------- @@ -106,6 +133,11 @@ SELECT COUNT(*) FROM books_csv -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## CTAS Statements + +-- COMMAND ---------- + CREATE TABLE customers AS SELECT * FROM json.`${dataset.bookstore}/customers-json`; @@ -137,7 +169,3 @@ SELECT * FROM books -- COMMAND ---------- DESCRIBE EXTENDED books - --- COMMAND ---------- - - diff --git a/2- ELT with Spark SQL and Python/2.2 - Writing to Tables.sql b/2- ELT with Spark SQL and Python/2.2 - Writing to Tables.sql index c55ff4a..ed17646 100644 --- a/2- ELT with Spark SQL and Python/2.2 - Writing to Tables.sql +++ b/2- ELT with Spark SQL and Python/2.2 - Writing to Tables.sql @@ -20,6 +20,11 @@ SELECT * FROM orders -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Overwriting Tables + +-- COMMAND ---------- + CREATE OR REPLACE TABLE orders AS SELECT * FROM parquet.`${dataset.bookstore}/orders` @@ -43,6 +48,11 @@ SELECT *, current_timestamp() FROM parquet.`${dataset.bookstore}/orders` -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Appending Data + +-- COMMAND ---------- + INSERT INTO orders SELECT * FROM parquet.`${dataset.bookstore}/orders-new` @@ -52,6 +62,11 @@ SELECT count(*) FROM orders -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Merging Data + +-- COMMAND ---------- + CREATE OR REPLACE TEMP VIEW customers_updates AS SELECT * FROM json.`${dataset.bookstore}/customers-json-new`; diff --git a/2- ELT with Spark SQL and Python/2.3 - Advanced Transformations.sql b/2- ELT with Spark SQL and Python/2.3 - Advanced Transformations.sql index 483500a..d611285 100644 --- a/2- ELT with Spark SQL and Python/2.3 - Advanced Transformations.sql +++ b/2- ELT with Spark SQL and Python/2.3 - Advanced Transformations.sql @@ -11,6 +11,12 @@ -- COMMAND ---------- +-- MAGIC %md +-- MAGIC +-- MAGIC ## Parsing JSON Data + +-- COMMAND ---------- + SELECT * FROM customers -- COMMAND ---------- @@ -65,11 +71,21 @@ FROM orders -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Explode Function + +-- COMMAND ---------- + SELECT order_id, customer_id, explode(books) AS book FROM orders -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Collecting Rows + +-- COMMAND ---------- + SELECT customer_id, collect_set(order_id) AS orders_set, collect_set(books.book_id) AS books_set @@ -78,6 +94,12 @@ GROUP BY customer_id -- COMMAND ---------- +-- MAGIC %md +-- MAGIC +-- MAGIC ##Flatten Arrays + +-- COMMAND ---------- + SELECT customer_id, collect_set(books.book_id) As before_flatten, array_distinct(flatten(collect_set(books.book_id))) AS after_flatten @@ -86,6 +108,12 @@ GROUP BY customer_id -- COMMAND ---------- +-- MAGIC %md +-- MAGIC +-- MAGIC ##Join Operations + +-- COMMAND ---------- + CREATE OR REPLACE VIEW orders_enriched AS SELECT * FROM ( @@ -98,6 +126,11 @@ SELECT * FROM orders_enriched -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Set Operations + +-- COMMAND ---------- + CREATE OR REPLACE TEMP VIEW orders_updates AS SELECT * FROM parquet.`${dataset.bookstore}/orders-new`; @@ -119,6 +152,11 @@ SELECT * FROM orders_updates -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## Reshaping Data with Pivot + +-- COMMAND ---------- + CREATE OR REPLACE TABLE transactions AS SELECT * FROM ( diff --git a/2- ELT with Spark SQL and Python/2.4 - Higher Order Functions and SQL UDFs.sql b/2- ELT with Spark SQL and Python/2.4 - Higher Order Functions and SQL UDFs.sql index 218a39a..f0909d1 100644 --- a/2- ELT with Spark SQL and Python/2.4 - Higher Order Functions and SQL UDFs.sql +++ b/2- ELT with Spark SQL and Python/2.4 - Higher Order Functions and SQL UDFs.sql @@ -15,6 +15,12 @@ SELECT * FROM orders -- COMMAND ---------- +-- MAGIC %md +-- MAGIC +-- MAGIC ## Filtering Arrays + +-- COMMAND ---------- + SELECT order_id, books, @@ -33,6 +39,12 @@ WHERE size(multiple_copies) > 0; -- COMMAND ---------- +-- MAGIC %md +-- MAGIC +-- MAGIC ## Transforming Arrays + +-- COMMAND ---------- + SELECT order_id, books, @@ -44,6 +56,11 @@ FROM orders; -- COMMAND ---------- +-- MAGIC %md +-- MAGIC ## User Defined Functions (UDF) + +-- COMMAND ---------- + CREATE OR REPLACE FUNCTION get_url(email STRING) RETURNS STRING @@ -82,7 +99,3 @@ FROM customers DROP FUNCTION get_url; DROP FUNCTION site_type; - --- COMMAND ---------- - - From 425bd5133a5b8e6e48c4baa2884f79c6024046c8 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Tue, 19 Sep 2023 16:24:58 +0000 Subject: [PATCH 09/28] Add labs --- .../1.0L - Creating Clusters.py | 21 ++ .../1.1L - Notebook Basics.py | 98 +++++++++ .../1.2L - Delta Lake.sql | 95 +++++++++ ...L - Databases and Tables on Databricks.sql | 179 +++++++++++++++++ .../2.1L - Querying Files.sql | 118 +++++++++++ .../2.2L - Advanced ETL.sql | 102 ++++++++++ .../3.1L - Spark Structured Streaming.py | 113 +++++++++++ .../3.2L - Multi-Hop Architecture.py | 179 +++++++++++++++++ .../4.1L - Delta Live Tables.sql | 119 +++++++++++ .../4.2L - Jobs - Land New Data.py | 91 +++++++++ .../4.3L - Databricks SQL.sql | 121 +++++++++++ Labs/Includes/Setup-Lab.py | 142 +++++++++++++ Labs/Includes/images/bar_graph.png | Bin 0 -> 28513 bytes Labs/Includes/images/cluster_par1.png | Bin 0 -> 93404 bytes Labs/Includes/images/cluster_par2.png | Bin 0 -> 74945 bytes Labs/Includes/images/cluster_par3.png | Bin 0 -> 87154 bytes Labs/Includes/images/dashboard.png | Bin 0 -> 69809 bytes Labs/Includes/images/line_graph.png | Bin 0 -> 39191 bytes Labs/Includes/images/markdown.png | Bin 0 -> 7282 bytes Labs/Includes/images/school_job.png | Bin 0 -> 26213 bytes Labs/Includes/images/school_schema.png | Bin 0 -> 72334 bytes .../1.0L Solution - Creating Clusters.py | 75 +++++++ .../1.1L Solution - Notebook Basics.py | 112 +++++++++++ .../1.2L Solution - Delta Lake.sql | 98 +++++++++ ...n - Databases and Tables on Databricks.sql | 188 ++++++++++++++++++ .../helper.py | 7 + .../2.1L Solution - Querying Files.sql | 134 +++++++++++++ .../2.2L Solution - Advanced ETL.sql | 117 +++++++++++ ...L Solution - Spark Structured Streaming.py | 114 +++++++++++ .../3.2L Solution - Multi-Hop Architecture.py | 188 ++++++++++++++++++ .../4.1L Solution - Delta Live Tables.sql | 126 ++++++++++++ .../4.2L Solution - Jobs - Land New Data.py | 91 +++++++++ .../4.3L Solution - Databricks SQL.sql | 121 +++++++++++ Labs/Solutions/Includes/Setup-Lab.py | 142 +++++++++++++ 34 files changed, 2891 insertions(+) create mode 100644 Labs/1- Databricks Lakehouse Platform/1.0L - Creating Clusters.py create mode 100644 Labs/1- Databricks Lakehouse Platform/1.1L - Notebook Basics.py create mode 100644 Labs/1- Databricks Lakehouse Platform/1.2L - Delta Lake.sql create mode 100644 Labs/1- Databricks Lakehouse Platform/1.3L - Databases and Tables on Databricks.sql create mode 100644 Labs/2- ELT with Spark SQL and Python/2.1L - Querying Files.sql create mode 100644 Labs/2- ELT with Spark SQL and Python/2.2L - Advanced ETL.sql create mode 100644 Labs/3- Incremental Data Processing/3.1L - Spark Structured Streaming.py create mode 100644 Labs/3- Incremental Data Processing/3.2L - Multi-Hop Architecture.py create mode 100644 Labs/4- Production Pipelines/4.1L - Delta Live Tables.sql create mode 100644 Labs/4- Production Pipelines/4.2L - Jobs - Land New Data.py create mode 100644 Labs/4- Production Pipelines/4.3L - Databricks SQL.sql create mode 100644 Labs/Includes/Setup-Lab.py create mode 100644 Labs/Includes/images/bar_graph.png create mode 100644 Labs/Includes/images/cluster_par1.png create mode 100644 Labs/Includes/images/cluster_par2.png create mode 100644 Labs/Includes/images/cluster_par3.png create mode 100644 Labs/Includes/images/dashboard.png create mode 100644 Labs/Includes/images/line_graph.png create mode 100644 Labs/Includes/images/markdown.png create mode 100644 Labs/Includes/images/school_job.png create mode 100644 Labs/Includes/images/school_schema.png create mode 100644 Labs/Solutions/1- Databricks Lakehouse Platform/1.0L Solution - Creating Clusters.py create mode 100644 Labs/Solutions/1- Databricks Lakehouse Platform/1.1L Solution - Notebook Basics.py create mode 100644 Labs/Solutions/1- Databricks Lakehouse Platform/1.2L Solution - Delta Lake.sql create mode 100644 Labs/Solutions/1- Databricks Lakehouse Platform/1.3L Solution - Databases and Tables on Databricks.sql create mode 100644 Labs/Solutions/1- Databricks Lakehouse Platform/helper.py create mode 100644 Labs/Solutions/2- ELT with Spark SQL and Python/2.1L Solution - Querying Files.sql create mode 100644 Labs/Solutions/2- ELT with Spark SQL and Python/2.2L Solution - Advanced ETL.sql create mode 100644 Labs/Solutions/3- Incremental Data Processing/3.1L Solution - Spark Structured Streaming.py create mode 100644 Labs/Solutions/3- Incremental Data Processing/3.2L Solution - Multi-Hop Architecture.py create mode 100644 Labs/Solutions/4- Production Pipelines/4.1L Solution - Delta Live Tables.sql create mode 100644 Labs/Solutions/4- Production Pipelines/4.2L Solution - Jobs - Land New Data.py create mode 100644 Labs/Solutions/4- Production Pipelines/4.3L Solution - Databricks SQL.sql create mode 100644 Labs/Solutions/Includes/Setup-Lab.py diff --git a/Labs/1- Databricks Lakehouse Platform/1.0L - Creating Clusters.py b/Labs/1- Databricks Lakehouse Platform/1.0L - Creating Clusters.py new file mode 100644 index 0000000..c804acf --- /dev/null +++ b/Labs/1- Databricks Lakehouse Platform/1.0L - Creating Clusters.py @@ -0,0 +1,21 @@ +# Databricks notebook source +# MAGIC %md +# MAGIC +# MAGIC ## Lab: Creating Clusters + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q1 - Creating a Demo Cluster +# MAGIC +# MAGIC Create a cluster with the following configurations: +# MAGIC +# MAGIC | Setting | Instructions | +# MAGIC |--|--| +# MAGIC |Cluster name|**Demo Cluster**| +# MAGIC |Cluster mode|**Signle node**| +# MAGIC |Runtime version|Select the latest Databricks runtime version with LTS| +# MAGIC |Photon Acceleration| Uncheck the option | +# MAGIC |Node type|4 cores| +# MAGIC |Auto termination|30 minutes| +# MAGIC diff --git a/Labs/1- Databricks Lakehouse Platform/1.1L - Notebook Basics.py b/Labs/1- Databricks Lakehouse Platform/1.1L - Notebook Basics.py new file mode 100644 index 0000000..0531ce7 --- /dev/null +++ b/Labs/1- Databricks Lakehouse Platform/1.1L - Notebook Basics.py @@ -0,0 +1,98 @@ +# Databricks notebook source +# MAGIC %md +# MAGIC +# MAGIC ## Lab: Get started with Databricks Notebook +# MAGIC + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q1 - Renaming the Notebook +# MAGIC +# MAGIC Change the name of the current notebook to "1.1L - My first lab" + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q2 - Attaching a cluster +# MAGIC +# MAGIC Attach the cluster you created previously to this notebook + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q3 - Execute a Python code +# MAGIC +# MAGIC In the below cell, fill in the blank to print the result of adding the two variables x and y + +# COMMAND ---------- + +x = 5 +y = 10 +result = x + y + +-------------------- + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q4 - Execute a SQL cell +# MAGIC +# MAGIC Change the language in the below cell to execute the SQL statement + +# COMMAND ---------- + +_____________________ + +SELECT 5 + 10 + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q5 - Create a Markdown Cell +# MAGIC +# MAGIC 1. Insert a new cell below this one +# MAGIC 1. In the new cell, add Markdown with a header and bullet points as shown in the following image +# MAGIC +# MAGIC
+# MAGIC +# MAGIC
+ +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q6 - Using %run command +# MAGIC +# MAGIC 1. Create a new Python notebook named **helper** in the current directory (i.e., in the **labs/1- Databricks Lakehouse Platform** folder) +# MAGIC 1. In the **helper** notebook, declare a variable called **my_country** and assign it a value of your country name. For example: +# MAGIC > my_country = "France" +# MAGIC 1. In the following cell, execute a %run command to include the **helper** notebook into this current notebook +# MAGIC > **Hint**: use a dot (**.**) to refer to the current directory + +# COMMAND ---------- + +-------------------- + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Now, run the following cell to test that you are able to print the **my_country** variable + +# COMMAND ---------- + +print(my_country) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q7 - Functions definition +# MAGIC 1. In the **helper** notebook, define a Python function named **addition()** that print the sum of two numbers +# MAGIC 1. Execute again the above %run command to take the function definition into account +# MAGIC 1. Run the below cell to call the function + +# COMMAND ---------- + +num1 = 20 +num2 = 30 + +addition(num1, num2) diff --git a/Labs/1- Databricks Lakehouse Platform/1.2L - Delta Lake.sql b/Labs/1- Databricks Lakehouse Platform/1.2L - Delta Lake.sql new file mode 100644 index 0000000..0c6a0c9 --- /dev/null +++ b/Labs/1- Databricks Lakehouse Platform/1.2L - Delta Lake.sql @@ -0,0 +1,95 @@ +-- Databricks notebook source +-- MAGIC %md +-- MAGIC +-- MAGIC ## Lab: Delta Lake + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Creating a Delta Table +-- MAGIC +-- MAGIC Run the cell below to create the **persons** Delta Table, and apply some operations on it. + +-- COMMAND ---------- + +CREATE OR REPLACE TABLE persons + (id INT, name STRING, age INT); + +INSERT INTO persons +VALUES + (1, "Tom", 18), + (2, "Kumar", 25); + +INSERT INTO persons +VALUES + (3, "Ali", 50), + (4, "Sandra", 35); + +INSERT INTO persons +VALUES + (5, "Eric", 28), + (6, "Salma", 42); + +UPDATE persons +SET age = age + 10 +WHERE id = 1; + +DELETE FROM persons +WHERE name = "Eric"; + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q1 - Querying Delta Lake table +-- MAGIC +-- MAGIC Query the data in the **persons** table using **SELECT** statement + +-- COMMAND ---------- + +-------------------- + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q2 - Checking table history +-- MAGIC +-- MAGIC Review the history of the table transactions using the **DESCRIBE HISTORY** command + +-- COMMAND ---------- + +-------------------- + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q3- Checking table metadata +-- MAGIC +-- MAGIC Review the basic metadata information of the table using the **DESCRIBE DETAIL** command + +-- COMMAND ---------- + +-------------------- + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q4- Exploring table directory +-- MAGIC +-- MAGIC Explore the table directory using the **%fs** magic command. +-- MAGIC +-- MAGIC >**Hint:** get the table location from the above metadata information + +-- COMMAND ---------- + +-------------------- + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q5- Exploring the transactions log +-- MAGIC +-- MAGIC Explore the **_delta_log** subfolder in the table directory + +-- COMMAND ---------- + +-------------------- diff --git a/Labs/1- Databricks Lakehouse Platform/1.3L - Databases and Tables on Databricks.sql b/Labs/1- Databricks Lakehouse Platform/1.3L - Databases and Tables on Databricks.sql new file mode 100644 index 0000000..c087f65 --- /dev/null +++ b/Labs/1- Databricks Lakehouse Platform/1.3L - Databases and Tables on Databricks.sql @@ -0,0 +1,179 @@ +-- Databricks notebook source +-- MAGIC %md +-- MAGIC ## Lab: Databases and Tables on Databricks + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q1 - Creating managed table +-- MAGIC +-- MAGIC In the default database, create a managed table named **movies_managed** that has the following schema: +-- MAGIC +-- MAGIC +-- MAGIC | Column Name | Column Type | +-- MAGIC | --- | --- | +-- MAGIC | title | STRING | +-- MAGIC | category | STRING | +-- MAGIC | length | FLOAT | +-- MAGIC | release_date | DATE | + +-- COMMAND ---------- + +-------------------- + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Review the extended metadata information of the table, and verify that: +-- MAGIC 1. The table type is Managed +-- MAGIC 1. The table is located under the default hive directory + +-- COMMAND ---------- + +DESCRIBE EXTENDED movies_managed + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q2 - Creating external table +-- MAGIC +-- MAGIC In the default database, create an external Delta table named **actors_external**, and located under the directory: +-- MAGIC **dbfs:/mnt/demo/actors_external** +-- MAGIC +-- MAGIC The schema for the table: +-- MAGIC +-- MAGIC | Column Name | Column Type | +-- MAGIC | --- | --- | +-- MAGIC | actor_id | INT | +-- MAGIC | name | STRING | +-- MAGIC | nationality | STRING | + +-- COMMAND ---------- + +-------------------- + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q4- Checking table metadata +-- MAGIC +-- MAGIC Review the extended metadata information of the table, and verify that: +-- MAGIC 1. The table type is External +-- MAGIC 1. The table is located under the directory: **dbfs:/mnt/demo/actors_external** + +-- COMMAND ---------- + +DESCRIBE EXTENDED actors_external + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q3- Dropping manged table +-- MAGIC +-- MAGIC Drop the manged table **movies_managed** + +-- COMMAND ---------- + +-------------------- + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Check that the directory of the managed table has been deleted +-- MAGIC + +-- COMMAND ---------- + +-- MAGIC %fs ls 'dbfs:/user/hive/warehouse/actors_external' + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q4- Drop external table +-- MAGIC +-- MAGIC Drop the external table **actors_external** + +-- COMMAND ---------- + +DROP TABLE actors_external + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Check that the directory of the external table has **Not** been deleted + +-- COMMAND ---------- + +-- MAGIC %fs ls 'dbfs:/mnt/demo/actors_external' + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q5- Creating new schema +-- MAGIC +-- MAGIC Create a new schema named **db_cinema** + +-- COMMAND ---------- + +-------------------- + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Review the extended metadata information of the database, and verify that the database is located under the default hive directory. +-- MAGIC +-- MAGIC Note that the database folder has the extenstion **.db** + +-- COMMAND ---------- + +DESCRIBE DATABASE EXTENDED db_cinema + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Use the new schema to create the below **movies** table + +-- COMMAND ---------- + +-------------------- + + +CREATE TABLE movies + (title STRING, category STRING, length INT, release_date DATE); + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q6- Creating new schema in custom location +-- MAGIC +-- MAGIC Create a new schema named **cinema_custom** in the directory: **dbfs:/Shared/schemas/cinema_custom.db** + +-- COMMAND ---------- + +-------------------- + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Use the new schema to create the below **movies** table + +-- COMMAND ---------- + +USE cinema_custom; + +CREATE TABLE movies + (title STRING, category STRING, length INT, release_date DATE); + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Finally, review the extended metadata information of the table **movies**, and verify that: +-- MAGIC +-- MAGIC 1. The table type is Managed +-- MAGIC 1. The table is located in the new database defined under the custom location + +-- COMMAND ---------- + +DESCRIBE EXTENDED movies diff --git a/Labs/2- ELT with Spark SQL and Python/2.1L - Querying Files.sql b/Labs/2- ELT with Spark SQL and Python/2.1L - Querying Files.sql new file mode 100644 index 0000000..49b5942 --- /dev/null +++ b/Labs/2- ELT with Spark SQL and Python/2.1L - Querying Files.sql @@ -0,0 +1,118 @@ +-- Databricks notebook source +-- MAGIC %md +-- MAGIC +-- MAGIC ## Lab: Querying Files + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Run the following cell to setup the lab environment + +-- COMMAND ---------- + +-- MAGIC %run ../Includes/Setup-Lab + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q1- Extracting data directly from Parquet files +-- MAGIC +-- MAGIC Use a SELECT statement to directly query the content of the Parquet files in the directory **${dataset.school}/enrollments** + +-- COMMAND ---------- + +-------------------- + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Use the above SELECT query in a CTAS statement to create the table **enrollments** + +-- COMMAND ---------- + +-------------------- + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Run the below cell to ensure data was written as expected in the **enrollments** table + +-- COMMAND ---------- + +SELECT * FROM enrollments + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q2- Registering Tables from JSON Files +-- MAGIC +-- MAGIC Use CTAS statement to create the table **students** from the json files in the directory: **${dataset.school}/students-json** +-- MAGIC + +-- COMMAND ---------- + +-------------------- + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Run the below cell to ensure data was written as expected in the **students** table + +-- COMMAND ---------- + +SELECT * FROM students + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q3- Registering Tables from CSV Files +-- MAGIC +-- MAGIC Create the temporary view **courses_tmp_vw** from the csv files in the directory: **${dataset.school}/courses-csv** +-- MAGIC +-- MAGIC Knowing that: +-- MAGIC * The delimiter is semicolon (**;**) +-- MAGIC * There is a header of column names in each file +-- MAGIC +-- MAGIC The schema for the view: +-- MAGIC +-- MAGIC | Column Name | Column Type | +-- MAGIC | --- | --- | +-- MAGIC | course_id | STRING | +-- MAGIC | title | STRING | +-- MAGIC | instructor | STRING | +-- MAGIC | category | STRING | +-- MAGIC | price | DOUBLE | + +-- COMMAND ---------- + +-------------------- + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Create the manged table **courses** from the temporary view **courses_tmp_vw** + +-- COMMAND ---------- + +-------------------- + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Run the below cell to ensure data was written as expected in the **courses** table + +-- COMMAND ---------- + +SELECT * FROM courses + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Finally, review the metadata information of the table **courses**, and verify that the table type is Managed + +-- COMMAND ---------- + +DESCRIBE EXTENDED courses diff --git a/Labs/2- ELT with Spark SQL and Python/2.2L - Advanced ETL.sql b/Labs/2- ELT with Spark SQL and Python/2.2L - Advanced ETL.sql new file mode 100644 index 0000000..186162f --- /dev/null +++ b/Labs/2- ELT with Spark SQL and Python/2.2L - Advanced ETL.sql @@ -0,0 +1,102 @@ +-- Databricks notebook source +-- MAGIC %md +-- MAGIC +-- MAGIC ## Lab: Advanced ETL + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Run the following cell to setup the lab environment + +-- COMMAND ---------- + +-- MAGIC %run ../Includes/Setup-Lab + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q1- Interacting with JSON data +-- MAGIC +-- MAGIC Review the nested data structures of the **profile** column in the **students** table created in the previous lab + +-- COMMAND ---------- + +SELECT email, profile +FROM students + +-- COMMAND ---------- + +DESCRIBE students + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Use the appropriate syntax to access the **last_name** and **city** information from the **profile** column + +-- COMMAND ---------- + +SELECT email, ______________ AS student_surname, ______________ AS student_city +FROM students + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q2- Higher Order Functions +-- MAGIC +-- MAGIC Review the array column **courses** in the **enrollments** table created in the previous lab + +-- COMMAND ---------- + +SELECT enroll_id, courses +FROM enrollments + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Filter this array column to keep only course elements having subtotal greater than 40 + +-- COMMAND ---------- + +SELECT + enroll_id, + courses, + ______________ AS large_totals +FROM enrollments + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q3- SQL UDFs + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Define a UDF function named **get_letter_grade** that takes one parameter named **gpa** of type DOUBLE. It returns the corresponding letter grade as indicated in the following table: +-- MAGIC +-- MAGIC +-- MAGIC +-- MAGIC | GPA (4.0 Scale) | Grade Letter | +-- MAGIC |---------|-----------| +-- MAGIC | 3.50 - 4.0 | A | +-- MAGIC | 2.75 - 3.44 | B | +-- MAGIC | 2.0 - 2.74 | C | +-- MAGIC | 0.0 - 1.99 | F | + +-- COMMAND ---------- + +-------------------- + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Let's apply the above UDF on the **students** table created in the previous lab +-- MAGIC +-- MAGIC Fill in the below query to call the defined UDF on the **gpa** column + +-- COMMAND ---------- + +SELECT student_id, gpa, _______________ as letter_grade +FROM students diff --git a/Labs/3- Incremental Data Processing/3.1L - Spark Structured Streaming.py b/Labs/3- Incremental Data Processing/3.1L - Spark Structured Streaming.py new file mode 100644 index 0000000..1f7ee52 --- /dev/null +++ b/Labs/3- Incremental Data Processing/3.1L - Spark Structured Streaming.py @@ -0,0 +1,113 @@ +# Databricks notebook source +# MAGIC %md +# MAGIC +# MAGIC ## Lab: Spark Structured Streaming + +# COMMAND ---------- + +# MAGIC %md-sandbox +# MAGIC +# MAGIC
+# MAGIC School Schema +# MAGIC
+ +# COMMAND ---------- + +# MAGIC %md +# MAGIC Run the following cell to setup the lab environment + +# COMMAND ---------- + +# MAGIC %run ../Includes/Setup-Lab + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q1- Auto Loader +# MAGIC +# MAGIC Use Auto Loader to incrementally load enrollments json files from the directory **{dataset_school}/enrollments-json-raw** into a streaming view called **`enrollments_tmp_vw`** +# MAGIC + +# COMMAND ---------- + +dataset_source = f"{dataset_school}/enrollments-json-raw" +schema_location = "dbfs:/mnt/DE-Associate/checkpoints/school/enrollments_stats" + + +(spark + .readStream + .___________________ + .___________________ + .____________________ + .load(dataset_source) + .createOrReplaceTempView("enrollments_tmp_vw")) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q2 - Calculating aggregations on streaming data +# MAGIC +# MAGIC Using CTAS syntax, define a new streaming view against **`enrollments_tmp_vw`** to count the number of enrollments per **`student_id`**. Name the aggregated field: **`enrollments_counts`** + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC +# MAGIC CREATE OR REPLACE TEMPORARY VIEW enrollments_per_student_tmp_vw AS +# MAGIC SELECT ___________________ +# MAGIC + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q3 - Writing stream data +# MAGIC +# MAGIC Stream the aggregated data from the **`enrollments_per_student_tmp_vw`** view to a Delta table called **`enrollments_stats`**. + +# COMMAND ---------- + +checkpoint_path = "dbfs:/mnt/DE-Associate/checkpoints/school/enrollments_stats" + +query = (spark._________________ + ._________________ + ._________________ + ._________________ + ._________________ + ) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC +# MAGIC Run the below cell to ensure data was written as expected in the **enrollments_stats** table + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC SELECT * FROM enrollments_stats + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Run the below cell to land a new json file of enrollments data + +# COMMAND ---------- + +load_new_json_data() + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Verify that the statistics have been updated in the table **enrollments_stats** + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC SELECT * FROM enrollments_stats + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q4 - Canceling streaming query +# MAGIC +# MAGIC Finally, cancel the above streaming query diff --git a/Labs/3- Incremental Data Processing/3.2L - Multi-Hop Architecture.py b/Labs/3- Incremental Data Processing/3.2L - Multi-Hop Architecture.py new file mode 100644 index 0000000..385331f --- /dev/null +++ b/Labs/3- Incremental Data Processing/3.2L - Multi-Hop Architecture.py @@ -0,0 +1,179 @@ +# Databricks notebook source +# MAGIC %md +# MAGIC +# MAGIC ## Lab: Multi-Hop Architecture + +# COMMAND ---------- + +# MAGIC %md-sandbox +# MAGIC +# MAGIC
+# MAGIC School Schema +# MAGIC
+ +# COMMAND ---------- + +# MAGIC %md +# MAGIC Run the following cell to setup the lab environment + +# COMMAND ---------- + +# MAGIC %run ../Includes/Setup-Lab + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q1- Declaring Bronze Table +# MAGIC +# MAGIC Use Auto Loader to incrementally load enrollments json files from the directory **{dataset_school}/enrollments-json-raw** to a Delta table called **`bronze`** +# MAGIC + +# COMMAND ---------- + +dataset_source = f"{dataset_school}/enrollments-json-raw" +bronze_checkpoint_path = "dbfs:/mnt/DE-Associate/checkpoints/school/bronze" +schema_location = bronze_checkpoint_path + +(spark.readStream + .___________________ + .___________________ + .___________________ + .load(dataset_source) + .writeStream + .___________________ + .___________________ + .table("bronze") +) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Create a streaming temporary view **bronze_tmp** from the bronze table in order to perform transformations using SQL. + +# COMMAND ---------- + +(spark + .readStream + .table("bronze") + .___________________("bronze_tmp")) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q2 - Data Cleansing & Enrichment +# MAGIC +# MAGIC Using CTAS syntax, define a new streaming view **`bronze_cleaned_tmp`** against **`bronze_tmp`** that does the following: +# MAGIC * Remove records with **quantity** of 0 item +# MAGIC * Add a column called **`processing_time`** containing the current timestamp using the **current_timestamp()** function + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC CREATE OR REPLACE TEMPORARY VIEW bronze_cleaned_tmp AS +# MAGIC SELECT ___________________ +# MAGIC + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q3 - Declaring Silver Table +# MAGIC +# MAGIC Stream the data from **`bronze_cleaned_tmp`** to a table called **`silver`**. + +# COMMAND ---------- + +silver_checkpoint_path = "dbfs:/mnt/DE-Associate/checkpoints/school/silver" + +(spark.table("bronze_cleaned_tmp") + .___________________ + .___________________ + .___________________ + .table("silver") +) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Let's create a streaming temporary view from the silver table in order to perform business-level aggregation using SQL + +# COMMAND ---------- + +(spark + .readStream + .table("silver") + .createOrReplaceTempView("silver_tmp")) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q4- Declaring Gold Table +# MAGIC +# MAGIC Using CTAS syntax, define a new streaming view **`enrollments_per_student_tmp_vw`** against **`silver_tmp`** to count the number of enrollments per **`student`**. Name the aggregated field: **`enrollments_count`** + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC CREATE OR REPLACE TEMPORARY VIEW enrollments_per_student_tmp_vw AS +# MAGIC SELECT ___________________ +# MAGIC + +# COMMAND ---------- + +# MAGIC %md +# MAGIC +# MAGIC Stream the aggregated data from the **`enrollments_per_student_tmp_vw`** view to a Delta table called **`gold_enrollments_stats`**. + +# COMMAND ---------- + +gold_checkpoint_path = "dbfs:/mnt/DE-Associate/checkpoints/school/gold_enrollments_stats" + +query = (spark.table("enrollments_per_student_tmp_vw") + .writeStream + .___________________ + .___________________ + .table("gold_enrollments_stats")) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Query the data in the **`gold_enrollments_stats`** table to ensure data was written as expected. + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC SELECT * FROM gold_enrollments_stats + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Run the below cell to land new a json file of enrollments data + +# COMMAND ---------- + +load_new_json_data() + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Wait for the new data to be propagated, and then run the below query to verify that the statistics have been updated in the table **gold_enrollments_stats** + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC SELECT * FROM gold_enrollments_stats + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Finally, run the below cell for canceling the above streaming queries + +# COMMAND ---------- + +for s in spark.streams.active: + print("Stopping stream: " + s.id) + s.stop() + s.awaitTermination() + +# COMMAND ---------- + + diff --git a/Labs/4- Production Pipelines/4.1L - Delta Live Tables.sql b/Labs/4- Production Pipelines/4.1L - Delta Live Tables.sql new file mode 100644 index 0000000..8825b4c --- /dev/null +++ b/Labs/4- Production Pipelines/4.1L - Delta Live Tables.sql @@ -0,0 +1,119 @@ +-- Databricks notebook source +-- MAGIC %md +-- MAGIC +-- MAGIC ## Lab: implementing a DLT pipeline +-- MAGIC +-- MAGIC > This notebook is **not intended** to be executed interactively, but rather to be deployed as a DLT pipeline from the **workflows** tab +-- MAGIC +-- MAGIC +-- MAGIC * Help: DLT syntax documentation. + +-- COMMAND ---------- + +-- MAGIC %md-sandbox +-- MAGIC +-- MAGIC
+-- MAGIC School Schema +-- MAGIC
+ +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q1- Declaring Bronze Tables +-- MAGIC +-- MAGIC Declare a streaming live table, **`enrollments_bronze`**, that ingests JSON data incrementally using Auto Loader from the directory **"${datasets_path}/enrollments-json-raw"** + +-- COMMAND ---------- + +CREATE ____________________ +AS SELECT * FROM cloud_files("${dataset_path}/enrollments-json-raw", "json", + map("cloudFiles.inferColumnTypes", "true")) + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Declare a live table, **`students_bronze`**, that load data directly from JSON files in the directory **"${datasets_path}/students-json"** + +-- COMMAND ---------- + +CREATE ____________________ +AS SELECT * FROM json.`${dataset_path}/students-json` + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q2 - Declaring Silver Table +-- MAGIC +-- MAGIC Declare a streaming live table, **`enrollments_cleaned`**, that: +-- MAGIC +-- MAGIC 1. Enrich the **enrollments_bronze** data through an inner join with the **`students_bronze`** table on the common **`student_id`** field to obtain the student's country +-- MAGIC 1. Implement quality control by applying a constraint to drop records with a null **`email`** +-- MAGIC 1. The table will have the following schema: +-- MAGIC +-- MAGIC | Field | Type | +-- MAGIC | --- | --- | +-- MAGIC | **`enroll_id`** | **`STRING`** | +-- MAGIC | **`total`** | **`DOUBLE`** | +-- MAGIC | **`email`** | **`STRING`** | +-- MAGIC | **`country`** | **`STRING`** | +-- MAGIC + +-- COMMAND ---------- + +CREATE OR REFRESH STREAMING LIVE TABLE enrollments_cleaned + (CONSTRAINT ____________________ ON VIOLATION ____________________ ) +AS SELECT enroll_id, total, email, profile:address:country as country + FROM ____________________ n + INNER ____________________ s + ON n.student_id = s.student_id + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC ### Q3- Declaring Gold Table +-- MAGIC +-- MAGIC Declare a live table, **`course_sales_per_country`** against **`enrollments_cleaned`** that calculate per **`country`** the following: +-- MAGIC * **`enrollments_count`**: the number of enrollments +-- MAGIC * **`enrollments_amount`**: the sum of the total amount of enrollments +-- MAGIC +-- MAGIC Add a comment to the table: "Course Sales Per Country" + +-- COMMAND ---------- + +CREATE OR REFRESH LIVE TABLE course_sales_per_country + COMMENT ____________________ +AS SELECT ____________________ + + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC ### Q4- Deploying DLT pipeline +-- MAGIC +-- MAGIC From the **Workflows** button on the sidebar, under the **Delta Live Tables** tab, click **Create Pipeline** +-- MAGIC +-- MAGIC Configure the pipeline settings specified below: +-- MAGIC +-- MAGIC | Setting | Instructions | +-- MAGIC |--|--| +-- MAGIC | Pipeline name | School DLT | +-- MAGIC | Product edition | Choose **Advanced** | +-- MAGIC | Pipeline mode | Choose **Triggered** | +-- MAGIC | Source code | Use the navigator to select this current notebook (4.1L - Delta Live Tables) | +-- MAGIC | Storage location | dbfs:/mnt/DE-Associate/dlt/school | +-- MAGIC | Target schema | DE_Associate_School_DLT | +-- MAGIC | Cluster policy | Leave it **None**| +-- MAGIC | Cluster mode | Choose **Fixed size**| +-- MAGIC | Workers | Enter **0**| +-- MAGIC | Photon Acceleration | Leave it unchecked | +-- MAGIC | Advanced Configuration | Click **Add Configuration** and enter:
- Key: **dataset_path**
- Value: **dbfs:/mnt/DE-Associate/datasets/school** | +-- MAGIC | Channel | Choose **Current**| +-- MAGIC +-- MAGIC Finally, click **Create**. + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC ### Q5 - Run your Pipeline +-- MAGIC +-- MAGIC Select **Development** mode and Click **Start** to begin the update to your pipeline's tables diff --git a/Labs/4- Production Pipelines/4.2L - Jobs - Land New Data.py b/Labs/4- Production Pipelines/4.2L - Jobs - Land New Data.py new file mode 100644 index 0000000..e5f60c9 --- /dev/null +++ b/Labs/4- Production Pipelines/4.2L - Jobs - Land New Data.py @@ -0,0 +1,91 @@ +# Databricks notebook source +# MAGIC %md +# MAGIC +# MAGIC ## Lab: Creating a multi-task job +# MAGIC +# MAGIC In this lab, we will create a job that has 2 tasks: +# MAGIC 1. The current notebook that lands a new batch of data in the lab dataset directory +# MAGIC 1. The Delta Live Table pipeline created in the previous lab to processes this data +# MAGIC +# MAGIC * Help: Databricks Jobs documentation. + +# COMMAND ---------- + +# MAGIC %md-sandbox +# MAGIC +# MAGIC
+# MAGIC +# MAGIC
+ +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q1- Configuring Task 1 - Land New Data +# MAGIC +# MAGIC +# MAGIC From the **Workflows** button on the sidebar, under the **Jobs** tab, click the **Create Job** button. +# MAGIC +# MAGIC
+# MAGIC +# MAGIC 1. Set the job name in the top-left of the screen to **School Job** +# MAGIC 1. Configure the first task as specified below: +# MAGIC | Setting | Value | +# MAGIC |--|--| +# MAGIC | Task name | Enter **Land New Data** | +# MAGIC | Type | Choose **Notebook** | +# MAGIC | Source | Choose **Workspace** | +# MAGIC | Path | Use the navigator to choose the current notebook (4.2L - Jobs - Land New Data) | +# MAGIC | Cluster | Select your cluster from the dropdown, under **Existing All Purpose Clusters** | +# MAGIC +# MAGIC +# MAGIC
+# MAGIC +# MAGIC 3. Click the **Create** button + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q2- Configuring Task 2 - DLT pipeline +# MAGIC +# MAGIC
+# MAGIC +# MAGIC 1. Click the add button (**+**) to add a new **Delta Live Tables pipeline** task +# MAGIC 1. Configure the task: +# MAGIC +# MAGIC | Setting | Value | +# MAGIC |--|--| +# MAGIC | Task name | Enter **DLT pipeline** | +# MAGIC | Type | Choose **Delta Live Tables pipeline** | +# MAGIC | Pipeline | Choose the DLT pipeline created in the previous lab | +# MAGIC | Depends on | Choose **Land New Data**, which is the previous task we defined above | +# MAGIC +# MAGIC
+# MAGIC +# MAGIC 3. Click the **Create task** button + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q3- Run the job +# MAGIC +# MAGIC Click the **Run now** button in the top right to run this job. From the **Runs** tab, check your job run + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q4- Review the finished job +# MAGIC +# MAGIC Once all tasks completed successfully, review the contents of each task to verify its result + +# COMMAND ---------- + +# MAGIC %md +# MAGIC > **Note**: The below cells are to be run as part of the **Task 1** to land new batch of data in the dataset directory + +# COMMAND ---------- + +# MAGIC %run ../Includes/Setup-Lab + +# COMMAND ---------- + +load_new_json_data() diff --git a/Labs/4- Production Pipelines/4.3L - Databricks SQL.sql b/Labs/4- Production Pipelines/4.3L - Databricks SQL.sql new file mode 100644 index 0000000..f4406d5 --- /dev/null +++ b/Labs/4- Production Pipelines/4.3L - Databricks SQL.sql @@ -0,0 +1,121 @@ +-- Databricks notebook source +-- MAGIC %md +-- MAGIC +-- MAGIC ## Lab: Design a Dashboard with DBSQL +-- MAGIC +-- MAGIC In this lab, we will design a dashboard in DBSQL that has 2 graphs: +-- MAGIC 1. Bar graph that shows the number of students per country +-- MAGIC 1. Line graph that shows the daily enrollments amount +-- MAGIC +-- MAGIC * Help: Databricks SQL documentation. + +-- COMMAND ---------- + +-- MAGIC %md-sandbox +-- MAGIC +-- MAGIC
+-- MAGIC +-- MAGIC
+ +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q1 - Working with queries in SQL Editor +-- MAGIC +-- MAGIC Run the the below query in **SQL Editor** in Databricks SQL, and then save it with the name **Student Counts** + +-- COMMAND ---------- + +SELECT profile:address:country as country, count(student_id) AS students_count +FROM de_associate_school.students +GROUP BY profile:address:country +ORDER BY students_count DESC +LIMIT 10 + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q2 - Creating a Bar Graph Visualization +-- MAGIC +-- MAGIC Create a bar graph that shows the number of students per country +-- MAGIC +-- MAGIC
+-- MAGIC +-- MAGIC +-- MAGIC ##### Anwser: +-- MAGIC Steps: +-- MAGIC 1. Click the Add butoon (**+**) next to the results tab, and select **Visualization** from the dialog box +-- MAGIC 1. Select **`Bar`** for the **Visualization Type** +-- MAGIC 1. Set **`country`** for the **X Column** +-- MAGIC 1. Under **Y columns** click **Add column**, and set it to **`students_count`** +-- MAGIC 1. Click **Save** +-- MAGIC 1. Finally, set the title of the graph to **Student Counts Viz** + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q3 - Creating a New Dashboard +-- MAGIC +-- MAGIC Add the above graph to a new dashboard named **Students Statistics** +-- MAGIC +-- MAGIC ##### Anwser: +-- MAGIC +-- MAGIC Steps: +-- MAGIC 1. Click the three vertical dots button at the top of the graph and select **Add to Dashboard**. +-- MAGIC 1. Click the **Create new dashboard** option +-- MAGIC 1. Name your dashboard **Students Statistics** +-- MAGIC 1. Click **Save** +-- MAGIC 1. With the new dashboard selected as the target, click **OK** to add your visualization + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q4 - Creating a Line Plot Visualization +-- MAGIC +-- MAGIC 1. Run the the below query in a new query tab in the **SQL Editor**, and then save it with the name **Daily Sales** + +-- COMMAND ---------- + +SELECT cast(from_unixtime(enroll_timestamp, 'yyyy-MM-dd HH:mm:ss') AS date) enroll_timestamp, + sum(total) AS enrollments_amount +FROM de_associate_school.enrollments n +INNER JOIN de_associate_school.students s ON s.student_id = n.student_id +GROUP BY enroll_timestamp + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC 2. Create a Line Plot Visualization that shows the daily enrollments amount +-- MAGIC +-- MAGIC +-- MAGIC
+-- MAGIC +-- MAGIC +-- MAGIC +-- MAGIC ##### Anwser: +-- MAGIC +-- MAGIC Steps: +-- MAGIC 1. Click the **Add Visualization** button +-- MAGIC 1. Select **`Line`** for the **Visualization Type** +-- MAGIC 1. Set **`enroll_timestamp`** for the **X Column** +-- MAGIC 1. Under **Y columns** click **Add column**, and set it to **`enrollments_amount`** +-- MAGIC 1. Click **Save** +-- MAGIC 1. Finally, set the title of the graph to **Daily Sales Viz** +-- MAGIC 1. Click the three vertical dots button at the top of the graph and select **Add to Dashboard**. +-- MAGIC 1. Select the dashboard **Students Statistics** created above +-- MAGIC 1. Click **OK** to add your visualization + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q5 - Review your Dashboard +-- MAGIC +-- MAGIC Open your Dashboard and refresh its underlaying data +-- MAGIC +-- MAGIC ##### Anwser: +-- MAGIC +-- MAGIC Steps: +-- MAGIC 1. Click on the **Dashboards** button on left side bar +-- MAGIC 1. Find the dashboard **Students Statistics** created earlier. Click to open it +-- MAGIC 1. Click the **Refresh** button to update your dashboard diff --git a/Labs/Includes/Setup-Lab.py b/Labs/Includes/Setup-Lab.py new file mode 100644 index 0000000..d2121f3 --- /dev/null +++ b/Labs/Includes/Setup-Lab.py @@ -0,0 +1,142 @@ +# Databricks notebook source +data_source_uri = "wasbs://course-resources@dalhussein.blob.core.windows.net/datasets/school/v1/" +dataset_school = 'dbfs:/mnt/DE-Associate/datasets/school' +checkpoint_path = 'dbfs:/mnt/DE-Associate/checkpoints/school' +dlt_path = 'dbfs:/mnt/DE-Associate/dlt/school' +db_name = 'DE_Associate_School' +dlt_db_name = 'DE_Associate_School_DLT' +spark.conf.set(f"dataset.school", dataset_school) + +# COMMAND ---------- + +def clean_up(): + print("Removing Checkpoints ...") + dbutils.fs.rm(checkpoint_path, True) + print("Removing DLT storage location ...") + dbutils.fs.rm(dlt_path, True) + print("Dropping Database ...") + spark.sql(f"DROP SCHEMA IF EXISTS {db_name} CASCADE") + print("Dropping DLT database ...") + spark.sql(f"DROP SCHEMA IF EXISTS {dlt_db_name} CASCADE") + print("Removing Dataset ...") + dbutils.fs.rm(dataset_school, True) + print("Done") + +# COMMAND ---------- + +try: + clean = int(dbutils.widgets.get("clean")) +except: + clean = 0 + +if clean: + clean_up() + +# COMMAND ---------- + +def path_exists(path): + try: + dbutils.fs.ls(path) + return True + except Exception as e: + if 'java.io.FileNotFoundException' in str(e): + return False + else: + raise + +# COMMAND ---------- + +def download_dataset(source, target): + files = dbutils.fs.ls(source) + + for f in files: + source_path = f"{source}/{f.name}" + target_path = f"{target}/{f.name}" + if not path_exists(target_path): + print(f"Copying {f.name} ...") + dbutils.fs.cp(source_path, target_path, True) + +# COMMAND ---------- + +def get_index(dir): + files = dbutils.fs.ls(dir) + index = 0 + if files: + file = max(files).name + index = int(file.rsplit('.', maxsplit=1)[0]) + return index+1 + +# COMMAND ---------- + +# Structured Streaming +streaming_dir = f"{dataset_school}/enrollments-streaming" +raw_dir = f"{dataset_school}/enrollments-raw" + +def load_file(current_index): + latest_file = f"{str(current_index).zfill(2)}.parquet" + print(f"Loading {latest_file} file to the school dataset") + dbutils.fs.cp(f"{streaming_dir}/{latest_file}", f"{raw_dir}/{latest_file}") + + +def load_new_data(all=False): + index = get_index(raw_dir) + if index >= 10: + print("No more data to load\n") + + elif all == True: + while index <= 10: + load_file(index) + index += 1 + else: + load_file(index) + index += 1 + +# COMMAND ---------- + +# DLT +streaming_enrollments_dir = f"{dataset_school}/enrollments-json-streaming" +streaming_courses_dir = f"{dataset_school}/courses-streaming" + +raw_enrollments_dir = f"{dataset_school}/enrollments-json-raw" +raw_courses_dir = f"{dataset_school}/courses-cdc" + +def load_json_file(current_index): + latest_file = f"{str(current_index).zfill(2)}.json" + print(f"Loading {latest_file} enrollments file to the school dataset") + dbutils.fs.cp(f"{streaming_enrollments_dir}/{latest_file}", f"{raw_enrollments_dir}/{latest_file}") + #print(f"Loading {latest_file} courses file to the school dataset") + #dbutils.fs.cp(f"{streaming_courses_dir}/{latest_file}", f"{raw_courses_dir}/{latest_file}") + + +def load_new_json_data(all=False): + index = get_index(raw_enrollments_dir) + if index >= 10: + print("No more data to load\n") + + elif all == True: + while index <= 10: + load_json_file(index) + index += 1 + else: + load_json_file(index) + index += 1 + +# COMMAND ---------- + + + +# COMMAND ---------- + +download_dataset(data_source_uri, dataset_school) + +spark.sql(f"CREATE SCHEMA IF NOT EXISTS {db_name}") +spark.sql(f"USE {db_name}") +print(f"Schema for the hands-on labs: {db_name}") + +# COMMAND ---------- + + + +# COMMAND ---------- + + diff --git a/Labs/Includes/images/bar_graph.png b/Labs/Includes/images/bar_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..013c7c2c2ec9c4533bd72458c6467ef8cc851c15 GIT binary patch literal 28513 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 literal 0 HcmV?d00001 diff --git a/Labs/Includes/images/cluster_par1.png b/Labs/Includes/images/cluster_par1.png new file mode 100644 index 0000000000000000000000000000000000000000..801f94ed981c485f5e20af30f9bbd08522def493 GIT binary patch literal 93404 zcmZ^L1ymeO);1R02`<4Q*x(Xef=iI#4DRj@!3iGRT|%(nHt68)?(XjT^V)uU_TPo( zbX8xi+jVN{*4&5hU*siF5D5?=ARthrB*l~0?}j3&~4r$j?Q`O0t-81{`%^RYO1FC~+8p8M zcaH-N_Ope6W!7n4Ya4!j3#);#x|E5W90c848y*4*5)%UYtp)k^3lU-t0rO`Y0)qPO z4gmoj8w>&WcE^1C`;ray4;2QK4gF6Wa^??4VP#P%skghbp@XrpjiZ^Z(-h0cM+gWg z0do~~Cv`d5PlmSEO!`K)2F6To)^>l0K=8SJdTUx6JL!|USzFmSesbd{|C8g>Tl@_) zb!Bp8W3qKH1+eh&@Bo-u0j#WyZybz{?lw;PZj3gL6n`oCM~|4XqoISjos+q(4e1|x z^$l#Do%qSg|1k8gpTGPxb~FD!OE!*w59@7!fIlbz7A9uEe-m>uH~Al8e^CAs`*U1> zndAFI*{3h&ZpKy`V&>LwQGIhwfSrq(?@u%TALaiX{Y&zzqp^dit@WFrlfeJImcNDn zo%o-Ef0|VPKa(u1EFAxC^WRASCi=%1J}EeuznRnjBZvYle1QM&+28zpfIlMqZxR3N zb^iJE?R^R$@&W!eHv|xkgF%825JC`AV!|qJkVhHsyxyzfb_39t${Juopt_fr%goHj zqc?!Gz`Xd}?y%-&T-wiJyzg(pVLPBw-v+`!#R|pu{h+ePT%*o2}UH$dho`evos2+LHQRPERlKH`PzBo$)tU`*j=yf|nNzsf)4Xv3$A%%} zK!AJ--mFg-|GS@)0`ab5%}t=l`~ zUi8XDCv&Bc(C0OIkRYUoYm1<0x!*rBl#nlpzLF11E@o6QACCw%u&!&DqRt1r4F52A zwhsU0?7{A+(fI$1tslCGp4k>xEPZ-WUyyCYWJ zB-QdpZO%CPyafmb1@dMBk3C(qTeZr#pTWDyiS_Y8=M~anZ}0p|C5^ zBe64+yvN~nvFiUp5n?oyEEP*BWyR@!e__nyvGwz4v0mY1xefRI^ctrm=^RG(8uk%t zf3I53)XB#JwO!O$K6A|d`T91ou=k3=x33x_>AV0zv^@R zy@AYpEET0%-DnrTF(SXF{?@~ATJXGo!Qj?IWSWl-)!^H(|8Eux#bA94RjHH3m&zHf z;kw3m=^4Vmc(^7k{#sHf{CA8qKsZkZDO2tKes zx#EnFQy^g3{+<+DWa1&NXtV)z9Ec$B!{&JL7eqYJhnQ1o#%9S#i&Hk4St(EH-F=-m z;l1ag3qG?~{1V7{k@M9X)+U{gVZAdbENtvt>hum?j8@uBgw+C2Lf##*V3@jPdYDEyt+>cF;-{I`yCe$mCkK1QstefQM*FH*?z(BOrsj4hCnD#oPRe!9P8^}4g8h;aYdg@Fm*0ptG} zwLc=uclE~$eaCFQM)Re`r(bc8vV2htNI}hd`rzQp zQw#rXhek)Eq|;{S1V>zebQ;rgzEs)`tI?F%Wry9Pt>?ggHOa)+po!cd#5?y7m^9L~ z?=H80T$xYc*>VY1kV4>?saK46E?2zFuE{K(qkTJoY5p3|1XQW=N&WccAVKN_?O*~O z2JPXFbPLTF;SaHFg)+O(vhq}atVYN!_;4gr*BWC$=}9&Dx?>KZvvAqqF5^-K;Pr>Ja;a<+JJ5--%XCGS?l(SXuO zg|aaN+XIr^*q~hT@8sP`xa>f2f#W<5e(|e4aXs@}XJyL?iPskUdjqKi*2ef>sxqpj z8kSv*SuO|NgGsFR4-Eavzd-q_Tx;iG*hiJCywn%*CxDwU1HD#tCcDKlu}kImkKw8W2!wboRYDW(pwW3kQzTlQYJ9zO=Nv5s(vBvD(cMH-oEcI=ugtU^W=rB zC7pA%nVi@*Opv&g$d}8Y%jP^a<}bbyE)yaNWDns(V(MM|!2q)p|1p+Feuo<&@DtQ{ z?&pLn^GVR<(XG^zoBttKHiLYr`c8px6{XY^7TBAfSO6QodoktDYgjb$ z>3WS>EZ2=><>0|*v+-O{HpbMh+af!EBKca&Ssbfy9A=m%*F)+ylxI2Js^BE6`KrN~ z4$-Z}@>L5@=JbXj$2gl+7q&@ev}4iuZdPIa@7MU;YUSEh`e4|3kbCvKQ8yxXzT9D5 ztU3jqUF&p-mKq{1lhsa{Mzy%h>3rE{kjNDeCh#=n2Zg2V$4HnJO!#;rpjp?>Xohl( zrTO8=GEh$x!eX-YyY+$$itT_RsAj2=&sWL`zuiRC6p9EK#(RAuWi!!eUzi;Bzz414z)t1?PfqcnCm8N2$ z^Q(Qf{v`U4$*L%}&E9bOeWjwrB)atDr9=Ga6ZIYfg;eezZ>+MJg1$`6w;z5}KkgIi zyUkY{jT^7@`H4zwt@cK@=&W3vg^@6(x-)mX+lhdMiI+onwry$PnVFI4u5$Rgkh42zzi>P zP8Gw4J=}iyq)i=3M4g}_mRW6AsnBeYmMQ4U)E_U9!EQCLNh0WDP*`s>qms(`6Cn8V zsZW)O5~V8|R{;^Xk0#D!=pnl~=uCghFpbqRs^Yd8O>;cjYqMk9&36k=!y6O+J=AwB z>KLEZ>qL6B3Ic^!o7GpNx;QR1dGq=FAAD|iUzCZTD3nb{y-$yQHR==HD;>8FIE29{ zz-vNI+k~70#z<3>g=U!45}NQ9$t%gr(o6ww&7I+_qEX}(!QPhU#P$rOY$3>xn)yGk z_U1($1zR`?1Mq%u%4ufIEW21)PM3bHH0ZujGa~{PV)y9^)mhDx-=40bEfFJ9St`Vk z=A;WaE~G2mG^f)jkgzpbCe3_Vs(BX18B{xHchl6V}KzlH&2Y z3YEnZ1cI5sk^!(N`AP-SRo=a*?)Mu(rH_Yz{tWv1t&t3^mx=WlgSlCeAVjGg|98Vo zWNn&w&PwNJXUr?suL3SBK(voU4Ifsp;NN!~PM0K6>ng`RT(4k&EYvE<>upwVav2o9 zRAlKJ()2yZX~{B{6vK%rUt8U&fYnex@KU$1V?1=^^$vjqcZTE7l}#l#ADqA9_0gWp zUnCb5n@Oj;vBJczitLWm&kF`pE$IIM&;G-1v`LJ0+ zYP|R@9GbY3)?5Cu!2Ej+13yQbu0a1OXjhOGyRIkHBq5HsV*( zg*80n)74qfc%@0rLt)yG4rnT31LQBUSoPI%>$Gff*yHR=dYPou{Q0i*<~!v&6CFPY zSn$n{r`462(pB0PpOaTqt$07zEl~evfmz3s$+L4BXHpbnn#^D!$~zGvS|hR0!RL5}-7Wm=q-NQWN;jZ?ea2noW@*^8G}fxYJ2 zTPbX;`U|osS$yFdu^JWOJCTHDy@*oV3)h6K<`1%I-#*>nt{0*@Uu!?^o?+Y{-&UIF zL|$h?{6N_*8ciu`oO!`IU0!+!bi2H^*LF7DoE!;Uyic@Q~Ac?p=Y6`Pz zA6Mk@aYMNU(el1-_|-IO^UA($@Dz)>|3=4CmSXSnR{{(P#2S~FV~$Saj;8>ZTQBkK zA==8PVx_`(;^x~ue!FtU3Sg>Aal8(HfA%g<;LJVUiJ|ZKefycNFN-q?OLiNAJ}j@c zqxF;}cFs!QaJ}8U!{RexP~Kiz?TW{8_9T=O5OVzFY|)dOM4G@m$Cl`NPGW-DlpRw- zF4^o(Pb2HV-~A@|x<(Pufji(`>JXIl8IJ$8@+r^vL;sLFlJ)==94EH|xV@5NdbU=b-_O$OD%WBu8QsmvcUie*D9|`e2TS6H7^sJw!x`Zz{>6Q(+49|uM zr5g3ZUY}MteyPOLZ4d7AQ&(N^GJ$&{CLd!@Bk{6E=+D6SsOJ~qsaa{y+C}>NlQlnV zIP&R}0Q6t!7!jhS?>~Eb)0P;`yd_>DBWkf53=1F4kEaUnP&f_d`j@ ze#X@Pu%Bf;tuR3yb>Pjm3H^;_ljXKTl-lB_O20Bq5B|^XXJcq$T-` zd9ucuCPmN~^u%cbI-09iW7>;^&czLk;M8e8lmqYfm`Go9`qS1+e|R|mtx_-k6~O=a z%xo7bHWQ8!9FD!wkMS%V*gZjrMId{FqpPC~E|Fnm@TmEzBuQAI@7x&0|B%e5(HFp} zeAsHVZGr#EBb}6M;ff{CNmpRjL$^+M+7rcAvr=8PT!*IZXVS1`y*IUMFJQM>d{>1Xm>;CpJ`vs~J9oFxvNq|%YV)?gKje#$oz@zr9fgufaToKnD24g>nJs64jJM(lUCvowL;3*o#C`u z&d~yf1?A1Ib^b3 zXQD58VFPA;x5VsS@bGxAO`NB2ktSso?Ae0$RcaWzMGk;9wi4NU>JFZZ~95+plcmF*o@v~nhWR>_V? zUlmPT#IxGmn95Q)D}#ziKV&Ohci!J?j@Fx?w8ri<>4bjj(^VCYrtuJHDQtn{C{B79R&W>m&>=LpmZW*%{cA6{;K9pB0YSNe@1tz+=q5ggWD zw0N9kPIuLDT;Fn)yqG+^_lR^}uP@W7C+Weex2-r4r~UjQ03Rdj^CHD*GjDNm!^3-m zlNO*EJ+taXk4D1hG%zv$;z)u30}BZfI$A6VY259N!k4Lt14P6`9@Z$$Pdqq~Mp@0b zPR`10b_);6ukJZU?%F0*Aeliry;P~{mT#m4`X`Nc0e=ZW0Z_ecmRqT2uZ+JGMG
lC=rh?8O^!VY@l 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 literal 0 HcmV?d00001 diff --git a/Labs/Includes/images/cluster_par3.png b/Labs/Includes/images/cluster_par3.png new file mode 100644 index 0000000000000000000000000000000000000000..bf77236311da758ca2a681f1b8f1ef1dc74658f2 GIT binary patch literal 87154 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 literal 0 HcmV?d00001 diff --git a/Labs/Includes/images/dashboard.png b/Labs/Includes/images/dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..e8a8d2ca32ed0b019ba24bd38f2024756df25417 GIT binary patch literal 69809 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 literal 0 HcmV?d00001 diff --git a/Labs/Includes/images/line_graph.png b/Labs/Includes/images/line_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..901d4f9ff27493009ffa710c28a305f99c3b92a0 GIT binary patch literal 39191 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 literal 0 HcmV?d00001 diff --git a/Labs/Includes/images/school_job.png b/Labs/Includes/images/school_job.png new file mode 100644 index 0000000000000000000000000000000000000000..66179b25c0cb2df7e63f34aeb84ad059cd5c524c GIT binary patch literal 26213 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 ZsG?x(4W^K8O%&iq{<*SDiIjo={{Z5dYzP1V literal 0 HcmV?d00001 diff --git a/Labs/Includes/images/school_schema.png b/Labs/Includes/images/school_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..2945a2f0a8edf7464d5f67267c800623164177cc GIT binary patch literal 72334 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 +# MAGIC +# MAGIC + +# COMMAND ---------- + +# MAGIC %md +# MAGIC 3- On top, click on the default name to change it. Name your cluster as **Demo Cluster** +# MAGIC +# MAGIC 4- Select **Single node** cluster +# MAGIC + +# COMMAND ---------- + +# MAGIC %md-sandbox +# MAGIC +# MAGIC
+# MAGIC +# MAGIC
+ +# COMMAND ---------- + +# MAGIC %md +# MAGIC 5- Select the latest Databricks runtime version with LTS (Long Term Support) +# MAGIC +# MAGIC 6- Uncheck the option for the **Use Photon Acceleration** +# MAGIC +# MAGIC 7- Select a Node type of 4 cores +# MAGIC +# MAGIC 8- Set the auto termination of the cluster to 30 minutes +# MAGIC +# MAGIC 9- Lastly, click **Create compute**. +# MAGIC + +# COMMAND ---------- + +# MAGIC %md-sandbox +# MAGIC +# MAGIC
+# MAGIC +# MAGIC
diff --git a/Labs/Solutions/1- Databricks Lakehouse Platform/1.1L Solution - Notebook Basics.py b/Labs/Solutions/1- Databricks Lakehouse Platform/1.1L Solution - Notebook Basics.py new file mode 100644 index 0000000..82424c2 --- /dev/null +++ b/Labs/Solutions/1- Databricks Lakehouse Platform/1.1L Solution - Notebook Basics.py @@ -0,0 +1,112 @@ +# Databricks notebook source +# MAGIC %md +# MAGIC +# MAGIC ## Lab Solution: Get started with Databricks Notebook +# MAGIC + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q1 - Renaming the Notebook +# MAGIC +# MAGIC Change the name of the current notebook to "1.1L - My first lab" +# MAGIC +# MAGIC **Anwser:** to change the name of the notebook, click on the name at the top of this page, then make changes to the name + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q2 - Attaching a cluster +# MAGIC +# MAGIC Attach the cluster you created previously to this notebook +# MAGIC +# MAGIC **Anwser:** to attach a cluster to this notebook, click the dropdown near the top-right corner of this page. Select your cluster. + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q3 - Execute a Python code +# MAGIC +# MAGIC In the below cell, fill in the blank to print the result of adding the two variables x and y + +# COMMAND ---------- + +x = 5 +y = 10 +result = x + y + +# Answer +print(result) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q4 - Execute a SQL cell +# MAGIC +# MAGIC Change the language in the below cell to execute the SQL statement + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC SELECT 5 + 10 + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q5 - Create a Markdown Cell +# MAGIC +# MAGIC 1. Insert a new cell below this one +# MAGIC 1. In the new cell, add Markdown with a header and bullet points as shown in the following image +# MAGIC +# MAGIC
+# MAGIC +# MAGIC
+ +# COMMAND ---------- + +# MAGIC %md +# MAGIC +# MAGIC # Animals +# MAGIC +# MAGIC * Cats +# MAGIC * Dogs +# MAGIC * Birds + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q6 - Using %run command +# MAGIC +# MAGIC 1. Create a new Python notebook named **helper** in the current directory (i.e., in the **labs/1- Databricks Lakehouse Platform** folder) +# MAGIC 1. In the **helper** notebook, declare a variable called **my_country** and assign it a value of your country name. For example: +# MAGIC > my_country = "France" +# MAGIC 1. In the following cell, execute a %run command to include the **helper** notebook into this current notebook +# MAGIC > **Hint**: use a dot (**.**) to refer to the current directory + +# COMMAND ---------- + +# MAGIC %run ./helper + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Now, run the following cell to test that you are able to print the **my_country** variable + +# COMMAND ---------- + +print(my_country) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q7 - Functions definition +# MAGIC 1. In the **helper** notebook, define a Python function named **addition()** that print the sum of two numbers +# MAGIC 1. Execute again the above %run command to take the function definition into account +# MAGIC 1. Run the below cell to call the function + +# COMMAND ---------- + +num1 = 20 +num2 = 30 + +addition(num1, num2) diff --git a/Labs/Solutions/1- Databricks Lakehouse Platform/1.2L Solution - Delta Lake.sql b/Labs/Solutions/1- Databricks Lakehouse Platform/1.2L Solution - Delta Lake.sql new file mode 100644 index 0000000..496e923 --- /dev/null +++ b/Labs/Solutions/1- Databricks Lakehouse Platform/1.2L Solution - Delta Lake.sql @@ -0,0 +1,98 @@ +-- Databricks notebook source +-- MAGIC %md +-- MAGIC +-- MAGIC ## Lab Solution: Delta Lake + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Creating a Delta Table +-- MAGIC +-- MAGIC Run the cell below to create the **persons** Delta Table, and apply some operations on it. + +-- COMMAND ---------- + +CREATE OR REPLACE TABLE persons + (id INT, name STRING, age INT); + +INSERT INTO persons +VALUES + (1, "Tom", 18), + (2, "Kumar", 25); + +INSERT INTO persons +VALUES + (3, "Ali", 50), + (4, "Sandra", 35); + +INSERT INTO persons +VALUES + (5, "Eric", 28), + (6, "Salma", 42); + +UPDATE persons +SET age = age + 10 +WHERE id = 1; + +DELETE FROM persons +WHERE name = "Eric"; + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q1 - Querying Delta Lake table +-- MAGIC +-- MAGIC Query the data in the **persons** table using **SELECT** statement + +-- COMMAND ---------- + +-- Answer +SELECT * FROM persons + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q2 - Checking table history +-- MAGIC +-- MAGIC Review the history of the table transactions using the **DESCRIBE HISTORY** command + +-- COMMAND ---------- + +-- Answer +DESCRIBE HISTORY persons + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q3- Checking table metadata +-- MAGIC +-- MAGIC Review the basic metadata information of the table using the **DESCRIBE DETAIL** command + +-- COMMAND ---------- + +--Answer +DESCRIBE DETAIL persons + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q4- Exploring table directory +-- MAGIC +-- MAGIC Explore the table directory using the **%fs** magic command. +-- MAGIC +-- MAGIC **Hint:** get the table location from the above metadata information + +-- COMMAND ---------- + +-- MAGIC %fs ls 'dbfs:/user/hive/warehouse/persons' + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q5- Exploring the transactions log +-- MAGIC +-- MAGIC Explore the **_delta_log** subfolder in the table directory + +-- COMMAND ---------- + +-- MAGIC %fs ls 'dbfs:/user/hive/warehouse/persons/_delta_log' diff --git a/Labs/Solutions/1- Databricks Lakehouse Platform/1.3L Solution - Databases and Tables on Databricks.sql b/Labs/Solutions/1- Databricks Lakehouse Platform/1.3L Solution - Databases and Tables on Databricks.sql new file mode 100644 index 0000000..cc075ec --- /dev/null +++ b/Labs/Solutions/1- Databricks Lakehouse Platform/1.3L Solution - Databases and Tables on Databricks.sql @@ -0,0 +1,188 @@ +-- Databricks notebook source +-- MAGIC %md +-- MAGIC ## Lab Solution: Databases and Tables on Databricks + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q1 - Creating managed table +-- MAGIC +-- MAGIC In the default database, create a managed table named **movies_managed** that has the following schema: +-- MAGIC +-- MAGIC +-- MAGIC | Column Name | Column Type | +-- MAGIC | --- | --- | +-- MAGIC | title | STRING | +-- MAGIC | category | STRING | +-- MAGIC | length | FLOAT | +-- MAGIC | release_date | DATE | + +-- COMMAND ---------- + +-- Answer +CREATE TABLE movies_managed + (title STRING, category STRING, length INT, release_date DATE); + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Review the extended metadata information of the table, and verify that: +-- MAGIC 1. The table type is Managed +-- MAGIC 1. The table is located under the default hive directory + +-- COMMAND ---------- + +DESCRIBE EXTENDED movies_managed + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q2 - Creating external table +-- MAGIC +-- MAGIC In the default database, create an external Delta table named **actors_external**, and located under the directory: +-- MAGIC **dbfs:/mnt/demo/actors_external** +-- MAGIC +-- MAGIC The schema for the table: +-- MAGIC +-- MAGIC | Column Name | Column Type | +-- MAGIC | --- | --- | +-- MAGIC | actor_id | INT | +-- MAGIC | name | STRING | +-- MAGIC | nationality | STRING | + +-- COMMAND ---------- + +-- Answer +CREATE OR REPLACE TABLE actors_external + (actor_id INT, name STRING, nationality STRING) +LOCATION 'dbfs:/mnt/demo/actors_external'; + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q4- Checking table metadata +-- MAGIC +-- MAGIC Review the extended metadata information of the table, and verify that: +-- MAGIC 1. The table type is External +-- MAGIC 1. The table is located under the directory: **dbfs:/mnt/demo/actors_external** + +-- COMMAND ---------- + +DESCRIBE EXTENDED actors_external + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q3- Dropping manged table +-- MAGIC +-- MAGIC Drop the manged table **movies_managed** + +-- COMMAND ---------- + +-- Answer +DROP TABLE movies_managed + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Check that the directory of the managed table has been deleted +-- MAGIC + +-- COMMAND ---------- + +-- MAGIC %fs ls 'dbfs:/user/hive/warehouse/actors_external' + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q4- Drop external table +-- MAGIC +-- MAGIC Drop the external table **actors_external** + +-- COMMAND ---------- + +DROP TABLE actors_external + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Check that the directory of the external table has **Not** been deleted + +-- COMMAND ---------- + +-- MAGIC %fs ls 'dbfs:/mnt/demo/actors_external' + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q5- Creating new schema +-- MAGIC +-- MAGIC Create a new schema named **db_cinema** + +-- COMMAND ---------- + +-- Answer +CREATE SCHEMA db_cinema + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Review the extended metadata information of the database, and verify that the database is located under the default hive directory. +-- MAGIC +-- MAGIC Note that the database folder has the extenstion **.db** + +-- COMMAND ---------- + +DESCRIBE DATABASE EXTENDED db_cinema + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Use the new schema to create the below **movies** table + +-- COMMAND ---------- + +-- Answer +USE db_cinema; + +CREATE TABLE movies + (title STRING, category STRING, length INT, release_date DATE); + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q6- Creating new schema in custom location +-- MAGIC +-- MAGIC Create a new schema named **cinema_custom** in the directory: **dbfs:/Shared/schemas/cinema_custom.db** + +-- COMMAND ---------- + +-- Answer +CREATE SCHEMA cinema_custom +LOCATION 'dbfs:/Shared/schemas/cinema_custom.db' + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Use the new schema to create the below **movies** table + +-- COMMAND ---------- + +USE cinema_custom; + +CREATE TABLE movies + (title STRING, category STRING, length INT, release_date DATE); + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Finally, review the extended metadata information of the table **movies**, and verify that: +-- MAGIC +-- MAGIC 1. The table type is Managed +-- MAGIC 1. The table is located in the new database defined under the custom location + +-- COMMAND ---------- + +DESCRIBE EXTENDED movies diff --git a/Labs/Solutions/1- Databricks Lakehouse Platform/helper.py b/Labs/Solutions/1- Databricks Lakehouse Platform/helper.py new file mode 100644 index 0000000..00fb308 --- /dev/null +++ b/Labs/Solutions/1- Databricks Lakehouse Platform/helper.py @@ -0,0 +1,7 @@ +# Databricks notebook source +my_country = "France" + +# COMMAND ---------- + +def addition(a, b): + print(a + b) diff --git a/Labs/Solutions/2- ELT with Spark SQL and Python/2.1L Solution - Querying Files.sql b/Labs/Solutions/2- ELT with Spark SQL and Python/2.1L Solution - Querying Files.sql new file mode 100644 index 0000000..ce81033 --- /dev/null +++ b/Labs/Solutions/2- ELT with Spark SQL and Python/2.1L Solution - Querying Files.sql @@ -0,0 +1,134 @@ +-- Databricks notebook source +-- MAGIC %md +-- MAGIC +-- MAGIC ## Lab Solution: Querying Files + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Run the following cell to setup the lab environment + +-- COMMAND ---------- + +-- MAGIC %run ../Includes/Setup-Lab + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q1- Extracting data directly from Parquet files +-- MAGIC +-- MAGIC Use a SELECT statement to directly query the content of the Parquet files in the directory **${dataset.school}/enrollments** + +-- COMMAND ---------- + +-- ANSWER +SELECT * FROM parquet.`${dataset.school}/enrollments` + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Use the above SELECT query in a CTAS statement to create the table **enrollments** + +-- COMMAND ---------- + +-- ANSWER +CREATE TABLE enrollments AS +SELECT * FROM parquet.`${dataset.school}/enrollments` + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Run the below cell to ensure data was written as expected in the **enrollments** table + +-- COMMAND ---------- + +SELECT * FROM enrollments + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q2- Registering Tables from JSON Files +-- MAGIC +-- MAGIC Use CTAS statement to create the table **students** from the json files in the directory: **${dataset.school}/students-json** +-- MAGIC + +-- COMMAND ---------- + +-- ANSWER +CREATE TABLE students AS +SELECT * FROM json.`${dataset.school}/students-json`; + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Run the below cell to ensure data was written as expected in the **students** table + +-- COMMAND ---------- + +SELECT * FROM students + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q3- Registering Tables from CSV Files +-- MAGIC +-- MAGIC Create the temporary view **courses_tmp_vw** from the csv files in the directory: **${dataset.school}/courses-csv** +-- MAGIC +-- MAGIC Knowing that: +-- MAGIC * The delimiter is semicolon (**;**) +-- MAGIC * There is a header of column names in each file +-- MAGIC +-- MAGIC The schema for the view: +-- MAGIC +-- MAGIC | Column Name | Column Type | +-- MAGIC | --- | --- | +-- MAGIC | course_id | STRING | +-- MAGIC | title | STRING | +-- MAGIC | instructor | STRING | +-- MAGIC | category | STRING | +-- MAGIC | price | DOUBLE | + +-- COMMAND ---------- + +-- ANSWER +CREATE TEMP VIEW courses_tmp_vw + (course_id STRING, title STRING, instructor STRING, category STRING, price DOUBLE) +USING CSV +OPTIONS ( + path = "${dataset.school}/courses-csv", + header = "true", + delimiter = ";" +); + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Create the manged table **courses** from the temporary view **courses_tmp_vw** + +-- COMMAND ---------- + +-- ANSWER +CREATE TABLE courses AS + SELECT * FROM courses_tmp_vw; + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Query the data in the **courses** table to ensure data was written as expected. + +-- COMMAND ---------- + +-- ANSWER +SELECT * FROM courses + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Finally, review the metadata information of the table **courses**, and verify that the table type is Managed + +-- COMMAND ---------- + +DESCRIBE EXTENDED courses diff --git a/Labs/Solutions/2- ELT with Spark SQL and Python/2.2L Solution - Advanced ETL.sql b/Labs/Solutions/2- ELT with Spark SQL and Python/2.2L Solution - Advanced ETL.sql new file mode 100644 index 0000000..fa79f84 --- /dev/null +++ b/Labs/Solutions/2- ELT with Spark SQL and Python/2.2L Solution - Advanced ETL.sql @@ -0,0 +1,117 @@ +-- Databricks notebook source +-- MAGIC %md +-- MAGIC +-- MAGIC ## Lab Solution: Advanced ETL + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Run the following cell to setup the lab environment + +-- COMMAND ---------- + +-- MAGIC %run ../Includes/Setup-Lab + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q1- Interacting with JSON data +-- MAGIC +-- MAGIC Review the nested data structures of the **profile** column in the **students** table created in the previous lab + +-- COMMAND ---------- + +SELECT email, profile +FROM students + +-- COMMAND ---------- + +DESCRIBE students + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Use the appropriate syntax to access the **last_name** and **city** information from the **profile** column + +-- COMMAND ---------- + +-- ANSWER +SELECT email, profile:last_name AS student_surname, profile:address:city AS student_city +FROM students + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q2- Higher Order Functions +-- MAGIC +-- MAGIC Review the array column **courses** in the **enrollments** table created in the previous lab + +-- COMMAND ---------- + +SELECT enroll_id, courses +FROM enrollments + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Filter this array column to keep only course elements having subtotal greater than 40 + +-- COMMAND ---------- + +-- ANSWER +SELECT + enroll_id, + courses, + FILTER (courses, i -> i.subtotal > 40) AS large_totals +FROM enrollments + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q3- SQL UDFs + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Define a UDF function named **get_letter_grade** that takes one parameter named **gpa** of type DOUBLE. It returns the corresponding letter grade as indicated in the following table: +-- MAGIC +-- MAGIC +-- MAGIC +-- MAGIC | GPA (4.0 Scale) | Grade Letter | +-- MAGIC |---------|-----------| +-- MAGIC | 3.50 - 4.0 | A | +-- MAGIC | 2.75 - 3.44 | B | +-- MAGIC | 2.0 - 2.74 | C | +-- MAGIC | 0.0 - 1.99 | F | + +-- COMMAND ---------- + +-- ANSWER +CREATE FUNCTION get_letter_grade(gpa DOUBLE) +RETURNS STRING +RETURN CASE + WHEN gpa >= 3.5 THEN "A" + WHEN gpa >= 2.75 AND gpa < 3.5 THEN "B" + WHEN gpa >= 2 AND gpa < 2.75 THEN "C" + ELSE "F" + END + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC Let's apply the above UDF on the **students** table created in the previous lab +-- MAGIC +-- MAGIC Fill in the below query to call the defined UDF on the **gpa** column + +-- COMMAND ---------- + +-- ANSWER +SELECT student_id, gpa, get_letter_grade(gpa) as letter_grade +FROM students + +-- COMMAND ---------- + + diff --git a/Labs/Solutions/3- Incremental Data Processing/3.1L Solution - Spark Structured Streaming.py b/Labs/Solutions/3- Incremental Data Processing/3.1L Solution - Spark Structured Streaming.py new file mode 100644 index 0000000..ef51253 --- /dev/null +++ b/Labs/Solutions/3- Incremental Data Processing/3.1L Solution - Spark Structured Streaming.py @@ -0,0 +1,114 @@ +# Databricks notebook source +# MAGIC %md +# MAGIC +# MAGIC ## Lab Solution: Spark Structured Streaming + +# COMMAND ---------- + +# MAGIC %md-sandbox +# MAGIC +# MAGIC
+# MAGIC School Schema +# MAGIC
+ +# COMMAND ---------- + +# MAGIC %md +# MAGIC Run the following cell to setup the lab environment + +# COMMAND ---------- + +# MAGIC %run ../Includes/Setup-Lab + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q1- Auto Loader +# MAGIC +# MAGIC Use Auto Loader to incrementally load enrollments json files from the directory **{dataset_school}/enrollments-json-raw** into a streaming view called **`enrollments_tmp_vw`** +# MAGIC + +# COMMAND ---------- + +dataset_source = f"{dataset_school}/enrollments-json-raw" +schema_location = "dbfs:/mnt/DE-Associate/checkpoints/school/enrollments_stats" + +# ANSWER +(spark.readStream + .format("cloudFiles") + .option("cloudFiles.format", "json") + .option("cloudFiles.schemaLocation", schema_location) + .load(dataset_source) + .createOrReplaceTempView("enrollments_tmp_vw")) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q2 - Calculating aggregations on streaming data +# MAGIC +# MAGIC Using CTAS syntax, define a new streaming view against **`enrollments_tmp_vw`** to count the number of enrollments per **`student_id`**. Name the aggregated field: **`enrollments_counts`** + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC -- ANSWER +# MAGIC CREATE OR REPLACE TEMPORARY VIEW enrollments_per_student_tmp_vw AS +# MAGIC SELECT +# MAGIC student_id, count(enroll_id) AS enrollments_count +# MAGIC FROM enrollments_tmp_vw +# MAGIC GROUP BY student_id + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q3 - Writing stream data +# MAGIC +# MAGIC Stream the aggregated data from the **`enrollments_per_student_tmp_vw`** view to a Delta table called **`enrollments_stats`**. + +# COMMAND ---------- + +checkpoint_path = "dbfs:/mnt/DE-Associate/checkpoints/school/enrollments_stats" + +# ANSWER +query = (spark.table("enrollments_per_student_tmp_vw") + .writeStream + .option("checkpointLocation", checkpoint_path) + .outputMode("complete") + .table("enrollments_stats") + ) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Query the data in the **`enrollments_stats`** table to ensure data was written as expected. + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC SELECT * FROM enrollments_stats + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Run the below cell to land a new json file of enrollments data + +# COMMAND ---------- + +load_new_json_data() + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Verify that the statistics have been updated in the table **enrollments_stats** + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC SELECT * FROM enrollments_stats + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q4 - Canceling streaming query +# MAGIC +# MAGIC Finally, cancel the above streaming query diff --git a/Labs/Solutions/3- Incremental Data Processing/3.2L Solution - Multi-Hop Architecture.py b/Labs/Solutions/3- Incremental Data Processing/3.2L Solution - Multi-Hop Architecture.py new file mode 100644 index 0000000..4d222c1 --- /dev/null +++ b/Labs/Solutions/3- Incremental Data Processing/3.2L Solution - Multi-Hop Architecture.py @@ -0,0 +1,188 @@ +# Databricks notebook source +# MAGIC %md +# MAGIC +# MAGIC ## Lab Solution: Multi-Hop Architecture + +# COMMAND ---------- + +# MAGIC %md-sandbox +# MAGIC +# MAGIC
+# MAGIC School Schema +# MAGIC
+ +# COMMAND ---------- + +# MAGIC %md +# MAGIC Run the following cell to setup the lab environment + +# COMMAND ---------- + +# MAGIC %run ../Includes/Setup-Lab + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q1- Declaring Bronze Table +# MAGIC +# MAGIC Use Auto Loader to incrementally load enrollments json files from the directory **{dataset_school}/enrollments-json-raw** to a Delta table called **`bronze`** +# MAGIC + +# COMMAND ---------- + +dataset_source = f"{dataset_school}/enrollments-json-raw" +bronze_checkpoint_path = "dbfs:/mnt/DE-Associate/checkpoints/school/bronze" +schema_location = bronze_checkpoint_path + +# ANSWER +(spark.readStream + .format("cloudFiles") + .option("cloudFiles.format", "json") + .option("cloudFiles.schemaLocation", schema_location) + .load(dataset_source) + .writeStream + .option("checkpointLocation", bronze_checkpoint_path) + .outputMode("append") + .table("bronze") +) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Let's create a streaming temporary view from the bronze table in order to perform transformations using SQL. + +# COMMAND ---------- + +(spark + .readStream + .table("bronze") + .createOrReplaceTempView("bronze_tmp")) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q2 - Data Cleansing & Enrichment +# MAGIC +# MAGIC Using CTAS syntax, define a new streaming view **`bronze_cleaned_tmp`** against **`bronze_tmp`** that does the following: +# MAGIC * Remove records with **quantity** of 0 item +# MAGIC * Add a column called **`processing_time`** containing the current timestamp using the **current_timestamp()** function + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC -- ANSWER +# MAGIC CREATE OR REPLACE TEMPORARY VIEW bronze_cleaned_tmp AS +# MAGIC SELECT +# MAGIC *, current_timestamp() processing_time +# MAGIC FROM bronze_tmp +# MAGIC WHERE quantity > 0 + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q3 - Declaring Silver Table +# MAGIC +# MAGIC Stream the data from **`bronze_cleaned_tmp`** to a table called **`silver`**. + +# COMMAND ---------- + +silver_checkpoint_path = "dbfs:/mnt/DE-Associate/checkpoints/school/silver" + +# ANSWER +(spark.table("bronze_cleaned_tmp") + .writeStream + .option("checkpointLocation", silver_checkpoint_path) + .outputMode("append") + .table("silver") +) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Let's create a streaming temporary view from the silver table in order to perform business-level aggregation using SQL + +# COMMAND ---------- + +(spark + .readStream + .table("silver") + .createOrReplaceTempView("silver_tmp")) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q4- Declaring Gold Table +# MAGIC +# MAGIC Using CTAS syntax, define a new streaming view **`enrollments_per_student_tmp_vw`** against **`silver_tmp`** to count the number of enrollments per **`student`**. Name the aggregated field: **`enrollments_count`** + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC -- ANSWER +# MAGIC CREATE OR REPLACE TEMPORARY VIEW enrollments_per_student_tmp_vw AS +# MAGIC SELECT +# MAGIC student_id, count(enroll_id) AS enrollments_count +# MAGIC FROM silver_tmp +# MAGIC GROUP BY student_id + +# COMMAND ---------- + +# MAGIC %md +# MAGIC +# MAGIC Stream the aggregated data from the **`enrollments_per_student_tmp_vw`** view to a Delta table called **`gold_enrollments_stats`**. + +# COMMAND ---------- + +gold_checkpoint_path = "dbfs:/mnt/DE-Associate/checkpoints/school/gold_enrollments_stats" + +# ANSWER +query = (spark.table("enrollments_per_student_tmp_vw") + .writeStream + .option("checkpointLocation", gold_checkpoint_path) + .outputMode("complete") + .table("gold_enrollments_stats")) + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Query the data in the **`gold_enrollments_stats`** table to ensure data was written as expected. + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC SELECT * FROM gold_enrollments_stats + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Run the below cell to land new a json file of enrollments data + +# COMMAND ---------- + +load_new_json_data() + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Wait for the new data to be propagated, and then run the below query to verify that the statistics have been updated in the table **gold_enrollments_stats** + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC SELECT * FROM gold_enrollments_stats + +# COMMAND ---------- + +# MAGIC %md +# MAGIC Finally, run the below cell for canceling the above streaming queries + +# COMMAND ---------- + +for s in spark.streams.active: + print("Stopping stream: " + s.id) + s.stop() + s.awaitTermination() + +# COMMAND ---------- + + diff --git a/Labs/Solutions/4- Production Pipelines/4.1L Solution - Delta Live Tables.sql b/Labs/Solutions/4- Production Pipelines/4.1L Solution - Delta Live Tables.sql new file mode 100644 index 0000000..3b5686c --- /dev/null +++ b/Labs/Solutions/4- Production Pipelines/4.1L Solution - Delta Live Tables.sql @@ -0,0 +1,126 @@ +-- Databricks notebook source +-- MAGIC %md +-- MAGIC +-- MAGIC ## Lab Solution: implementing a DLT pipeline +-- MAGIC +-- MAGIC > This notebook is **not intended** to be executed interactively, but rather to be deployed as a DLT pipeline from the **workflows** tab +-- MAGIC +-- MAGIC +-- MAGIC * Help:
DLT syntax documentation. + +-- COMMAND ---------- + +-- MAGIC %md-sandbox +-- MAGIC +-- MAGIC
+-- MAGIC School Schema +-- MAGIC
+ +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q1- Declaring Bronze Tables +-- MAGIC +-- MAGIC Declare a streaming live table, **`enrollments_bronze`**, that ingests JSON data incrementally using Auto Loader from the directory **"${datasets_path}/enrollments-json-raw"** + +-- COMMAND ---------- + +-- ANSWER +CREATE OR REFRESH STREAMING LIVE TABLE enrollments_bronze +AS SELECT * FROM cloud_files("${dataset_path}/enrollments-json-raw", "json", + map("cloudFiles.inferColumnTypes", "true")) + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC Declare a live table, **`students_bronze`**, that load data directly from JSON files in the directory **"${datasets_path}/students-json"** + +-- COMMAND ---------- + +-- ANSWER +CREATE OR REFRESH LIVE TABLE students_bronze +AS SELECT * FROM json.`${dataset_path}/students-json` + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q2 - Declaring Silver Table +-- MAGIC +-- MAGIC Declare a streaming live table, **`enrollments_cleaned`**, that: +-- MAGIC +-- MAGIC 1. Enrich the **enrollments_bronze** data through an inner join with the **`students_bronze`** table on the common **`student_id`** field to obtain the student's country +-- MAGIC 1. Implement quality control by applying a constraint to drop records with a null **`email`** +-- MAGIC 1. The table will have the following schema: +-- MAGIC +-- MAGIC | Field | Type | +-- MAGIC | --- | --- | +-- MAGIC | **`enroll_id`** | **`STRING`** | +-- MAGIC | **`total`** | **`DOUBLE`** | +-- MAGIC | **`email`** | **`STRING`** | +-- MAGIC | **`country`** | **`STRING`** | +-- MAGIC + +-- COMMAND ---------- + +-- ANSWER +CREATE OR REFRESH STREAMING LIVE TABLE enrollments_cleaned ( + CONSTRAINT valid_email EXPECT (email IS NOT NULL) ON VIOLATION DROP ROW +) +AS SELECT enroll_id, total, email, profile:address:country as country + FROM STREAM(LIVE.enrollments_bronze) n + LEFT JOIN LIVE.students_bronze s + ON n.student_id = s.student_id + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC ### Q3- Declaring Gold Table +-- MAGIC +-- MAGIC Declare a live table, **`course_sales_per_country`** against **`enrollments_cleaned`** that calculate per **`country`** the following: +-- MAGIC * **`enrollments_count`**: the number of enrollments +-- MAGIC * **`enrollments_amount`**: the sum of the total amount of enrollments +-- MAGIC +-- MAGIC Add a comment to the table: "Course Sales Per Country" + +-- COMMAND ---------- + +-- ANSWER +CREATE OR REFRESH LIVE TABLE course_sales_per_country +COMMENT "Course Sales Per Country" +AS + SELECT country, count(enroll_id) AS enrollments_count, sum(total) AS enrollments_amount + FROM LIVE.enrollments_cleaned + GROUP BY country + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC ### Q4- Deploying DLT pipeline +-- MAGIC +-- MAGIC From the **Workflows** button on the sidebar, under the **Delta Live Tables** tab, click **Create Pipeline** +-- MAGIC +-- MAGIC Configure the pipeline settings specified below: +-- MAGIC +-- MAGIC | Setting | Instructions | +-- MAGIC |--|--| +-- MAGIC | Pipeline name | School DLT | +-- MAGIC | Product edition | Choose **Advanced** | +-- MAGIC | Pipeline mode | Choose **Triggered** | +-- MAGIC | Source code | Use the navigator to select this current notebook (4.1L - Delta Live Tables) | +-- MAGIC | Storage location | dbfs:/mnt/DE-Associate/dlt/school | +-- MAGIC | Target schema | DE_Associate_School_DLT | +-- MAGIC | Cluster policy | Leave it **None**| +-- MAGIC | Cluster mode | Choose **Fixed size**| +-- MAGIC | Workers | Enter **0**| +-- MAGIC | Photon Acceleration | Leave it unchecked | +-- MAGIC | Advanced Configuration | Click **Add Configuration** and enter:
- Key: **dataset_path**
- Value: **dbfs:/mnt/DE-Associate/datasets/school** | +-- MAGIC | Channel | Choose **Current**| +-- MAGIC +-- MAGIC Finally, click **Create**. + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC ### Q5 - Run your Pipeline +-- MAGIC +-- MAGIC Select **Development** mode and Click **Start** to begin the update to your pipeline's tables diff --git a/Labs/Solutions/4- Production Pipelines/4.2L Solution - Jobs - Land New Data.py b/Labs/Solutions/4- Production Pipelines/4.2L Solution - Jobs - Land New Data.py new file mode 100644 index 0000000..4a3af21 --- /dev/null +++ b/Labs/Solutions/4- Production Pipelines/4.2L Solution - Jobs - Land New Data.py @@ -0,0 +1,91 @@ +# Databricks notebook source +# MAGIC %md +# MAGIC +# MAGIC ## Lab Solution: Creating a multi-task job +# MAGIC +# MAGIC In this lab, we will create a job that has 2 tasks: +# MAGIC 1. The current notebook that lands a new batch of data in the lab dataset directory +# MAGIC 1. The Delta Live Table pipeline created in the previous lab to processes this data +# MAGIC +# MAGIC * Help: Databricks Jobs documentation. + +# COMMAND ---------- + +# MAGIC %md-sandbox +# MAGIC +# MAGIC
+# MAGIC +# MAGIC
+ +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q1- Configuring Task 1 - Land New Data +# MAGIC +# MAGIC +# MAGIC From the **Workflows** button on the sidebar, under the **Jobs** tab, click the **Create Job** button. +# MAGIC +# MAGIC
+# MAGIC +# MAGIC 1. Set the job name in the top-left of the screen to **School Job** +# MAGIC 1. Configure the first task as specified below: +# MAGIC | Setting | Value | +# MAGIC |--|--| +# MAGIC | Task name | Enter **Land New Data** | +# MAGIC | Type | Choose **Notebook** | +# MAGIC | Source | Choose **Workspace** | +# MAGIC | Path | Use the navigator to choose the current notebook (4.2L - Jobs - Land New Data) | +# MAGIC | Cluster | Select your cluster from the dropdown, under **Existing All Purpose Clusters** | +# MAGIC +# MAGIC +# MAGIC
+# MAGIC +# MAGIC 3. Click the **Create** button + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q2- Configuring Task 2 - DLT pipeline +# MAGIC +# MAGIC
+# MAGIC +# MAGIC 1. Click the add button (**+**) to add a new **Delta Live Tables pipeline** task +# MAGIC 1. Configure the task: +# MAGIC +# MAGIC | Setting | Value | +# MAGIC |--|--| +# MAGIC | Task name | Enter **DLT pipeline** | +# MAGIC | Type | Choose **Delta Live Tables pipeline** | +# MAGIC | Pipeline | Choose the DLT pipeline created in the previous lab | +# MAGIC | Depends on | Choose **Land New Data**, which is the previous task we defined above | +# MAGIC +# MAGIC
+# MAGIC +# MAGIC 3. Click the **Create task** button + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q3- Run the job +# MAGIC +# MAGIC Click the **Run now** button in the top right to run this job. From the **Runs** tab, check your job run + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Q4- Review the finished job +# MAGIC +# MAGIC Once all tasks completed successfully, review the contents of each task to verify its result + +# COMMAND ---------- + +# MAGIC %md +# MAGIC > **Note**: The below cells are to be run as part of the **Task 1** to land new batch of data in the dataset directory + +# COMMAND ---------- + +# MAGIC %run ../Includes/Setup-Lab + +# COMMAND ---------- + +load_new_json_data() diff --git a/Labs/Solutions/4- Production Pipelines/4.3L Solution - Databricks SQL.sql b/Labs/Solutions/4- Production Pipelines/4.3L Solution - Databricks SQL.sql new file mode 100644 index 0000000..2363e38 --- /dev/null +++ b/Labs/Solutions/4- Production Pipelines/4.3L Solution - Databricks SQL.sql @@ -0,0 +1,121 @@ +-- Databricks notebook source +-- MAGIC %md +-- MAGIC +-- MAGIC ## Lab Solution: Design a Dashboard with DBSQL +-- MAGIC +-- MAGIC In this lab, we will design a dashboard in DBSQL that has 2 graphs: +-- MAGIC 1. Bar graph that shows the number of students per country +-- MAGIC 1. Line graph that shows the daily enrollments amount +-- MAGIC +-- MAGIC * Help: Databricks SQL documentation. + +-- COMMAND ---------- + +-- MAGIC %md-sandbox +-- MAGIC +-- MAGIC
+-- MAGIC +-- MAGIC
+ +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q1 - Working with queries in SQL Editor +-- MAGIC +-- MAGIC Run the the below query in **SQL Editor** in Databricks SQL, and then save it with the name **Student Counts** + +-- COMMAND ---------- + +SELECT profile:address:country as country, count(student_id) AS students_count +FROM de_associate_school.students +GROUP BY profile:address:country +ORDER BY students_count DESC +LIMIT 10 + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q2 - Creating a Bar Graph Visualization +-- MAGIC +-- MAGIC Create a bar graph that shows the number of students per country +-- MAGIC +-- MAGIC
+-- MAGIC +-- MAGIC +-- MAGIC ##### Anwser: +-- MAGIC Steps: +-- MAGIC 1. Click the Add butoon (**+**) next to the results tab, and select **Visualization** from the dialog box +-- MAGIC 1. Select **`Bar`** for the **Visualization Type** +-- MAGIC 1. Set **`country`** for the **X Column** +-- MAGIC 1. Under **Y columns** click **Add column**, and set it to **`students_count`** +-- MAGIC 1. Click **Save** +-- MAGIC 1. Finally, set the title of the graph to **Student Counts Viz** + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q3 - Creating a New Dashboard +-- MAGIC +-- MAGIC Add the above graph to a new dashboard named **Students Statistics** +-- MAGIC +-- MAGIC ##### Anwser: +-- MAGIC +-- MAGIC Steps: +-- MAGIC 1. Click the three vertical dots button at the top of the graph and select **Add to Dashboard**. +-- MAGIC 1. Click the **Create new dashboard** option +-- MAGIC 1. Name your dashboard **Students Statistics** +-- MAGIC 1. Click **Save** +-- MAGIC 1. With the new dashboard selected as the target, click **OK** to add your visualization + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q4 - Creating a Line Plot Visualization +-- MAGIC +-- MAGIC 1. Run the the below query in a new query tab in the **SQL Editor**, and then save it with the name **Daily Sales** + +-- COMMAND ---------- + +SELECT cast(from_unixtime(enroll_timestamp, 'yyyy-MM-dd HH:mm:ss') AS date) enroll_timestamp, + sum(total) AS enrollments_amount +FROM de_associate_school.enrollments n +INNER JOIN de_associate_school.students s ON s.student_id = n.student_id +GROUP BY enroll_timestamp + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC +-- MAGIC 2. Create a Line Plot Visualization that shows the daily enrollments amount +-- MAGIC +-- MAGIC +-- MAGIC
+-- MAGIC +-- MAGIC +-- MAGIC +-- MAGIC ##### Anwser: +-- MAGIC +-- MAGIC Steps: +-- MAGIC 1. Click the **Add Visualization** button +-- MAGIC 1. Select **`Line`** for the **Visualization Type** +-- MAGIC 1. Set **`enroll_timestamp`** for the **X Column** +-- MAGIC 1. Under **Y columns** click **Add column**, and set it to **`enrollments_amount`** +-- MAGIC 1. Click **Save** +-- MAGIC 1. Finally, set the title of the graph to **Daily Sales Viz** +-- MAGIC 1. Click the three vertical dots button at the top of the graph and select **Add to Dashboard**. +-- MAGIC 1. Select the dashboard **Students Statistics** created above +-- MAGIC 1. Click **OK** to add your visualization + +-- COMMAND ---------- + +-- MAGIC %md +-- MAGIC #### Q5 - Review your Dashboard +-- MAGIC +-- MAGIC Open your Dashboard and refresh its underlaying data +-- MAGIC +-- MAGIC ##### Anwser: +-- MAGIC +-- MAGIC Steps: +-- MAGIC 1. Click on the **Dashboards** button on left side bar +-- MAGIC 1. Find the dashboard **Students Statistics** created earlier. Click to open it +-- MAGIC 1. Click the **Refresh** button to update your dashboard diff --git a/Labs/Solutions/Includes/Setup-Lab.py b/Labs/Solutions/Includes/Setup-Lab.py new file mode 100644 index 0000000..d2121f3 --- /dev/null +++ b/Labs/Solutions/Includes/Setup-Lab.py @@ -0,0 +1,142 @@ +# Databricks notebook source +data_source_uri = "wasbs://course-resources@dalhussein.blob.core.windows.net/datasets/school/v1/" +dataset_school = 'dbfs:/mnt/DE-Associate/datasets/school' +checkpoint_path = 'dbfs:/mnt/DE-Associate/checkpoints/school' +dlt_path = 'dbfs:/mnt/DE-Associate/dlt/school' +db_name = 'DE_Associate_School' +dlt_db_name = 'DE_Associate_School_DLT' +spark.conf.set(f"dataset.school", dataset_school) + +# COMMAND ---------- + +def clean_up(): + print("Removing Checkpoints ...") + dbutils.fs.rm(checkpoint_path, True) + print("Removing DLT storage location ...") + dbutils.fs.rm(dlt_path, True) + print("Dropping Database ...") + spark.sql(f"DROP SCHEMA IF EXISTS {db_name} CASCADE") + print("Dropping DLT database ...") + spark.sql(f"DROP SCHEMA IF EXISTS {dlt_db_name} CASCADE") + print("Removing Dataset ...") + dbutils.fs.rm(dataset_school, True) + print("Done") + +# COMMAND ---------- + +try: + clean = int(dbutils.widgets.get("clean")) +except: + clean = 0 + +if clean: + clean_up() + +# COMMAND ---------- + +def path_exists(path): + try: + dbutils.fs.ls(path) + return True + except Exception as e: + if 'java.io.FileNotFoundException' in str(e): + return False + else: + raise + +# COMMAND ---------- + +def download_dataset(source, target): + files = dbutils.fs.ls(source) + + for f in files: + source_path = f"{source}/{f.name}" + target_path = f"{target}/{f.name}" + if not path_exists(target_path): + print(f"Copying {f.name} ...") + dbutils.fs.cp(source_path, target_path, True) + +# COMMAND ---------- + +def get_index(dir): + files = dbutils.fs.ls(dir) + index = 0 + if files: + file = max(files).name + index = int(file.rsplit('.', maxsplit=1)[0]) + return index+1 + +# COMMAND ---------- + +# Structured Streaming +streaming_dir = f"{dataset_school}/enrollments-streaming" +raw_dir = f"{dataset_school}/enrollments-raw" + +def load_file(current_index): + latest_file = f"{str(current_index).zfill(2)}.parquet" + print(f"Loading {latest_file} file to the school dataset") + dbutils.fs.cp(f"{streaming_dir}/{latest_file}", f"{raw_dir}/{latest_file}") + + +def load_new_data(all=False): + index = get_index(raw_dir) + if index >= 10: + print("No more data to load\n") + + elif all == True: + while index <= 10: + load_file(index) + index += 1 + else: + load_file(index) + index += 1 + +# COMMAND ---------- + +# DLT +streaming_enrollments_dir = f"{dataset_school}/enrollments-json-streaming" +streaming_courses_dir = f"{dataset_school}/courses-streaming" + +raw_enrollments_dir = f"{dataset_school}/enrollments-json-raw" +raw_courses_dir = f"{dataset_school}/courses-cdc" + +def load_json_file(current_index): + latest_file = f"{str(current_index).zfill(2)}.json" + print(f"Loading {latest_file} enrollments file to the school dataset") + dbutils.fs.cp(f"{streaming_enrollments_dir}/{latest_file}", f"{raw_enrollments_dir}/{latest_file}") + #print(f"Loading {latest_file} courses file to the school dataset") + #dbutils.fs.cp(f"{streaming_courses_dir}/{latest_file}", f"{raw_courses_dir}/{latest_file}") + + +def load_new_json_data(all=False): + index = get_index(raw_enrollments_dir) + if index >= 10: + print("No more data to load\n") + + elif all == True: + while index <= 10: + load_json_file(index) + index += 1 + else: + load_json_file(index) + index += 1 + +# COMMAND ---------- + + + +# COMMAND ---------- + +download_dataset(data_source_uri, dataset_school) + +spark.sql(f"CREATE SCHEMA IF NOT EXISTS {db_name}") +spark.sql(f"USE {db_name}") +print(f"Schema for the hands-on labs: {db_name}") + +# COMMAND ---------- + + + +# COMMAND ---------- + + From c9d643bab173952506658a29d8ff9b95112c3fec Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Tue, 26 Sep 2023 16:20:04 +0000 Subject: [PATCH 10/28] Add comments --- .../3.1 - Structured Streaming.py | 43 ++++++++++++++-- .../3.2 - Auto Loader.py | 34 +++++++++++-- .../3.3 - Multi-Hop Architecture.py | 50 +++++++++++++++++-- .../3.2L - Multi-Hop Architecture.py | 4 -- 4 files changed, 115 insertions(+), 16 deletions(-) diff --git a/3- Incremental Data Processing/3.1 - Structured Streaming.py b/3- Incremental Data Processing/3.1 - Structured Streaming.py index b558703..b341907 100644 --- a/3- Incremental Data Processing/3.1 - Structured Streaming.py +++ b/3- Incremental Data Processing/3.1 - Structured Streaming.py @@ -11,6 +11,12 @@ # COMMAND ---------- +# MAGIC %md +# MAGIC +# MAGIC ## Reading Stream + +# COMMAND ---------- + (spark.readStream .table("books") .createOrReplaceTempView("books_streaming_tmp_vw") @@ -18,11 +24,22 @@ # COMMAND ---------- +# MAGIC %md +# MAGIC +# MAGIC ## Displaying Streaming Data + +# COMMAND ---------- + # MAGIC %sql # MAGIC SELECT * FROM books_streaming_tmp_vw # COMMAND ---------- +# MAGIC %md +# MAGIC ## Applying Transformations + +# COMMAND ---------- + # MAGIC %sql # MAGIC SELECT author, count(book_id) AS total_books # MAGIC FROM books_streaming_tmp_vw @@ -30,6 +47,12 @@ # COMMAND ---------- +# MAGIC %md +# MAGIC +# MAGIC ## Unsupported Operations + +# COMMAND ---------- + # MAGIC %sql # MAGIC SELECT * # MAGIC FROM books_streaming_tmp_vw @@ -37,6 +60,12 @@ # COMMAND ---------- +# MAGIC %md +# MAGIC +# MAGIC ## Persisting Streaming Data + +# COMMAND ---------- + # MAGIC %sql # MAGIC CREATE OR REPLACE TEMP VIEW author_counts_tmp_vw AS ( # MAGIC SELECT author, count(book_id) AS total_books @@ -62,6 +91,11 @@ # COMMAND ---------- +# MAGIC %md +# MAGIC ## Adding New Data + +# COMMAND ---------- + # MAGIC %sql # MAGIC INSERT INTO books # MAGIC values ("B19", "Introduction to Modeling and Simulation", "Mark W. Spong", "Computer Science", 25), @@ -70,6 +104,11 @@ # COMMAND ---------- +# MAGIC %md +# MAGIC ## Streaming in Batch Mode + +# COMMAND ---------- + # MAGIC %sql # MAGIC INSERT INTO books # MAGIC values ("B16", "Hands-On Deep Learning Algorithms with Python", "Sudharsan Ravichandiran", "Computer Science", 25), @@ -92,7 +131,3 @@ # MAGIC %sql # MAGIC SELECT * # MAGIC FROM author_counts - -# COMMAND ---------- - - diff --git a/3- Incremental Data Processing/3.2 - Auto Loader.py b/3- Incremental Data Processing/3.2 - Auto Loader.py index 6da29b7..293e334 100644 --- a/3- Incremental Data Processing/3.2 - Auto Loader.py +++ b/3- Incremental Data Processing/3.2 - Auto Loader.py @@ -11,11 +11,23 @@ # COMMAND ---------- +# MAGIC %md +# MAGIC +# MAGIC ## Exploring The Source dDirectory + +# COMMAND ---------- + files = dbutils.fs.ls(f"{dataset_bookstore}/orders-raw") display(files) # COMMAND ---------- +# MAGIC %md +# MAGIC +# MAGIC ## Auto Loader + +# COMMAND ---------- + (spark.readStream .format("cloudFiles") .option("cloudFiles.format", "parquet") @@ -38,6 +50,12 @@ # COMMAND ---------- +# MAGIC %md +# MAGIC +# MAGIC ## Landing New Files + +# COMMAND ---------- + load_new_data() # COMMAND ---------- @@ -52,18 +70,26 @@ # COMMAND ---------- -# MAGIC %sql -# MAGIC DESCRIBE HISTORY orders_updates +# MAGIC %md +# MAGIC +# MAGIC ## Exploring Table History # COMMAND ---------- # MAGIC %sql -# MAGIC DROP TABLE orders_updates +# MAGIC DESCRIBE HISTORY orders_updates # COMMAND ---------- -dbutils.fs.rm("dbfs:/mnt/demo/orders_checkpoint", True) +# MAGIC %md +# MAGIC +# MAGIC ## Cleaning Up # COMMAND ---------- +# MAGIC %sql +# MAGIC DROP TABLE orders_updates + +# COMMAND ---------- +dbutils.fs.rm("dbfs:/mnt/demo/orders_checkpoint", True) diff --git a/3- Incremental Data Processing/3.3 - Multi-Hop Architecture.py b/3- Incremental Data Processing/3.3 - Multi-Hop Architecture.py index 3f6e350..89d5b79 100644 --- a/3- Incremental Data Processing/3.3 - Multi-Hop Architecture.py +++ b/3- Incremental Data Processing/3.3 - Multi-Hop Architecture.py @@ -11,11 +11,23 @@ # COMMAND ---------- +# MAGIC %md +# MAGIC +# MAGIC ## Exploring The Source dDirectory + +# COMMAND ---------- + files = dbutils.fs.ls(f"{dataset_bookstore}/orders-raw") display(files) # COMMAND ---------- +# MAGIC %md +# MAGIC +# MAGIC ## Auto Loader + +# COMMAND ---------- + (spark.readStream .format("cloudFiles") .option("cloudFiles.format", "parquet") @@ -25,6 +37,12 @@ # COMMAND ---------- +# MAGIC %md +# MAGIC +# MAGIC ## Enriching Raw Data + +# COMMAND ---------- + # MAGIC %sql # MAGIC CREATE OR REPLACE TEMPORARY VIEW orders_tmp AS ( # MAGIC SELECT *, current_timestamp() arrival_time, input_file_name() source_file @@ -38,6 +56,11 @@ # COMMAND ---------- +# MAGIC %md +# MAGIC ## Creating Bronze Table + +# COMMAND ---------- + (spark.table("orders_tmp") .writeStream .format("delta") @@ -56,6 +79,13 @@ # COMMAND ---------- +# MAGIC %md +# MAGIC ## Silver Layer +# MAGIC +# MAGIC #### Creating Static Lookup Table + +# COMMAND ---------- + (spark.read .format("json") .load(f"{dataset_bookstore}/customers-json") @@ -68,6 +98,11 @@ # COMMAND ---------- +# MAGIC %md +# MAGIC #### Creating Silver Table + +# COMMAND ---------- + (spark.readStream .table("orders_bronze") .createOrReplaceTempView("orders_bronze_tmp")) @@ -108,6 +143,11 @@ # COMMAND ---------- +# MAGIC %md +# MAGIC ## Creating Gold Table + +# COMMAND ---------- + (spark.readStream .table("orders_silver") .createOrReplaceTempView("orders_silver_tmp")) @@ -142,11 +182,13 @@ # COMMAND ---------- +# MAGIC %md +# MAGIC +# MAGIC ## Stopping active streams + +# COMMAND ---------- + for s in spark.streams.active: print("Stopping stream: " + s.id) s.stop() s.awaitTermination() - -# COMMAND ---------- - - diff --git a/Labs/3- Incremental Data Processing/3.2L - Multi-Hop Architecture.py b/Labs/3- Incremental Data Processing/3.2L - Multi-Hop Architecture.py index 385331f..ef8c23b 100644 --- a/Labs/3- Incremental Data Processing/3.2L - Multi-Hop Architecture.py +++ b/Labs/3- Incremental Data Processing/3.2L - Multi-Hop Architecture.py @@ -173,7 +173,3 @@ print("Stopping stream: " + s.id) s.stop() s.awaitTermination() - -# COMMAND ---------- - - From edeeaeaaca89bdfcf7eae24da81363bfa8808c85 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Tue, 26 Sep 2023 16:47:52 +0000 Subject: [PATCH 11/28] Update comments --- 3- Incremental Data Processing/3.3 - Multi-Hop Architecture.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/3- Incremental Data Processing/3.3 - Multi-Hop Architecture.py b/3- Incremental Data Processing/3.3 - Multi-Hop Architecture.py index 89d5b79..772cd53 100644 --- a/3- Incremental Data Processing/3.3 - Multi-Hop Architecture.py +++ b/3- Incremental Data Processing/3.3 - Multi-Hop Architecture.py @@ -80,7 +80,6 @@ # COMMAND ---------- # MAGIC %md -# MAGIC ## Silver Layer # MAGIC # MAGIC #### Creating Static Lookup Table @@ -99,7 +98,7 @@ # COMMAND ---------- # MAGIC %md -# MAGIC #### Creating Silver Table +# MAGIC ## Creating Silver Table # COMMAND ---------- From 1b7f32af332846c66acaa025efa0c4dcca36e170 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Mon, 4 Dec 2023 00:51:39 +0000 Subject: [PATCH 12/28] Use two-level parameter for DLT pipelines --- .../4.1 - Delta Live Tables.sql | 8 +++++-- .../4.1.2 - Books Pipeline.sql | 22 +++++++++++-------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/4- Production Pipelines/4.1 - Delta Live Tables.sql b/4- Production Pipelines/4.1 - Delta Live Tables.sql index 07e9c16..6db0b5e 100644 --- a/4- Production Pipelines/4.1 - Delta Live Tables.sql +++ b/4- Production Pipelines/4.1 - Delta Live Tables.sql @@ -14,6 +14,10 @@ -- COMMAND ---------- +SET datasets.path=dbfs:/mnt/demo-datasets/bookstore; + +-- COMMAND ---------- + -- MAGIC %md -- MAGIC ## Bronze Layer Tables @@ -26,7 +30,7 @@ CREATE OR REFRESH STREAMING LIVE TABLE orders_raw COMMENT "The raw books orders, ingested from orders-raw" -AS SELECT * FROM cloud_files("${datasets_path}/orders-json-raw", "json", +AS SELECT * FROM cloud_files("${datasets.path}/orders-json-raw", "json", map("cloudFiles.inferColumnTypes", "true")) -- COMMAND ---------- @@ -38,7 +42,7 @@ AS SELECT * FROM cloud_files("${datasets_path}/orders-json-raw", "json", CREATE OR REFRESH LIVE TABLE customers COMMENT "The customers lookup table, ingested from customers-json" -AS SELECT * FROM json.`${datasets_path}/customers-json` +AS SELECT * FROM json.`${datasets.path}/customers-json` -- COMMAND ---------- diff --git a/4- Production Pipelines/4.1.2 - Books Pipeline.sql b/4- Production Pipelines/4.1.2 - Books Pipeline.sql index 79b0e38..a61af84 100644 --- a/4- Production Pipelines/4.1.2 - Books Pipeline.sql +++ b/4- Production Pipelines/4.1.2 - Books Pipeline.sql @@ -1,22 +1,26 @@ -- Databricks notebook source +SET datasets.path=dbfs:/mnt/demo-datasets/bookstore; + +-- COMMAND ---------- + -- MAGIC %md --- MAGIC --- MAGIC --- MAGIC +-- MAGIC +-- MAGIC +-- MAGIC -- MAGIC ## Bronze Layer Tables -- COMMAND ---------- CREATE OR REFRESH STREAMING LIVE TABLE books_bronze COMMENT "The raw books data, ingested from CDC feed" -AS SELECT * FROM cloud_files("${datasets_path}/books-cdc", "json") +AS SELECT * FROM cloud_files("${datasets.path}/books-cdc", "json") -- COMMAND ---------- -- MAGIC %md --- MAGIC --- MAGIC --- MAGIC +-- MAGIC +-- MAGIC +-- MAGIC -- MAGIC ## Silver Layer Tables -- COMMAND ---------- @@ -33,8 +37,8 @@ APPLY CHANGES INTO LIVE.books_silver -- COMMAND ---------- -- MAGIC %md --- MAGIC --- MAGIC +-- MAGIC +-- MAGIC -- MAGIC ## Gold Layer Tables -- COMMAND ---------- From 4a986d413c3ed4eba6487502ade6eb7c27ee668c Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Thu, 28 Dec 2023 22:36:17 +0000 Subject: [PATCH 13/28] Fix table path --- .../1.4 - Databases and Tables on Databricks.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1- Databricks Lakehouse Platform/1.4 - Databases and Tables on Databricks.sql b/1- Databricks Lakehouse Platform/1.4 - Databases and Tables on Databricks.sql index 8fb17df..d0431e6 100644 --- a/1- Databricks Lakehouse Platform/1.4 - Databases and Tables on Databricks.sql +++ b/1- Databricks Lakehouse Platform/1.4 - Databases and Tables on Databricks.sql @@ -102,7 +102,7 @@ DROP TABLE external_new_default; -- COMMAND ---------- --- MAGIC %fs ls 'dbfs:/user/hive/warehouse/managed_new_default' +-- MAGIC %fs ls 'dbfs:/user/hive/warehouse/new_default.db/managed_new_default' -- COMMAND ---------- From 89a7145ea09e022e39b631b264ff542cf6ff3dd8 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Sun, 10 Mar 2024 02:34:10 +0000 Subject: [PATCH 14/28] Add SQL queries of Managing Permissions hands-on --- .../5.1 - Managing Permissions.sql | 30 +++++++++++++++++++ .../4.1L - Delta Live Tables.sql | 14 +++++---- .../4.1L Solution - Delta Live Tables.sql | 14 +++++---- 3 files changed, 48 insertions(+), 10 deletions(-) create mode 100644 5- Data Governance/5.1 - Managing Permissions.sql diff --git a/5- Data Governance/5.1 - Managing Permissions.sql b/5- Data Governance/5.1 - Managing Permissions.sql new file mode 100644 index 0000000..345bc8e --- /dev/null +++ b/5- Data Governance/5.1 - Managing Permissions.sql @@ -0,0 +1,30 @@ +CREATE DATABASE IF NOT EXISTS hr_db +LOCATION 'dbfs:/mnt/demo/hr_db.db'; + +USE hr_db; + +CREATE TABLE employees (id INT, name STRING, salary DOUBLE, city STRING); + +INSERT INTO employees +VALUES (1, "Anna", 2500, "Paris"), + (2, "Thomas", 3000, "London"), + (3, "Bilal", 3500, "Paris"), + (4, "Maya", 2000, "Paris"), + (5, "Sophie", 2500, "London"), + (6, "Adam", 3500, "London"), + (7, "Ali", 3000, "Paris"); + +CREATE VIEW paris_emplyees_vw +AS SELECT * FROM employees WHERE city = 'Paris'; + +------------------------------------------------------ + +GRANT SELECT, MODIFY, READ_METADATA, CREATE ON SCHEMA hr_db TO hr_team; + +GRANT USAGE ON SCHEMA hr_db TO hr_team; + +GRANT SELECT ON VIEW hr_db.paris_emplyees_vw TO `adam@derar.cloud`; + +SHOW GRANTS ON SCHEMA hr_db; + +SHOW GRANTS ON VIEW hr_db.paris_emplyees_vw; diff --git a/Labs/4- Production Pipelines/4.1L - Delta Live Tables.sql b/Labs/4- Production Pipelines/4.1L - Delta Live Tables.sql index 8825b4c..6a92547 100644 --- a/Labs/4- Production Pipelines/4.1L - Delta Live Tables.sql +++ b/Labs/4- Production Pipelines/4.1L - Delta Live Tables.sql @@ -18,26 +18,30 @@ -- COMMAND ---------- +SET datasets.path=dbfs:/mnt/demo-datasets/bookstore; + +-- COMMAND ---------- + -- MAGIC %md -- MAGIC #### Q1- Declaring Bronze Tables -- MAGIC --- MAGIC Declare a streaming live table, **`enrollments_bronze`**, that ingests JSON data incrementally using Auto Loader from the directory **"${datasets_path}/enrollments-json-raw"** +-- MAGIC Declare a streaming live table, **`enrollments_bronze`**, that ingests JSON data incrementally using Auto Loader from the directory **"${datasets.path}/enrollments-json-raw"** -- COMMAND ---------- CREATE ____________________ -AS SELECT * FROM cloud_files("${dataset_path}/enrollments-json-raw", "json", +AS SELECT * FROM cloud_files("${datasets.path}/enrollments-json-raw", "json", map("cloudFiles.inferColumnTypes", "true")) -- COMMAND ---------- -- MAGIC %md --- MAGIC Declare a live table, **`students_bronze`**, that load data directly from JSON files in the directory **"${datasets_path}/students-json"** +-- MAGIC Declare a live table, **`students_bronze`**, that load data directly from JSON files in the directory **"${datasets.path}/students-json"** -- COMMAND ---------- CREATE ____________________ -AS SELECT * FROM json.`${dataset_path}/students-json` +AS SELECT * FROM json.`${datasets.path}/students-json` -- COMMAND ---------- @@ -106,7 +110,7 @@ AS SELECT ____________________ -- MAGIC | Cluster mode | Choose **Fixed size**| -- MAGIC | Workers | Enter **0**| -- MAGIC | Photon Acceleration | Leave it unchecked | --- MAGIC | Advanced Configuration | Click **Add Configuration** and enter:
- Key: **dataset_path**
- Value: **dbfs:/mnt/DE-Associate/datasets/school** | +-- MAGIC | Advanced Configuration | Click **Add Configuration** and enter:
- Key: **datasets.path**
- Value: **dbfs:/mnt/DE-Associate/datasets/school** | -- MAGIC | Channel | Choose **Current**| -- MAGIC -- MAGIC Finally, click **Create**. diff --git a/Labs/Solutions/4- Production Pipelines/4.1L Solution - Delta Live Tables.sql b/Labs/Solutions/4- Production Pipelines/4.1L Solution - Delta Live Tables.sql index 3b5686c..fd394bf 100644 --- a/Labs/Solutions/4- Production Pipelines/4.1L Solution - Delta Live Tables.sql +++ b/Labs/Solutions/4- Production Pipelines/4.1L Solution - Delta Live Tables.sql @@ -18,28 +18,32 @@ -- COMMAND ---------- +SET datasets.path=dbfs:/mnt/demo-datasets/bookstore; + +-- COMMAND ---------- + -- MAGIC %md -- MAGIC #### Q1- Declaring Bronze Tables -- MAGIC --- MAGIC Declare a streaming live table, **`enrollments_bronze`**, that ingests JSON data incrementally using Auto Loader from the directory **"${datasets_path}/enrollments-json-raw"** +-- MAGIC Declare a streaming live table, **`enrollments_bronze`**, that ingests JSON data incrementally using Auto Loader from the directory **"${datasets.path}/enrollments-json-raw"** -- COMMAND ---------- -- ANSWER CREATE OR REFRESH STREAMING LIVE TABLE enrollments_bronze -AS SELECT * FROM cloud_files("${dataset_path}/enrollments-json-raw", "json", +AS SELECT * FROM cloud_files("${datasets.path}/enrollments-json-raw", "json", map("cloudFiles.inferColumnTypes", "true")) -- COMMAND ---------- -- MAGIC %md --- MAGIC Declare a live table, **`students_bronze`**, that load data directly from JSON files in the directory **"${datasets_path}/students-json"** +-- MAGIC Declare a live table, **`students_bronze`**, that load data directly from JSON files in the directory **"${datasets.path}/students-json"** -- COMMAND ---------- -- ANSWER CREATE OR REFRESH LIVE TABLE students_bronze -AS SELECT * FROM json.`${dataset_path}/students-json` +AS SELECT * FROM json.`${datasets.path}/students-json` -- COMMAND ---------- @@ -113,7 +117,7 @@ AS -- MAGIC | Cluster mode | Choose **Fixed size**| -- MAGIC | Workers | Enter **0**| -- MAGIC | Photon Acceleration | Leave it unchecked | --- MAGIC | Advanced Configuration | Click **Add Configuration** and enter:
- Key: **dataset_path**
- Value: **dbfs:/mnt/DE-Associate/datasets/school** | +-- MAGIC | Advanced Configuration | Click **Add Configuration** and enter:
- Key: **datasets.path**
- Value: **dbfs:/mnt/DE-Associate/datasets/school** | -- MAGIC | Channel | Choose **Current**| -- MAGIC -- MAGIC Finally, click **Create**. From bb88c92b65f753b42a215b2e64e37ac76ac8947c Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Sun, 10 Mar 2024 02:56:15 +0000 Subject: [PATCH 15/28] Update lab datasets path --- Labs/4- Production Pipelines/4.1L - Delta Live Tables.sql | 2 +- .../4.1L Solution - Delta Live Tables.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Labs/4- Production Pipelines/4.1L - Delta Live Tables.sql b/Labs/4- Production Pipelines/4.1L - Delta Live Tables.sql index 6a92547..58a845c 100644 --- a/Labs/4- Production Pipelines/4.1L - Delta Live Tables.sql +++ b/Labs/4- Production Pipelines/4.1L - Delta Live Tables.sql @@ -18,7 +18,7 @@ -- COMMAND ---------- -SET datasets.path=dbfs:/mnt/demo-datasets/bookstore; +SET datasets.path=dbfs:/mnt/DE-Associate/datasets/school; -- COMMAND ---------- diff --git a/Labs/Solutions/4- Production Pipelines/4.1L Solution - Delta Live Tables.sql b/Labs/Solutions/4- Production Pipelines/4.1L Solution - Delta Live Tables.sql index fd394bf..a7cd3e8 100644 --- a/Labs/Solutions/4- Production Pipelines/4.1L Solution - Delta Live Tables.sql +++ b/Labs/Solutions/4- Production Pipelines/4.1L Solution - Delta Live Tables.sql @@ -18,7 +18,7 @@ -- COMMAND ---------- -SET datasets.path=dbfs:/mnt/demo-datasets/bookstore; +SET datasets.path=dbfs:/mnt/DE-Associate/datasets/school; -- COMMAND ---------- From 967b9ca9791044a77d041aa0c383ce334e3dc296 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Wed, 10 Apr 2024 06:42:02 +0000 Subject: [PATCH 16/28] Fix typo --- 3- Incremental Data Processing/3.2 - Auto Loader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3- Incremental Data Processing/3.2 - Auto Loader.py b/3- Incremental Data Processing/3.2 - Auto Loader.py index 293e334..c669291 100644 --- a/3- Incremental Data Processing/3.2 - Auto Loader.py +++ b/3- Incremental Data Processing/3.2 - Auto Loader.py @@ -13,7 +13,7 @@ # MAGIC %md # MAGIC -# MAGIC ## Exploring The Source dDirectory +# MAGIC ## Exploring The Source Directory # COMMAND ---------- From 105e69d7fbd9731538be4956afe0d97471120bfd Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Sun, 14 Jul 2024 01:28:06 +0000 Subject: [PATCH 17/28] Add use catalog commands --- .../1.2 - Understanding Delta Tables.sql | 4 ++++ .../1.3 - Advanced Delta Lake Features.sql | 4 ++++ ...4 - Databases and Tables on Databricks.sql | 2 ++ .../1.5A - Views.sql | 2 ++ .../1.5B - Views (Session 2).sql | 4 ++++ .../4.2 - Pipeline Results.py | 2 ++ .../5.1 - Managing Permissions.sql | 22 +++++++++---------- Includes/Copy-Datasets.py | 5 +++++ 8 files changed, 33 insertions(+), 12 deletions(-) diff --git a/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql b/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql index 30f833f..d20be47 100644 --- a/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql +++ b/1- Databricks Lakehouse Platform/1.2 - Understanding Delta Tables.sql @@ -4,6 +4,10 @@ -- COMMAND ---------- +USE CATALOG hive_metastore + +-- COMMAND ---------- + CREATE TABLE employees (id INT, name STRING, salary DOUBLE); diff --git a/1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features.sql b/1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features.sql index 260d342..30cb2e0 100644 --- a/1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features.sql +++ b/1- Databricks Lakehouse Platform/1.3 - Advanced Delta Lake Features.sql @@ -5,6 +5,10 @@ -- COMMAND ---------- +USE CATALOG hive_metastore + +-- COMMAND ---------- + DESCRIBE HISTORY employees -- COMMAND ---------- diff --git a/1- Databricks Lakehouse Platform/1.4 - Databases and Tables on Databricks.sql b/1- Databricks Lakehouse Platform/1.4 - Databases and Tables on Databricks.sql index d0431e6..0c4eb86 100644 --- a/1- Databricks Lakehouse Platform/1.4 - Databases and Tables on Databricks.sql +++ b/1- Databricks Lakehouse Platform/1.4 - Databases and Tables on Databricks.sql @@ -4,6 +4,8 @@ -- COMMAND ---------- +USE CATALOG hive_metastore; + CREATE TABLE managed_default (width INT, length INT, height INT); diff --git a/1- Databricks Lakehouse Platform/1.5A - Views.sql b/1- Databricks Lakehouse Platform/1.5A - Views.sql index e4fb1e8..165aceb 100644 --- a/1- Databricks Lakehouse Platform/1.5A - Views.sql +++ b/1- Databricks Lakehouse Platform/1.5A - Views.sql @@ -4,6 +4,8 @@ -- COMMAND ---------- +USE CATALOG hive_metastore; + CREATE TABLE IF NOT EXISTS smartphones (id INT, name STRING, brand STRING, year INT); diff --git a/1- Databricks Lakehouse Platform/1.5B - Views (Session 2).sql b/1- Databricks Lakehouse Platform/1.5B - Views (Session 2).sql index a955d62..e45e864 100644 --- a/1- Databricks Lakehouse Platform/1.5B - Views (Session 2).sql +++ b/1- Databricks Lakehouse Platform/1.5B - Views (Session 2).sql @@ -1,4 +1,8 @@ -- Databricks notebook source +USE CATALOG hive_metastore; + +-- COMMAND ---------- + SHOW TABLES; -- COMMAND ---------- diff --git a/4- Production Pipelines/4.2 - Pipeline Results.py b/4- Production Pipelines/4.2 - Pipeline Results.py index b53935b..6bfaa3b 100644 --- a/4- Production Pipelines/4.2 - Pipeline Results.py +++ b/4- Production Pipelines/4.2 - Pipeline Results.py @@ -20,6 +20,8 @@ # COMMAND ---------- # MAGIC %sql +# MAGIC USE CATALOG hive_metastore; +# MAGIC # MAGIC SELECT * FROM demo_bookstore_dlt_db.cn_daily_customer_books # COMMAND ---------- diff --git a/5- Data Governance/5.1 - Managing Permissions.sql b/5- Data Governance/5.1 - Managing Permissions.sql index 345bc8e..db643d4 100644 --- a/5- Data Governance/5.1 - Managing Permissions.sql +++ b/5- Data Governance/5.1 - Managing Permissions.sql @@ -1,11 +1,9 @@ -CREATE DATABASE IF NOT EXISTS hr_db +CREATE DATABASE IF NOT EXISTS hive_metastore.hr_db LOCATION 'dbfs:/mnt/demo/hr_db.db'; -USE hr_db; +CREATE TABLE hive_metastore.hr_db.employees (id INT, name STRING, salary DOUBLE, city STRING); -CREATE TABLE employees (id INT, name STRING, salary DOUBLE, city STRING); - -INSERT INTO employees +INSERT INTO hive_metastore.hr_db.employees VALUES (1, "Anna", 2500, "Paris"), (2, "Thomas", 3000, "London"), (3, "Bilal", 3500, "Paris"), @@ -14,17 +12,17 @@ VALUES (1, "Anna", 2500, "Paris"), (6, "Adam", 3500, "London"), (7, "Ali", 3000, "Paris"); -CREATE VIEW paris_emplyees_vw -AS SELECT * FROM employees WHERE city = 'Paris'; +CREATE VIEW hive_metastore.hr_db.paris_emplyees_vw +AS SELECT * FROM hive_metastore.hr_db.employees WHERE city = 'Paris'; ------------------------------------------------------ -GRANT SELECT, MODIFY, READ_METADATA, CREATE ON SCHEMA hr_db TO hr_team; +GRANT SELECT, MODIFY, READ_METADATA, CREATE ON SCHEMA hive_metastore.hr_db TO hr_team; -GRANT USAGE ON SCHEMA hr_db TO hr_team; +GRANT USAGE ON SCHEMA hive_metastore.hr_db TO hr_team; -GRANT SELECT ON VIEW hr_db.paris_emplyees_vw TO `adam@derar.cloud`; +GRANT SELECT ON VIEW hive_metastore.hr_db.paris_emplyees_vw TO `adam@derar.cloud`; -SHOW GRANTS ON SCHEMA hr_db; +SHOW GRANTS ON SCHEMA hive_metastore.hr_db; -SHOW GRANTS ON VIEW hr_db.paris_emplyees_vw; +SHOW GRANTS ON VIEW hive_metastore.hr_db.paris_emplyees_vw; diff --git a/Includes/Copy-Datasets.py b/Includes/Copy-Datasets.py index 44dcb8e..50c3b87 100644 --- a/Includes/Copy-Datasets.py +++ b/Includes/Copy-Datasets.py @@ -95,3 +95,8 @@ def load_new_json_data(all=False): # COMMAND ---------- download_dataset(data_source_uri, dataset_bookstore) + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC USE CATALOG hive_metastore From a206f125467d4f5ffc3638befd2e2b1ddcaa90a4 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Sun, 14 Jul 2024 02:43:31 +0000 Subject: [PATCH 18/28] Use three-level namespace --- 4- Production Pipelines/4.2 - Pipeline Results.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/4- Production Pipelines/4.2 - Pipeline Results.py b/4- Production Pipelines/4.2 - Pipeline Results.py index 6bfaa3b..09b7144 100644 --- a/4- Production Pipelines/4.2 - Pipeline Results.py +++ b/4- Production Pipelines/4.2 - Pipeline Results.py @@ -20,11 +20,9 @@ # COMMAND ---------- # MAGIC %sql -# MAGIC USE CATALOG hive_metastore; -# MAGIC -# MAGIC SELECT * FROM demo_bookstore_dlt_db.cn_daily_customer_books +# MAGIC SELECT * FROM hive_metastore.demo_bookstore_dlt_db.cn_daily_customer_books # COMMAND ---------- # MAGIC %sql -# MAGIC SELECT * FROM demo_bookstore_dlt_db.fr_daily_customer_books +# MAGIC SELECT * FROM hive_metastore.demo_bookstore_dlt_db.fr_daily_customer_books From bfe5559964d1716d434450f63d19a37746f42b72 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Sun, 14 Jul 2024 02:49:33 +0000 Subject: [PATCH 19/28] Add CDC select query --- 4- Production Pipelines/4.3 - Land New Data Task.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/4- Production Pipelines/4.3 - Land New Data Task.py b/4- Production Pipelines/4.3 - Land New Data Task.py index be10bfb..404285e 100644 --- a/4- Production Pipelines/4.3 - Land New Data Task.py +++ b/4- Production Pipelines/4.3 - Land New Data Task.py @@ -4,3 +4,8 @@ # COMMAND ---------- load_new_json_data() + +# COMMAND ---------- + +# MAGIC %sql +# MAGIC SELECT * from json.`${dataset.bookstore}/books-cdc/02.json` From 30d6753bbe4e4b23ac2e89eb8f5472ad1ab3659a Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Mon, 15 Jul 2024 01:26:29 +0000 Subject: [PATCH 20/28] Use catalog hive_metastore --- .../1.0L - Creating Clusters.py | 2 +- .../1.2L - Delta Lake.sql | 2 ++ ...L - Databases and Tables on Databricks.sql | 13 +++++++++- .../4.3L - Databricks SQL.sql | 6 ++--- Labs/Includes/Setup-Lab.py | 25 +++++++------------ .../1.0L Solution - Creating Clusters.py | 2 +- .../1.2L Solution - Delta Lake.sql | 2 ++ ...n - Databases and Tables on Databricks.sql | 13 +++++++++- .../4.3L Solution - Databricks SQL.sql | 6 ++--- Labs/Solutions/Includes/Setup-Lab.py | 25 +++++++------------ 10 files changed, 54 insertions(+), 42 deletions(-) diff --git a/Labs/1- Databricks Lakehouse Platform/1.0L - Creating Clusters.py b/Labs/1- Databricks Lakehouse Platform/1.0L - Creating Clusters.py index c804acf..1c9d89c 100644 --- a/Labs/1- Databricks Lakehouse Platform/1.0L - Creating Clusters.py +++ b/Labs/1- Databricks Lakehouse Platform/1.0L - Creating Clusters.py @@ -14,7 +14,7 @@ # MAGIC |--|--| # MAGIC |Cluster name|**Demo Cluster**| # MAGIC |Cluster mode|**Signle node**| -# MAGIC |Runtime version|Select the latest Databricks runtime version with LTS| +# MAGIC |Runtime version|Select the Databricks runtime version 13.3 LTS| # MAGIC |Photon Acceleration| Uncheck the option | # MAGIC |Node type|4 cores| # MAGIC |Auto termination|30 minutes| diff --git a/Labs/1- Databricks Lakehouse Platform/1.2L - Delta Lake.sql b/Labs/1- Databricks Lakehouse Platform/1.2L - Delta Lake.sql index 0c6a0c9..2aae47a 100644 --- a/Labs/1- Databricks Lakehouse Platform/1.2L - Delta Lake.sql +++ b/Labs/1- Databricks Lakehouse Platform/1.2L - Delta Lake.sql @@ -12,6 +12,8 @@ -- COMMAND ---------- +USE CATALOG hive_metastore; + CREATE OR REPLACE TABLE persons (id INT, name STRING, age INT); diff --git a/Labs/1- Databricks Lakehouse Platform/1.3L - Databases and Tables on Databricks.sql b/Labs/1- Databricks Lakehouse Platform/1.3L - Databases and Tables on Databricks.sql index c087f65..883814a 100644 --- a/Labs/1- Databricks Lakehouse Platform/1.3L - Databases and Tables on Databricks.sql +++ b/Labs/1- Databricks Lakehouse Platform/1.3L - Databases and Tables on Databricks.sql @@ -4,6 +4,17 @@ -- COMMAND ---------- +-- MAGIC %md +-- MAGIC #### Setting the default catalog +-- MAGIC +-- MAGIC Run the cell below to set the current catalog to **hive_metastore** + +-- COMMAND ---------- + +USE CATALOG hive_metastore; + +-- COMMAND ---------- + -- MAGIC %md -- MAGIC #### Q1 - Creating managed table -- MAGIC @@ -84,7 +95,7 @@ DESCRIBE EXTENDED actors_external -- COMMAND ---------- --- MAGIC %fs ls 'dbfs:/user/hive/warehouse/actors_external' +-- MAGIC %fs ls 'dbfs:/user/hive/warehouse/movies_managed' -- COMMAND ---------- diff --git a/Labs/4- Production Pipelines/4.3L - Databricks SQL.sql b/Labs/4- Production Pipelines/4.3L - Databricks SQL.sql index f4406d5..6a878b5 100644 --- a/Labs/4- Production Pipelines/4.3L - Databricks SQL.sql +++ b/Labs/4- Production Pipelines/4.3L - Databricks SQL.sql @@ -27,7 +27,7 @@ -- COMMAND ---------- SELECT profile:address:country as country, count(student_id) AS students_count -FROM de_associate_school.students +FROM hive_metastore.de_associate_school.students GROUP BY profile:address:country ORDER BY students_count DESC LIMIT 10 @@ -78,8 +78,8 @@ LIMIT 10 SELECT cast(from_unixtime(enroll_timestamp, 'yyyy-MM-dd HH:mm:ss') AS date) enroll_timestamp, sum(total) AS enrollments_amount -FROM de_associate_school.enrollments n -INNER JOIN de_associate_school.students s ON s.student_id = n.student_id +FROM hive_metastore.de_associate_school.enrollments n +INNER JOIN hive_metastore.de_associate_school.students s ON s.student_id = n.student_id GROUP BY enroll_timestamp -- COMMAND ---------- diff --git a/Labs/Includes/Setup-Lab.py b/Labs/Includes/Setup-Lab.py index d2121f3..3d467b5 100644 --- a/Labs/Includes/Setup-Lab.py +++ b/Labs/Includes/Setup-Lab.py @@ -68,6 +68,14 @@ def get_index(dir): # COMMAND ---------- +def set_current_schema(schema_name, catalog_name='hive_metastore'): + spark.sql(f"USE CATALOG {catalog_name}") + spark.sql(f"CREATE SCHEMA IF NOT EXISTS {schema_name}") + spark.sql(f"USE {schema_name}") + print(f"Schema for the hands-on labs: {catalog_name}.{schema_name}") + +# COMMAND ---------- + # Structured Streaming streaming_dir = f"{dataset_school}/enrollments-streaming" raw_dir = f"{dataset_school}/enrollments-raw" @@ -123,20 +131,5 @@ def load_new_json_data(all=False): # COMMAND ---------- - - -# COMMAND ---------- - download_dataset(data_source_uri, dataset_school) - -spark.sql(f"CREATE SCHEMA IF NOT EXISTS {db_name}") -spark.sql(f"USE {db_name}") -print(f"Schema for the hands-on labs: {db_name}") - -# COMMAND ---------- - - - -# COMMAND ---------- - - +set_current_schema(db_name) diff --git a/Labs/Solutions/1- Databricks Lakehouse Platform/1.0L Solution - Creating Clusters.py b/Labs/Solutions/1- Databricks Lakehouse Platform/1.0L Solution - Creating Clusters.py index c5b2824..8550ced 100644 --- a/Labs/Solutions/1- Databricks Lakehouse Platform/1.0L Solution - Creating Clusters.py +++ b/Labs/Solutions/1- Databricks Lakehouse Platform/1.0L Solution - Creating Clusters.py @@ -14,7 +14,7 @@ # MAGIC |--|--| # MAGIC |Cluster name|**Demo Cluster**| # MAGIC |Cluster mode|**Signle node**| -# MAGIC |Runtime version|Select the latest Databricks runtime version with LTS| +# MAGIC |Runtime version|Select the Databricks runtime version 13.3 LTS| # MAGIC |Photon Acceleration| Uncheck the option | # MAGIC |Node type|4 cores| # MAGIC |Auto termination|30 minutes| diff --git a/Labs/Solutions/1- Databricks Lakehouse Platform/1.2L Solution - Delta Lake.sql b/Labs/Solutions/1- Databricks Lakehouse Platform/1.2L Solution - Delta Lake.sql index 496e923..8278576 100644 --- a/Labs/Solutions/1- Databricks Lakehouse Platform/1.2L Solution - Delta Lake.sql +++ b/Labs/Solutions/1- Databricks Lakehouse Platform/1.2L Solution - Delta Lake.sql @@ -12,6 +12,8 @@ -- COMMAND ---------- +USE CATALOG hive_metastore; + CREATE OR REPLACE TABLE persons (id INT, name STRING, age INT); diff --git a/Labs/Solutions/1- Databricks Lakehouse Platform/1.3L Solution - Databases and Tables on Databricks.sql b/Labs/Solutions/1- Databricks Lakehouse Platform/1.3L Solution - Databases and Tables on Databricks.sql index cc075ec..5d69479 100644 --- a/Labs/Solutions/1- Databricks Lakehouse Platform/1.3L Solution - Databases and Tables on Databricks.sql +++ b/Labs/Solutions/1- Databricks Lakehouse Platform/1.3L Solution - Databases and Tables on Databricks.sql @@ -4,6 +4,17 @@ -- COMMAND ---------- +-- MAGIC %md +-- MAGIC #### Setting the default catalog +-- MAGIC +-- MAGIC Run the cell below to set the current catalog to **hive_metastore** + +-- COMMAND ---------- + +USE CATALOG hive_metastore + +-- COMMAND ---------- + -- MAGIC %md -- MAGIC #### Q1 - Creating managed table -- MAGIC @@ -90,7 +101,7 @@ DROP TABLE movies_managed -- COMMAND ---------- --- MAGIC %fs ls 'dbfs:/user/hive/warehouse/actors_external' +-- MAGIC %fs ls 'dbfs:/user/hive/warehouse/movies_managed' -- COMMAND ---------- diff --git a/Labs/Solutions/4- Production Pipelines/4.3L Solution - Databricks SQL.sql b/Labs/Solutions/4- Production Pipelines/4.3L Solution - Databricks SQL.sql index 2363e38..c5b32dd 100644 --- a/Labs/Solutions/4- Production Pipelines/4.3L Solution - Databricks SQL.sql +++ b/Labs/Solutions/4- Production Pipelines/4.3L Solution - Databricks SQL.sql @@ -27,7 +27,7 @@ -- COMMAND ---------- SELECT profile:address:country as country, count(student_id) AS students_count -FROM de_associate_school.students +FROM hive_metastore.de_associate_school.students GROUP BY profile:address:country ORDER BY students_count DESC LIMIT 10 @@ -78,8 +78,8 @@ LIMIT 10 SELECT cast(from_unixtime(enroll_timestamp, 'yyyy-MM-dd HH:mm:ss') AS date) enroll_timestamp, sum(total) AS enrollments_amount -FROM de_associate_school.enrollments n -INNER JOIN de_associate_school.students s ON s.student_id = n.student_id +FROM hive_metastore.de_associate_school.enrollments n +INNER JOIN hive_metastore.de_associate_school.students s ON s.student_id = n.student_id GROUP BY enroll_timestamp -- COMMAND ---------- diff --git a/Labs/Solutions/Includes/Setup-Lab.py b/Labs/Solutions/Includes/Setup-Lab.py index d2121f3..3d467b5 100644 --- a/Labs/Solutions/Includes/Setup-Lab.py +++ b/Labs/Solutions/Includes/Setup-Lab.py @@ -68,6 +68,14 @@ def get_index(dir): # COMMAND ---------- +def set_current_schema(schema_name, catalog_name='hive_metastore'): + spark.sql(f"USE CATALOG {catalog_name}") + spark.sql(f"CREATE SCHEMA IF NOT EXISTS {schema_name}") + spark.sql(f"USE {schema_name}") + print(f"Schema for the hands-on labs: {catalog_name}.{schema_name}") + +# COMMAND ---------- + # Structured Streaming streaming_dir = f"{dataset_school}/enrollments-streaming" raw_dir = f"{dataset_school}/enrollments-raw" @@ -123,20 +131,5 @@ def load_new_json_data(all=False): # COMMAND ---------- - - -# COMMAND ---------- - download_dataset(data_source_uri, dataset_school) - -spark.sql(f"CREATE SCHEMA IF NOT EXISTS {db_name}") -spark.sql(f"USE {db_name}") -print(f"Schema for the hands-on labs: {db_name}") - -# COMMAND ---------- - - - -# COMMAND ---------- - - +set_current_schema(db_name) From f73ef31a055adf916c2f25eea0150e9d1794389d Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Mon, 15 Jul 2024 01:33:28 +0000 Subject: [PATCH 21/28] Define function to set catalog --- Includes/Copy-Datasets.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Includes/Copy-Datasets.py b/Includes/Copy-Datasets.py index 50c3b87..4b0c58c 100644 --- a/Includes/Copy-Datasets.py +++ b/Includes/Copy-Datasets.py @@ -25,6 +25,7 @@ def download_dataset(source, target): data_source_uri = "wasbs://course-resources@dalhussein.blob.core.windows.net/datasets/bookstore/v1/" dataset_bookstore = 'dbfs:/mnt/demo-datasets/bookstore' +data_catalog = 'hive_metastore' spark.conf.set(f"dataset.bookstore", dataset_bookstore) # COMMAND ---------- @@ -39,6 +40,11 @@ def get_index(dir): # COMMAND ---------- +def set_current_catalog(catalog_name): + spark.sql(f"USE CATALOG {catalog_name}") + +# COMMAND ---------- + # Structured Streaming streaming_dir = f"{dataset_bookstore}/orders-streaming" raw_dir = f"{dataset_bookstore}/orders-raw" @@ -95,8 +101,4 @@ def load_new_json_data(all=False): # COMMAND ---------- download_dataset(data_source_uri, dataset_bookstore) - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC USE CATALOG hive_metastore +set_current_catalog(data_catalog) From 8cf8ae89a0053e3b5e17ee6c5d8bf1432c0bb368 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Mon, 15 Jul 2024 01:36:50 +0000 Subject: [PATCH 22/28] Add instructions for creating clusters --- .../1.0 - Creating Clusters.py | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 1- Databricks Lakehouse Platform/1.0 - Creating Clusters.py diff --git a/1- Databricks Lakehouse Platform/1.0 - Creating Clusters.py b/1- Databricks Lakehouse Platform/1.0 - Creating Clusters.py new file mode 100644 index 0000000..5d339c3 --- /dev/null +++ b/1- Databricks Lakehouse Platform/1.0 - Creating Clusters.py @@ -0,0 +1,75 @@ +# Databricks notebook source +# MAGIC %md +# MAGIC +# MAGIC ## Creating Clusters + +# COMMAND ---------- + +# MAGIC %md +# MAGIC #### Creating a Demo Cluster +# MAGIC +# MAGIC Create a cluster with the following configurations: +# MAGIC +# MAGIC | Setting | Instructions | +# MAGIC |--|--| +# MAGIC |Cluster name|**Demo Cluster**| +# MAGIC |Cluster mode|**Signle node**| +# MAGIC |Runtime version|Select the Databricks runtime version 13.3 LTS| +# MAGIC |Photon Acceleration| Uncheck the option | +# MAGIC |Node type|4 cores| +# MAGIC |Auto termination|30 minutes| +# MAGIC + +# COMMAND ---------- + +# MAGIC %md +# MAGIC 1- Navigate to the **Compute** tab in the left side bar. +# MAGIC +# MAGIC 2- Under **All-purpose compute** tab, click **Create compute**. +# MAGIC + +# COMMAND ---------- + +# MAGIC %md-sandbox +# MAGIC +# MAGIC
+# MAGIC +# MAGIC
+ +# COMMAND ---------- + +# MAGIC %md +# MAGIC 3- On top, click on the default name to change it. Name your cluster as **Demo Cluster** +# MAGIC +# MAGIC 4- Select **Single node** cluster +# MAGIC + +# COMMAND ---------- + +# MAGIC %md-sandbox +# MAGIC +# MAGIC
+# MAGIC +# MAGIC
+ +# COMMAND ---------- + +# MAGIC %md +# MAGIC 5- Select the latest Databricks runtime version with LTS (Long Term Support) +# MAGIC +# MAGIC 6- Uncheck the option for the **Use Photon Acceleration** +# MAGIC +# MAGIC 7- Select a Node type of 4 cores +# MAGIC +# MAGIC 8- Set the auto termination of the cluster to 30 minutes +# MAGIC +# MAGIC 9- Lastly, click **Create compute**. +# MAGIC + +# COMMAND ---------- + +# MAGIC %md-sandbox +# MAGIC +# MAGIC
+# MAGIC +# MAGIC
From 7cd18847b63e579eaa4dabe4404799b4153b7b19 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Mon, 15 Jul 2024 01:39:40 +0000 Subject: [PATCH 23/28] Specify the runtime version --- 1- Databricks Lakehouse Platform/1.0 - Creating Clusters.py | 2 +- .../1.0L Solution - Creating Clusters.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/1- Databricks Lakehouse Platform/1.0 - Creating Clusters.py b/1- Databricks Lakehouse Platform/1.0 - Creating Clusters.py index 5d339c3..210da5a 100644 --- a/1- Databricks Lakehouse Platform/1.0 - Creating Clusters.py +++ b/1- Databricks Lakehouse Platform/1.0 - Creating Clusters.py @@ -55,7 +55,7 @@ # COMMAND ---------- # MAGIC %md -# MAGIC 5- Select the latest Databricks runtime version with LTS (Long Term Support) +# MAGIC 5- Select the Databricks runtime version 13.3 LTS (Long Term Support) # MAGIC # MAGIC 6- Uncheck the option for the **Use Photon Acceleration** # MAGIC diff --git a/Labs/Solutions/1- Databricks Lakehouse Platform/1.0L Solution - Creating Clusters.py b/Labs/Solutions/1- Databricks Lakehouse Platform/1.0L Solution - Creating Clusters.py index 8550ced..ebcb29f 100644 --- a/Labs/Solutions/1- Databricks Lakehouse Platform/1.0L Solution - Creating Clusters.py +++ b/Labs/Solutions/1- Databricks Lakehouse Platform/1.0L Solution - Creating Clusters.py @@ -55,7 +55,7 @@ # COMMAND ---------- # MAGIC %md -# MAGIC 5- Select the latest Databricks runtime version with LTS (Long Term Support) +# MAGIC 5- Select the Databricks runtime version 13.3 LTS (Long Term Support) # MAGIC # MAGIC 6- Uncheck the option for the **Use Photon Acceleration** # MAGIC From 156b181399792346145579ccee08bed68046b041 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Sun, 24 Nov 2024 16:16:12 +0000 Subject: [PATCH 24/28] Update source --- Includes/Copy-Datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Includes/Copy-Datasets.py b/Includes/Copy-Datasets.py index 4b0c58c..d3274e4 100644 --- a/Includes/Copy-Datasets.py +++ b/Includes/Copy-Datasets.py @@ -23,7 +23,7 @@ def download_dataset(source, target): # COMMAND ---------- -data_source_uri = "wasbs://course-resources@dalhussein.blob.core.windows.net/datasets/bookstore/v1/" +data_source_uri = "s3://dalhussein-courses/datasets/bookstore/v1/" dataset_bookstore = 'dbfs:/mnt/demo-datasets/bookstore' data_catalog = 'hive_metastore' spark.conf.set(f"dataset.bookstore", dataset_bookstore) From fa15f8b9bc281c22d00086ea2a9224a5c81b9550 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Wed, 4 Dec 2024 11:05:49 +0000 Subject: [PATCH 25/28] Update lab source --- Labs/Includes/Setup-Lab.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Labs/Includes/Setup-Lab.py b/Labs/Includes/Setup-Lab.py index 3d467b5..d2c548e 100644 --- a/Labs/Includes/Setup-Lab.py +++ b/Labs/Includes/Setup-Lab.py @@ -1,5 +1,5 @@ # Databricks notebook source -data_source_uri = "wasbs://course-resources@dalhussein.blob.core.windows.net/datasets/school/v1/" +data_source_uri = "s3://dalhussein-courses/datasets/school/v1/" dataset_school = 'dbfs:/mnt/DE-Associate/datasets/school' checkpoint_path = 'dbfs:/mnt/DE-Associate/checkpoints/school' dlt_path = 'dbfs:/mnt/DE-Associate/dlt/school' From 482d8a3fb286d95c63b13f19a3775cd67af117d8 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Wed, 4 Dec 2024 11:10:49 +0000 Subject: [PATCH 26/28] Update lab source --- Labs/Solutions/Includes/Setup-Lab.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Labs/Solutions/Includes/Setup-Lab.py b/Labs/Solutions/Includes/Setup-Lab.py index 3d467b5..d2c548e 100644 --- a/Labs/Solutions/Includes/Setup-Lab.py +++ b/Labs/Solutions/Includes/Setup-Lab.py @@ -1,5 +1,5 @@ # Databricks notebook source -data_source_uri = "wasbs://course-resources@dalhussein.blob.core.windows.net/datasets/school/v1/" +data_source_uri = "s3://dalhussein-courses/datasets/school/v1/" dataset_school = 'dbfs:/mnt/DE-Associate/datasets/school' checkpoint_path = 'dbfs:/mnt/DE-Associate/checkpoints/school' dlt_path = 'dbfs:/mnt/DE-Associate/dlt/school' From 993cd7dccdc05400b33302c809313e25ec1504b3 Mon Sep 17 00:00:00 2001 From: Derar Alhussein <10679879+derar-alhussein@users.noreply.github.com> Date: Tue, 18 Feb 2025 02:54:35 +0400 Subject: [PATCH 27/28] Update README.md --- README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 07e748f..c81d2d5 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,16 @@ # Databricks Certified Data Engineer Associate +Databricks Certified Data Engineer Associate - Preparation This repository contains the resources of the preparation course for Databricks Data Engineer Associate certification exam on Udemy: +
+https://www.udemy.com/course/databricks-certified-data-engineer-associate/?referralCode=F0FA48E9A0546C975F14. +
+
-https://www.udemy.com/course/databricks-certified-data-engineer-associate/?referralCode=F0FA48E9A0546C975F14.
+## Practice Exams -To import these resources into your Databricks workspace, clone this repository via Databricks Repos. +Practice Exams: Databricks Certified Data Engineer Associate +Practice exams for this certification are available in the following Udemy course: +
+https://www.udemy.com/course/practice-exams-databricks-certified-data-engineer-associate/?referralCode=9AA679C03D1F51B2C956.
From ea79933e093b680ac41518c26dee5555e3756758 Mon Sep 17 00:00:00 2001 From: derar-alhussein Date: Mon, 7 Apr 2025 02:45:53 +0000 Subject: [PATCH 28/28] Configure S3 for anonymous access --- Includes/Copy-Datasets.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Includes/Copy-Datasets.py b/Includes/Copy-Datasets.py index d3274e4..ec6ef9f 100644 --- a/Includes/Copy-Datasets.py +++ b/Includes/Copy-Datasets.py @@ -27,6 +27,8 @@ def download_dataset(source, target): dataset_bookstore = 'dbfs:/mnt/demo-datasets/bookstore' data_catalog = 'hive_metastore' spark.conf.set(f"dataset.bookstore", dataset_bookstore) +spark.conf.set("fs.s3a.endpoint", "s3.eu-west-3.amazonaws.com") +spark.conf.set("fs.s3a.aws.credentials.provider", "org.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProvider") # COMMAND ----------