databricksedu 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- databricksedu/__init__.py +24 -0
- databricksedu/_content/catalog.json +1923 -0
- databricksedu/_content/nb/agents-tools.json.gz +0 -0
- databricksedu/_content/nb/ai-bi-dashboards.json.gz +0 -0
- databricksedu/_content/nb/ai-functions-gateway.json.gz +0 -0
- databricksedu/_content/nb/asset-bundles-cicd.json.gz +0 -0
- databricksedu/_content/nb/asset-bundles-recap.json.gz +0 -0
- databricksedu/_content/nb/auto-loader-copy-into.json.gz +0 -0
- databricksedu/_content/nb/cdc-data.json.gz +0 -0
- databricksedu/_content/nb/cdc-scd.json.gz +0 -0
- databricksedu/_content/nb/change-data-feed.json.gz +0 -0
- databricksedu/_content/nb/chunking-parsing.json.gz +0 -0
- databricksedu/_content/nb/churn-data.json.gz +0 -0
- databricksedu/_content/nb/data-privacy-recap.json.gz +0 -0
- databricksedu/_content/nb/data-quality-expectations.json.gz +0 -0
- databricksedu/_content/nb/declarative-pipelines-recap.json.gz +0 -0
- databricksedu/_content/nb/declarative-pipelines.json.gz +0 -0
- databricksedu/_content/nb/deletion-vectors.json.gz +0 -0
- databricksedu/_content/nb/delta-acid-concurrency.json.gz +0 -0
- databricksedu/_content/nb/delta-dml-merge.json.gz +0 -0
- databricksedu/_content/nb/delta-optimization.json.gz +0 -0
- databricksedu/_content/nb/delta-sharing.json.gz +0 -0
- databricksedu/_content/nb/delta-table-anatomy.json.gz +0 -0
- databricksedu/_content/nb/delta-time-travel-vacuum.json.gz +0 -0
- databricksedu/_content/nb/delta-transaction-log.json.gz +0 -0
- databricksedu/_content/nb/devops-essentials-recap.json.gz +0 -0
- databricksedu/_content/nb/embeddings-vector-search.json.gz +0 -0
- databricksedu/_content/nb/exam-data-analyst-associate.json.gz +0 -0
- databricksedu/_content/nb/exam-data-engineer-associate.json.gz +0 -0
- databricksedu/_content/nb/exam-data-engineer-professional.json.gz +0 -0
- databricksedu/_content/nb/exam-genai-engineer-associate.json.gz +0 -0
- databricksedu/_content/nb/exam-ml-associate.json.gz +0 -0
- databricksedu/_content/nb/exam-ml-professional.json.gz +0 -0
- databricksedu/_content/nb/exam-spark-developer-associate.json.gz +0 -0
- databricksedu/_content/nb/feature-engineering.json.gz +0 -0
- databricksedu/_content/nb/genai-evaluation.json.gz +0 -0
- databricksedu/_content/nb/genie-spaces.json.gz +0 -0
- databricksedu/_content/nb/hr-data.json.gz +0 -0
- databricksedu/_content/nb/hyperparameter-tuning.json.gz +0 -0
- databricksedu/_content/nb/iot-data.json.gz +0 -0
- databricksedu/_content/nb/lakeflow-connect-recap.json.gz +0 -0
- databricksedu/_content/nb/lakeflow-jobs-recap.json.gz +0 -0
- databricksedu/_content/nb/lakeflow-jobs.json.gz +0 -0
- databricksedu/_content/nb/lakehouse-architecture.json.gz +0 -0
- databricksedu/_content/nb/lineage-system-tables.json.gz +0 -0
- databricksedu/_content/nb/llm-basics.json.gz +0 -0
- databricksedu/_content/nb/medallion-architecture.json.gz +0 -0
- databricksedu/_content/nb/metric-views.json.gz +0 -0
- databricksedu/_content/nb/ml-lifecycle.json.gz +0 -0
- databricksedu/_content/nb/mlflow-tracking.json.gz +0 -0
- databricksedu/_content/nb/model-monitoring.json.gz +0 -0
- databricksedu/_content/nb/model-serving.json.gz +0 -0
- databricksedu/_content/nb/models-in-unity-catalog.json.gz +0 -0
- databricksedu/_content/nb/parquet-files.json.gz +0 -0
- databricksedu/_content/nb/performance-optimization-recap.json.gz +0 -0
- databricksedu/_content/nb/prompt-engineering.json.gz +0 -0
- databricksedu/_content/nb/rag-architecture.json.gz +0 -0
- databricksedu/_content/nb/retail-data.json.gz +0 -0
- databricksedu/_content/nb/row-filters-column-masks.json.gz +0 -0
- databricksedu/_content/nb/schema-enforcement-evolution.json.gz +0 -0
- databricksedu/_content/nb/spark-architecture.json.gz +0 -0
- databricksedu/_content/nb/spark-joins-shuffles.json.gz +0 -0
- databricksedu/_content/nb/sql-warehouses.json.gz +0 -0
- databricksedu/_content/nb/streaming-pipelines-recap.json.gz +0 -0
- databricksedu/_content/nb/structured-streaming-basics.json.gz +0 -0
- databricksedu/_content/nb/support-data.json.gz +0 -0
- databricksedu/_content/nb/uc-privileges.json.gz +0 -0
- databricksedu/_content/nb/unity-catalog-basics.json.gz +0 -0
- databricksedu/_content/nb/watermarks-stateful-streaming.json.gz +0 -0
- databricksedu/_content/web/agents-tools.b64 +1 -0
- databricksedu/_content/web/ai-bi-dashboards.b64 +1 -0
- databricksedu/_content/web/ai-functions-gateway.b64 +1 -0
- databricksedu/_content/web/asset-bundles-cicd.b64 +1 -0
- databricksedu/_content/web/asset-bundles-recap.b64 +1 -0
- databricksedu/_content/web/auto-loader-copy-into.b64 +1 -0
- databricksedu/_content/web/cdc-data.b64 +1 -0
- databricksedu/_content/web/cdc-scd.b64 +1 -0
- databricksedu/_content/web/change-data-feed.b64 +1 -0
- databricksedu/_content/web/chunking-parsing.b64 +1 -0
- databricksedu/_content/web/churn-data.b64 +1 -0
- databricksedu/_content/web/data-privacy-recap.b64 +1 -0
- databricksedu/_content/web/data-quality-expectations.b64 +1 -0
- databricksedu/_content/web/declarative-pipelines-recap.b64 +1 -0
- databricksedu/_content/web/declarative-pipelines.b64 +1 -0
- databricksedu/_content/web/deletion-vectors.b64 +1 -0
- databricksedu/_content/web/delta-acid-concurrency.b64 +1 -0
- databricksedu/_content/web/delta-dml-merge.b64 +1 -0
- databricksedu/_content/web/delta-optimization.b64 +1 -0
- databricksedu/_content/web/delta-sharing.b64 +1 -0
- databricksedu/_content/web/delta-table-anatomy.b64 +1 -0
- databricksedu/_content/web/delta-time-travel-vacuum.b64 +1 -0
- databricksedu/_content/web/delta-transaction-log.b64 +1 -0
- databricksedu/_content/web/devops-essentials-recap.b64 +1 -0
- databricksedu/_content/web/embeddings-vector-search.b64 +1 -0
- databricksedu/_content/web/exam-data-analyst-associate.b64 +1 -0
- databricksedu/_content/web/exam-data-engineer-associate.b64 +1 -0
- databricksedu/_content/web/exam-data-engineer-professional.b64 +1 -0
- databricksedu/_content/web/exam-genai-engineer-associate.b64 +1 -0
- databricksedu/_content/web/exam-ml-associate.b64 +1 -0
- databricksedu/_content/web/exam-ml-professional.b64 +1 -0
- databricksedu/_content/web/exam-spark-developer-associate.b64 +1 -0
- databricksedu/_content/web/feature-engineering.b64 +1 -0
- databricksedu/_content/web/genai-evaluation.b64 +1 -0
- databricksedu/_content/web/genie-spaces.b64 +1 -0
- databricksedu/_content/web/hr-data.b64 +1 -0
- databricksedu/_content/web/hyperparameter-tuning.b64 +1 -0
- databricksedu/_content/web/iot-data.b64 +1 -0
- databricksedu/_content/web/lakeflow-connect-recap.b64 +1 -0
- databricksedu/_content/web/lakeflow-jobs-recap.b64 +1 -0
- databricksedu/_content/web/lakeflow-jobs.b64 +1 -0
- databricksedu/_content/web/lakehouse-architecture.b64 +1 -0
- databricksedu/_content/web/lineage-system-tables.b64 +1 -0
- databricksedu/_content/web/llm-basics.b64 +1 -0
- databricksedu/_content/web/medallion-architecture.b64 +1 -0
- databricksedu/_content/web/metric-views.b64 +1 -0
- databricksedu/_content/web/ml-lifecycle.b64 +1 -0
- databricksedu/_content/web/mlflow-tracking.b64 +1 -0
- databricksedu/_content/web/model-monitoring.b64 +1 -0
- databricksedu/_content/web/model-serving.b64 +1 -0
- databricksedu/_content/web/models-in-unity-catalog.b64 +1 -0
- databricksedu/_content/web/parquet-files.b64 +1 -0
- databricksedu/_content/web/performance-optimization-recap.b64 +1 -0
- databricksedu/_content/web/prompt-engineering.b64 +1 -0
- databricksedu/_content/web/rag-architecture.b64 +1 -0
- databricksedu/_content/web/retail-data.b64 +1 -0
- databricksedu/_content/web/row-filters-column-masks.b64 +1 -0
- databricksedu/_content/web/schema-enforcement-evolution.b64 +1 -0
- databricksedu/_content/web/spark-architecture.b64 +1 -0
- databricksedu/_content/web/spark-joins-shuffles.b64 +1 -0
- databricksedu/_content/web/sql-warehouses.b64 +1 -0
- databricksedu/_content/web/streaming-pipelines-recap.b64 +1 -0
- databricksedu/_content/web/structured-streaming-basics.b64 +1 -0
- databricksedu/_content/web/support-data.b64 +1 -0
- databricksedu/_content/web/uc-privileges.b64 +1 -0
- databricksedu/_content/web/unity-catalog-basics.b64 +1 -0
- databricksedu/_content/web/watermarks-stateful-streaming.b64 +1 -0
- databricksedu/_version.py +1 -0
- databricksedu/app.py +192 -0
- databricksedu/assets/app.css +1 -0
- databricksedu/assets/app.js +353 -0
- databricksedu/assets/dbx.css +1 -0
- databricksedu/assets/quiz.js +47 -0
- databricksedu/assets/viz.css +1 -0
- databricksedu/assets/viz.js +84 -0
- databricksedu/catalog.py +95 -0
- databricksedu/data/__init__.py +58 -0
- databricksedu/data/_core.py +339 -0
- databricksedu/data/cdc.py +75 -0
- databricksedu/data/churn.py +74 -0
- databricksedu/data/hr.py +58 -0
- databricksedu/data/iot.py +86 -0
- databricksedu/data/retail.py +77 -0
- databricksedu/data/support.py +128 -0
- databricksedu/workspace.py +157 -0
- databricksedu-0.1.0.dist-info/METADATA +131 -0
- databricksedu-0.1.0.dist-info/RECORD +158 -0
- databricksedu-0.1.0.dist-info/WHEEL +4 -0
- databricksedu-0.1.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,1923 @@
|
|
|
1
|
+
{
|
|
2
|
+
"categories": [
|
|
3
|
+
{
|
|
4
|
+
"id": "data-engineering",
|
|
5
|
+
"title": "Data Engineering",
|
|
6
|
+
"icon": "🛠️",
|
|
7
|
+
"desc": "From Parquet files and the Delta transaction log to streaming pipelines, jobs and CI/CD. Small modules, one idea each.",
|
|
8
|
+
"modules": [
|
|
9
|
+
{
|
|
10
|
+
"id": "lakehouse-architecture",
|
|
11
|
+
"order": 10,
|
|
12
|
+
"title": "Lakehouse architecture",
|
|
13
|
+
"summary": "Why data warehouses and data lakes each fall short, what turns a lake into a lakehouse, and how the Databricks platform is layered from cloud storage up to your workloads.",
|
|
14
|
+
"icon": "🏠",
|
|
15
|
+
"level": "Beginner",
|
|
16
|
+
"minutes": 9,
|
|
17
|
+
"tags": [
|
|
18
|
+
"Lakehouse",
|
|
19
|
+
"Architecture",
|
|
20
|
+
"Delta Lake",
|
|
21
|
+
"Unity Catalog",
|
|
22
|
+
"Compute"
|
|
23
|
+
],
|
|
24
|
+
"group": "Lakehouse foundations",
|
|
25
|
+
"slides": 13,
|
|
26
|
+
"quiz": 5,
|
|
27
|
+
"exercises": 2,
|
|
28
|
+
"demo": true,
|
|
29
|
+
"datasets": [
|
|
30
|
+
"retail"
|
|
31
|
+
],
|
|
32
|
+
"notebooks": [
|
|
33
|
+
"01 Lecture - Lakehouse architecture",
|
|
34
|
+
"02 Exercises - Lakehouse architecture"
|
|
35
|
+
],
|
|
36
|
+
"n": 1
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "parquet-files",
|
|
40
|
+
"order": 20,
|
|
41
|
+
"title": "Parquet files",
|
|
42
|
+
"summary": "Open a Parquet file and see what is inside: row groups, column chunks, pages and a footer full of statistics. Learn why that layout makes queries fast and why the files are never edited.",
|
|
43
|
+
"icon": "📦",
|
|
44
|
+
"level": "Beginner",
|
|
45
|
+
"minutes": 10,
|
|
46
|
+
"tags": [
|
|
47
|
+
"Parquet",
|
|
48
|
+
"File formats",
|
|
49
|
+
"Columnar storage",
|
|
50
|
+
"Data skipping"
|
|
51
|
+
],
|
|
52
|
+
"group": "Lakehouse foundations",
|
|
53
|
+
"slides": 14,
|
|
54
|
+
"quiz": 5,
|
|
55
|
+
"exercises": 2,
|
|
56
|
+
"demo": true,
|
|
57
|
+
"datasets": [
|
|
58
|
+
"retail"
|
|
59
|
+
],
|
|
60
|
+
"notebooks": [
|
|
61
|
+
"01 Lecture - Parquet files",
|
|
62
|
+
"02 Exercises - Parquet files"
|
|
63
|
+
],
|
|
64
|
+
"n": 2
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "medallion-architecture",
|
|
68
|
+
"order": 30,
|
|
69
|
+
"title": "Medallion architecture",
|
|
70
|
+
"summary": "Bronze, silver and gold are three promises about data quality. Learn what belongs in each layer, why raw data is kept, and build a small medallion flow in SQL.",
|
|
71
|
+
"icon": "🏅",
|
|
72
|
+
"level": "Beginner",
|
|
73
|
+
"minutes": 9,
|
|
74
|
+
"tags": [
|
|
75
|
+
"Medallion",
|
|
76
|
+
"Bronze",
|
|
77
|
+
"Silver",
|
|
78
|
+
"Gold"
|
|
79
|
+
],
|
|
80
|
+
"group": "Lakehouse foundations",
|
|
81
|
+
"slides": 14,
|
|
82
|
+
"quiz": 5,
|
|
83
|
+
"exercises": 3,
|
|
84
|
+
"demo": true,
|
|
85
|
+
"datasets": [
|
|
86
|
+
"retail"
|
|
87
|
+
],
|
|
88
|
+
"notebooks": [
|
|
89
|
+
"01 Lecture - Medallion architecture",
|
|
90
|
+
"02 Exercises - Medallion architecture"
|
|
91
|
+
],
|
|
92
|
+
"n": 3
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": "unity-catalog-basics",
|
|
96
|
+
"order": 40,
|
|
97
|
+
"title": "Unity Catalog basics",
|
|
98
|
+
"summary": "Find your way around Unity Catalog: the metastore, catalog, schema and object hierarchy, three-level names, managed and external tables, volumes for files, and the information_schema.",
|
|
99
|
+
"icon": "🗄️",
|
|
100
|
+
"level": "Beginner",
|
|
101
|
+
"minutes": 10,
|
|
102
|
+
"tags": [
|
|
103
|
+
"Unity Catalog",
|
|
104
|
+
"Governance",
|
|
105
|
+
"Managed tables",
|
|
106
|
+
"Volumes"
|
|
107
|
+
],
|
|
108
|
+
"group": "Lakehouse foundations",
|
|
109
|
+
"slides": 14,
|
|
110
|
+
"quiz": 5,
|
|
111
|
+
"exercises": 2,
|
|
112
|
+
"demo": true,
|
|
113
|
+
"datasets": [
|
|
114
|
+
"retail"
|
|
115
|
+
],
|
|
116
|
+
"notebooks": [
|
|
117
|
+
"01 Lecture - Unity Catalog basics",
|
|
118
|
+
"02 Exercises - Unity Catalog basics"
|
|
119
|
+
],
|
|
120
|
+
"n": 4
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "delta-table-anatomy",
|
|
124
|
+
"order": 50,
|
|
125
|
+
"title": "Anatomy of a Delta table",
|
|
126
|
+
"summary": "A Delta table is a folder. See which files are in it, what each one does, and how the folder changes when you insert, update, compact and vacuum.",
|
|
127
|
+
"icon": "🧬",
|
|
128
|
+
"level": "Beginner",
|
|
129
|
+
"minutes": 10,
|
|
130
|
+
"tags": [
|
|
131
|
+
"Delta Lake",
|
|
132
|
+
"Parquet",
|
|
133
|
+
"Transaction log"
|
|
134
|
+
],
|
|
135
|
+
"group": "Delta Lake internals",
|
|
136
|
+
"slides": 15,
|
|
137
|
+
"quiz": 5,
|
|
138
|
+
"exercises": 3,
|
|
139
|
+
"demo": true,
|
|
140
|
+
"datasets": [
|
|
141
|
+
"retail"
|
|
142
|
+
],
|
|
143
|
+
"notebooks": [
|
|
144
|
+
"01 Lecture - Anatomy of a Delta table",
|
|
145
|
+
"02 Exercises - Anatomy of a Delta table"
|
|
146
|
+
],
|
|
147
|
+
"n": 5
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"id": "delta-transaction-log",
|
|
151
|
+
"order": 60,
|
|
152
|
+
"title": "The Delta transaction log",
|
|
153
|
+
"summary": "Read a Delta commit file line by line. Learn every action type, how per-file statistics enable data skipping, how checkpoints keep reads fast, and how a reader rebuilds a table version.",
|
|
154
|
+
"icon": "📜",
|
|
155
|
+
"level": "Intermediate",
|
|
156
|
+
"minutes": 12,
|
|
157
|
+
"tags": [
|
|
158
|
+
"Delta Lake",
|
|
159
|
+
"Transaction log",
|
|
160
|
+
"Checkpoints",
|
|
161
|
+
"Data skipping"
|
|
162
|
+
],
|
|
163
|
+
"group": "Delta Lake internals",
|
|
164
|
+
"slides": 14,
|
|
165
|
+
"quiz": 5,
|
|
166
|
+
"exercises": 2,
|
|
167
|
+
"demo": true,
|
|
168
|
+
"datasets": [
|
|
169
|
+
"retail"
|
|
170
|
+
],
|
|
171
|
+
"notebooks": [
|
|
172
|
+
"01 Lecture - The Delta transaction log",
|
|
173
|
+
"02 Exercises - The Delta transaction log"
|
|
174
|
+
],
|
|
175
|
+
"n": 6
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"id": "delta-acid-concurrency",
|
|
179
|
+
"order": 70,
|
|
180
|
+
"title": "ACID and concurrency in Delta Lake",
|
|
181
|
+
"summary": "How Delta Lake gets atomic, isolated commits on object storage with no locks. Learn optimistic concurrency, the two isolation levels, which operations conflict, and how to avoid conflict exceptions.",
|
|
182
|
+
"icon": "⚛️",
|
|
183
|
+
"level": "Intermediate",
|
|
184
|
+
"minutes": 11,
|
|
185
|
+
"tags": [
|
|
186
|
+
"Delta Lake",
|
|
187
|
+
"ACID",
|
|
188
|
+
"Concurrency",
|
|
189
|
+
"Isolation levels"
|
|
190
|
+
],
|
|
191
|
+
"group": "Delta Lake internals",
|
|
192
|
+
"slides": 14,
|
|
193
|
+
"quiz": 5,
|
|
194
|
+
"exercises": 2,
|
|
195
|
+
"demo": true,
|
|
196
|
+
"datasets": [
|
|
197
|
+
"retail"
|
|
198
|
+
],
|
|
199
|
+
"notebooks": [
|
|
200
|
+
"01 Lecture - ACID and concurrency in Delta Lake",
|
|
201
|
+
"02 Exercises - ACID and concurrency in Delta Lake"
|
|
202
|
+
],
|
|
203
|
+
"n": 7
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"id": "delta-time-travel-vacuum",
|
|
207
|
+
"order": 80,
|
|
208
|
+
"title": "Time travel, RESTORE and VACUUM",
|
|
209
|
+
"summary": "Query any recent version of a Delta table, undo a bad write with RESTORE or a targeted MERGE, and understand exactly what VACUUM deletes and how it limits time travel.",
|
|
210
|
+
"icon": "⏪",
|
|
211
|
+
"level": "Beginner",
|
|
212
|
+
"minutes": 10,
|
|
213
|
+
"tags": [
|
|
214
|
+
"Delta Lake",
|
|
215
|
+
"Time travel",
|
|
216
|
+
"RESTORE",
|
|
217
|
+
"VACUUM"
|
|
218
|
+
],
|
|
219
|
+
"group": "Delta Lake internals",
|
|
220
|
+
"slides": 13,
|
|
221
|
+
"quiz": 5,
|
|
222
|
+
"exercises": 2,
|
|
223
|
+
"demo": true,
|
|
224
|
+
"datasets": [
|
|
225
|
+
"retail"
|
|
226
|
+
],
|
|
227
|
+
"notebooks": [
|
|
228
|
+
"01 Lecture - Time travel, RESTORE and VACUUM",
|
|
229
|
+
"02 Exercises - Time travel, RESTORE and VACUUM"
|
|
230
|
+
],
|
|
231
|
+
"n": 8
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"id": "deletion-vectors",
|
|
235
|
+
"order": 90,
|
|
236
|
+
"title": "Deletion vectors",
|
|
237
|
+
"summary": "See why deleting one row used to rewrite a whole file, how a deletion vector marks rows instead, what it looks like in the log, and when the rows really leave storage.",
|
|
238
|
+
"icon": "🩹",
|
|
239
|
+
"level": "Intermediate",
|
|
240
|
+
"minutes": 10,
|
|
241
|
+
"tags": [
|
|
242
|
+
"Delta Lake",
|
|
243
|
+
"Deletion vectors",
|
|
244
|
+
"DML",
|
|
245
|
+
"Merge-on-read"
|
|
246
|
+
],
|
|
247
|
+
"group": "Delta Lake internals",
|
|
248
|
+
"slides": 14,
|
|
249
|
+
"quiz": 5,
|
|
250
|
+
"exercises": 2,
|
|
251
|
+
"demo": true,
|
|
252
|
+
"datasets": [
|
|
253
|
+
"retail"
|
|
254
|
+
],
|
|
255
|
+
"notebooks": [
|
|
256
|
+
"01 Lecture - Deletion vectors",
|
|
257
|
+
"02 Exercises - Deletion vectors"
|
|
258
|
+
],
|
|
259
|
+
"n": 9
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"id": "delta-dml-merge",
|
|
263
|
+
"order": 100,
|
|
264
|
+
"title": "UPDATE, DELETE and MERGE",
|
|
265
|
+
"summary": "Learn how row-level changes become file operations in Delta, how to write a correct MERGE upsert, why duplicate source keys break it, and when a selective overwrite is the better tool.",
|
|
266
|
+
"icon": "🔀",
|
|
267
|
+
"level": "Beginner",
|
|
268
|
+
"minutes": 10,
|
|
269
|
+
"tags": [
|
|
270
|
+
"Delta Lake",
|
|
271
|
+
"MERGE",
|
|
272
|
+
"DML",
|
|
273
|
+
"Upsert"
|
|
274
|
+
],
|
|
275
|
+
"group": "Delta Lake internals",
|
|
276
|
+
"slides": 14,
|
|
277
|
+
"quiz": 5,
|
|
278
|
+
"exercises": 2,
|
|
279
|
+
"demo": true,
|
|
280
|
+
"datasets": [
|
|
281
|
+
"cdc"
|
|
282
|
+
],
|
|
283
|
+
"notebooks": [
|
|
284
|
+
"01 Lecture - UPDATE, DELETE and MERGE",
|
|
285
|
+
"02 Exercises - UPDATE, DELETE and MERGE"
|
|
286
|
+
],
|
|
287
|
+
"n": 10
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"id": "schema-enforcement-evolution",
|
|
291
|
+
"order": 110,
|
|
292
|
+
"title": "Schema enforcement and evolution",
|
|
293
|
+
"summary": "Learn where a Delta table keeps its schema, which writes it rejects and why, and the safe ways to add, rename, drop and widen columns without breaking readers.",
|
|
294
|
+
"icon": "🧬",
|
|
295
|
+
"level": "Beginner",
|
|
296
|
+
"minutes": 10,
|
|
297
|
+
"tags": [
|
|
298
|
+
"Delta Lake",
|
|
299
|
+
"Schema",
|
|
300
|
+
"Constraints",
|
|
301
|
+
"Column mapping"
|
|
302
|
+
],
|
|
303
|
+
"group": "Delta Lake internals",
|
|
304
|
+
"slides": 14,
|
|
305
|
+
"quiz": 5,
|
|
306
|
+
"exercises": 2,
|
|
307
|
+
"demo": true,
|
|
308
|
+
"datasets": [
|
|
309
|
+
"retail"
|
|
310
|
+
],
|
|
311
|
+
"notebooks": [
|
|
312
|
+
"01 Lecture - Schema enforcement and evolution",
|
|
313
|
+
"02 Exercises - Schema enforcement and evolution"
|
|
314
|
+
],
|
|
315
|
+
"n": 11
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
"id": "change-data-feed",
|
|
319
|
+
"order": 120,
|
|
320
|
+
"title": "Change Data Feed",
|
|
321
|
+
"summary": "Turn on the Change Data Feed, see which change rows each INSERT, UPDATE and DELETE emits and where they are stored, and use them to update downstream tables incrementally.",
|
|
322
|
+
"icon": "📰",
|
|
323
|
+
"level": "Intermediate",
|
|
324
|
+
"minutes": 10,
|
|
325
|
+
"tags": [
|
|
326
|
+
"Delta Lake",
|
|
327
|
+
"Change Data Feed",
|
|
328
|
+
"CDC",
|
|
329
|
+
"Incremental processing"
|
|
330
|
+
],
|
|
331
|
+
"group": "Delta Lake internals",
|
|
332
|
+
"slides": 14,
|
|
333
|
+
"quiz": 5,
|
|
334
|
+
"exercises": 2,
|
|
335
|
+
"demo": true,
|
|
336
|
+
"datasets": [
|
|
337
|
+
"retail"
|
|
338
|
+
],
|
|
339
|
+
"notebooks": [
|
|
340
|
+
"01 Lecture - Change Data Feed",
|
|
341
|
+
"02 Exercises - Change Data Feed"
|
|
342
|
+
],
|
|
343
|
+
"n": 12
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"id": "delta-optimization",
|
|
347
|
+
"order": 130,
|
|
348
|
+
"title": "Optimizing Delta tables",
|
|
349
|
+
"summary": "Understand why small files and wide min/max ranges make queries slow, and how OPTIMIZE, liquid clustering, partitioning and predictive optimization fix the file layout.",
|
|
350
|
+
"icon": "🚀",
|
|
351
|
+
"level": "Intermediate",
|
|
352
|
+
"minutes": 11,
|
|
353
|
+
"tags": [
|
|
354
|
+
"Delta Lake",
|
|
355
|
+
"OPTIMIZE",
|
|
356
|
+
"Liquid clustering",
|
|
357
|
+
"Data skipping"
|
|
358
|
+
],
|
|
359
|
+
"group": "Delta Lake internals",
|
|
360
|
+
"slides": 14,
|
|
361
|
+
"quiz": 5,
|
|
362
|
+
"exercises": 2,
|
|
363
|
+
"demo": true,
|
|
364
|
+
"datasets": [
|
|
365
|
+
"retail"
|
|
366
|
+
],
|
|
367
|
+
"notebooks": [
|
|
368
|
+
"01 Lecture - Optimizing Delta tables",
|
|
369
|
+
"02 Exercises - Optimizing Delta tables"
|
|
370
|
+
],
|
|
371
|
+
"n": 13
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"id": "spark-architecture",
|
|
375
|
+
"order": 140,
|
|
376
|
+
"title": "How Spark runs your code",
|
|
377
|
+
"summary": "Follow a DataFrame query from the line you type to the tasks that run on executors. Learn lazy evaluation, narrow and wide transformations, jobs, stages and tasks, and how to read a query plan with EXPLAIN.",
|
|
378
|
+
"icon": "⚙️",
|
|
379
|
+
"level": "Beginner",
|
|
380
|
+
"minutes": 10,
|
|
381
|
+
"tags": [
|
|
382
|
+
"Apache Spark",
|
|
383
|
+
"Catalyst",
|
|
384
|
+
"EXPLAIN",
|
|
385
|
+
"Spark Connect"
|
|
386
|
+
],
|
|
387
|
+
"group": "Apache Spark",
|
|
388
|
+
"slides": 16,
|
|
389
|
+
"quiz": 5,
|
|
390
|
+
"exercises": 3,
|
|
391
|
+
"demo": true,
|
|
392
|
+
"datasets": [
|
|
393
|
+
"retail"
|
|
394
|
+
],
|
|
395
|
+
"notebooks": [
|
|
396
|
+
"01 Lecture - How Spark runs your code",
|
|
397
|
+
"02 Exercises - How Spark runs your code"
|
|
398
|
+
],
|
|
399
|
+
"n": 14
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"id": "spark-joins-shuffles",
|
|
403
|
+
"order": 150,
|
|
404
|
+
"title": "Joins and shuffles",
|
|
405
|
+
"summary": "See how Spark moves rows between executors to join and aggregate them, how it chooses between broadcast, sort-merge and shuffle hash joins, and how Adaptive Query Execution handles skew. Read the join strategy from EXPLAIN.",
|
|
406
|
+
"icon": "🔀",
|
|
407
|
+
"level": "Intermediate",
|
|
408
|
+
"minutes": 12,
|
|
409
|
+
"tags": [
|
|
410
|
+
"Apache Spark",
|
|
411
|
+
"Joins",
|
|
412
|
+
"Shuffle",
|
|
413
|
+
"AQE",
|
|
414
|
+
"Data skew"
|
|
415
|
+
],
|
|
416
|
+
"group": "Apache Spark",
|
|
417
|
+
"slides": 15,
|
|
418
|
+
"quiz": 5,
|
|
419
|
+
"exercises": 3,
|
|
420
|
+
"demo": true,
|
|
421
|
+
"datasets": [
|
|
422
|
+
"retail"
|
|
423
|
+
],
|
|
424
|
+
"notebooks": [
|
|
425
|
+
"01 Lecture - Joins and shuffles",
|
|
426
|
+
"02 Exercises - Joins and shuffles"
|
|
427
|
+
],
|
|
428
|
+
"n": 15
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
"id": "auto-loader-copy-into",
|
|
432
|
+
"order": 160,
|
|
433
|
+
"title": "Auto Loader and COPY INTO",
|
|
434
|
+
"summary": "Load only the new files from a landing folder, exactly once. See how COPY INTO and Auto Loader remember what they loaded, how Auto Loader infers and evolves a schema, and where bad values go.",
|
|
435
|
+
"icon": "📥",
|
|
436
|
+
"level": "Beginner",
|
|
437
|
+
"minutes": 12,
|
|
438
|
+
"tags": [
|
|
439
|
+
"Auto Loader",
|
|
440
|
+
"COPY INTO",
|
|
441
|
+
"Ingestion",
|
|
442
|
+
"Schema evolution"
|
|
443
|
+
],
|
|
444
|
+
"group": "Ingestion and pipelines",
|
|
445
|
+
"slides": 14,
|
|
446
|
+
"quiz": 5,
|
|
447
|
+
"exercises": 2,
|
|
448
|
+
"demo": true,
|
|
449
|
+
"datasets": [
|
|
450
|
+
"retail"
|
|
451
|
+
],
|
|
452
|
+
"notebooks": [
|
|
453
|
+
"01 Lecture - Auto Loader and COPY INTO",
|
|
454
|
+
"02 Exercises - Auto Loader and COPY INTO"
|
|
455
|
+
],
|
|
456
|
+
"n": 16
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
"id": "structured-streaming-basics",
|
|
460
|
+
"order": 170,
|
|
461
|
+
"title": "Structured Streaming basics",
|
|
462
|
+
"summary": "Treat a stream as a table that keeps growing. See how micro-batches, checkpoints and triggers work, which output modes fit which queries, and how a stream from a Delta table picks up only the new rows.",
|
|
463
|
+
"icon": "🌊",
|
|
464
|
+
"level": "Beginner",
|
|
465
|
+
"minutes": 12,
|
|
466
|
+
"tags": [
|
|
467
|
+
"Structured Streaming",
|
|
468
|
+
"Checkpoints",
|
|
469
|
+
"Triggers",
|
|
470
|
+
"Delta Lake"
|
|
471
|
+
],
|
|
472
|
+
"group": "Ingestion and pipelines",
|
|
473
|
+
"slides": 14,
|
|
474
|
+
"quiz": 5,
|
|
475
|
+
"exercises": 2,
|
|
476
|
+
"demo": true,
|
|
477
|
+
"datasets": [
|
|
478
|
+
"iot"
|
|
479
|
+
],
|
|
480
|
+
"notebooks": [
|
|
481
|
+
"01 Lecture - Structured Streaming basics",
|
|
482
|
+
"02 Exercises - Structured Streaming basics"
|
|
483
|
+
],
|
|
484
|
+
"n": 17
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
"id": "watermarks-stateful-streaming",
|
|
488
|
+
"order": 180,
|
|
489
|
+
"title": "Watermarks and stateful streaming",
|
|
490
|
+
"summary": "Aggregate and deduplicate streams by event time without letting state grow forever. Learn how a watermark is computed, when a window is final, what happens to late rows, and which joins keep state.",
|
|
491
|
+
"icon": "💧",
|
|
492
|
+
"level": "Advanced",
|
|
493
|
+
"minutes": 12,
|
|
494
|
+
"tags": [
|
|
495
|
+
"Structured Streaming",
|
|
496
|
+
"Watermarks",
|
|
497
|
+
"Windows",
|
|
498
|
+
"State store",
|
|
499
|
+
"Deduplication"
|
|
500
|
+
],
|
|
501
|
+
"group": "Ingestion and pipelines",
|
|
502
|
+
"slides": 14,
|
|
503
|
+
"quiz": 5,
|
|
504
|
+
"exercises": 2,
|
|
505
|
+
"demo": true,
|
|
506
|
+
"datasets": [
|
|
507
|
+
"iot"
|
|
508
|
+
],
|
|
509
|
+
"notebooks": [
|
|
510
|
+
"01 Lecture - Watermarks and stateful streaming",
|
|
511
|
+
"02 Exercises - Watermarks and stateful streaming"
|
|
512
|
+
],
|
|
513
|
+
"n": 18
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
"id": "declarative-pipelines",
|
|
517
|
+
"order": 190,
|
|
518
|
+
"title": "Lakeflow Spark Declarative Pipelines",
|
|
519
|
+
"summary": "Describe streaming tables, materialized views and views in one file, and let the pipeline work out the order, the incremental processing and the retries. Learn which dataset type to pick and what each update really processes.",
|
|
520
|
+
"icon": "🌊",
|
|
521
|
+
"level": "Beginner",
|
|
522
|
+
"minutes": 12,
|
|
523
|
+
"tags": [
|
|
524
|
+
"Lakeflow",
|
|
525
|
+
"Declarative Pipelines",
|
|
526
|
+
"Streaming tables",
|
|
527
|
+
"Materialized views"
|
|
528
|
+
],
|
|
529
|
+
"group": "Ingestion and pipelines",
|
|
530
|
+
"slides": 14,
|
|
531
|
+
"quiz": 5,
|
|
532
|
+
"exercises": 2,
|
|
533
|
+
"demo": true,
|
|
534
|
+
"datasets": [
|
|
535
|
+
"retail"
|
|
536
|
+
],
|
|
537
|
+
"notebooks": [
|
|
538
|
+
"01 Lecture - Lakeflow Spark Declarative Pipelines",
|
|
539
|
+
"02 Exercises - Lakeflow Spark Declarative Pipelines"
|
|
540
|
+
],
|
|
541
|
+
"n": 19
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
"id": "data-quality-expectations",
|
|
545
|
+
"order": 200,
|
|
546
|
+
"title": "Data quality with expectations",
|
|
547
|
+
"summary": "Put quality rules into the pipeline with expectations that warn, drop rows or fail the update, keep bad rows in a quarantine table, and back the rules up with Delta CHECK constraints that every writer must respect.",
|
|
548
|
+
"icon": "🚦",
|
|
549
|
+
"level": "Beginner",
|
|
550
|
+
"minutes": 11,
|
|
551
|
+
"tags": [
|
|
552
|
+
"Lakeflow",
|
|
553
|
+
"Declarative Pipelines",
|
|
554
|
+
"Expectations",
|
|
555
|
+
"Data quality",
|
|
556
|
+
"Constraints"
|
|
557
|
+
],
|
|
558
|
+
"group": "Ingestion and pipelines",
|
|
559
|
+
"slides": 14,
|
|
560
|
+
"quiz": 5,
|
|
561
|
+
"exercises": 2,
|
|
562
|
+
"demo": true,
|
|
563
|
+
"datasets": [
|
|
564
|
+
"iot"
|
|
565
|
+
],
|
|
566
|
+
"notebooks": [
|
|
567
|
+
"01 Lecture - Data quality with expectations",
|
|
568
|
+
"02 Exercises - Data quality with expectations"
|
|
569
|
+
],
|
|
570
|
+
"n": 20
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
"id": "cdc-scd",
|
|
574
|
+
"order": 210,
|
|
575
|
+
"title": "CDC and slowly changing dimensions",
|
|
576
|
+
"summary": "Turn a change feed of inserts, updates and deletes into a current-state table (SCD Type 1) or a full history (SCD Type 2). See why events that arrive out of order break a naive upsert, and how AUTO CDC and a careful MERGE handle them.",
|
|
577
|
+
"icon": "🔁",
|
|
578
|
+
"level": "Intermediate",
|
|
579
|
+
"minutes": 12,
|
|
580
|
+
"tags": [
|
|
581
|
+
"CDC",
|
|
582
|
+
"AUTO CDC",
|
|
583
|
+
"SCD",
|
|
584
|
+
"MERGE",
|
|
585
|
+
"Declarative Pipelines"
|
|
586
|
+
],
|
|
587
|
+
"group": "Ingestion and pipelines",
|
|
588
|
+
"slides": 14,
|
|
589
|
+
"quiz": 5,
|
|
590
|
+
"exercises": 2,
|
|
591
|
+
"demo": true,
|
|
592
|
+
"datasets": [
|
|
593
|
+
"cdc"
|
|
594
|
+
],
|
|
595
|
+
"notebooks": [
|
|
596
|
+
"01 Lecture - CDC and slowly changing dimensions",
|
|
597
|
+
"02 Exercises - CDC and slowly changing dimensions"
|
|
598
|
+
],
|
|
599
|
+
"n": 21
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
"id": "lakeflow-jobs",
|
|
603
|
+
"order": 220,
|
|
604
|
+
"title": "Lakeflow Jobs",
|
|
605
|
+
"summary": "Orchestrate notebooks, pipelines and SQL as a DAG of tasks. Learn how dependencies, Run if conditions, triggers, parameters and task values work, and how a repair run re-executes only what failed.",
|
|
606
|
+
"icon": "🗓️",
|
|
607
|
+
"level": "Beginner",
|
|
608
|
+
"minutes": 11,
|
|
609
|
+
"tags": [
|
|
610
|
+
"Lakeflow Jobs",
|
|
611
|
+
"Orchestration",
|
|
612
|
+
"Triggers",
|
|
613
|
+
"Parameters"
|
|
614
|
+
],
|
|
615
|
+
"group": "Orchestration and DevOps",
|
|
616
|
+
"slides": 14,
|
|
617
|
+
"quiz": 5,
|
|
618
|
+
"exercises": 2,
|
|
619
|
+
"demo": true,
|
|
620
|
+
"datasets": [
|
|
621
|
+
"retail"
|
|
622
|
+
],
|
|
623
|
+
"notebooks": [
|
|
624
|
+
"01 Lecture - Lakeflow Jobs",
|
|
625
|
+
"02 Exercises - Lakeflow Jobs"
|
|
626
|
+
],
|
|
627
|
+
"n": 22
|
|
628
|
+
},
|
|
629
|
+
{
|
|
630
|
+
"id": "asset-bundles-cicd",
|
|
631
|
+
"order": 230,
|
|
632
|
+
"title": "Bundles and CI/CD",
|
|
633
|
+
"summary": "Describe jobs and pipelines as code in a Declarative Automation Bundle, deploy the same definitions to dev, staging and prod with targets and variables, and wire it into a CI/CD flow with tests and a service principal.",
|
|
634
|
+
"icon": "📦",
|
|
635
|
+
"level": "Intermediate",
|
|
636
|
+
"minutes": 12,
|
|
637
|
+
"tags": [
|
|
638
|
+
"Bundles",
|
|
639
|
+
"CI/CD",
|
|
640
|
+
"Databricks CLI",
|
|
641
|
+
"Git folders",
|
|
642
|
+
"Testing"
|
|
643
|
+
],
|
|
644
|
+
"group": "Orchestration and DevOps",
|
|
645
|
+
"slides": 14,
|
|
646
|
+
"quiz": 5,
|
|
647
|
+
"exercises": 2,
|
|
648
|
+
"demo": true,
|
|
649
|
+
"datasets": [
|
|
650
|
+
"retail"
|
|
651
|
+
],
|
|
652
|
+
"notebooks": [
|
|
653
|
+
"01 Lecture - Bundles and CI/CD",
|
|
654
|
+
"02 Exercises - Bundles and CI/CD"
|
|
655
|
+
],
|
|
656
|
+
"n": 23
|
|
657
|
+
}
|
|
658
|
+
]
|
|
659
|
+
},
|
|
660
|
+
{
|
|
661
|
+
"id": "machine-learning",
|
|
662
|
+
"title": "Machine Learning",
|
|
663
|
+
"icon": "🤖",
|
|
664
|
+
"desc": "The ML lifecycle on Databricks: MLflow tracking, feature tables, tuning, models in Unity Catalog, serving and monitoring.",
|
|
665
|
+
"modules": [
|
|
666
|
+
{
|
|
667
|
+
"id": "ml-lifecycle",
|
|
668
|
+
"order": 10,
|
|
669
|
+
"title": "The ML lifecycle on Databricks",
|
|
670
|
+
"summary": "Follow one churn model from raw table to monitored prediction. Learn which Databricks component handles each step, how to split data without leakage, and which metric to trust when classes are imbalanced.",
|
|
671
|
+
"icon": "🔁",
|
|
672
|
+
"level": "Beginner",
|
|
673
|
+
"minutes": 10,
|
|
674
|
+
"tags": [
|
|
675
|
+
"MLOps",
|
|
676
|
+
"MLflow",
|
|
677
|
+
"Evaluation",
|
|
678
|
+
"Unity Catalog"
|
|
679
|
+
],
|
|
680
|
+
"group": "Foundations",
|
|
681
|
+
"slides": 14,
|
|
682
|
+
"quiz": 5,
|
|
683
|
+
"exercises": 2,
|
|
684
|
+
"demo": true,
|
|
685
|
+
"datasets": [
|
|
686
|
+
"churn"
|
|
687
|
+
],
|
|
688
|
+
"notebooks": [
|
|
689
|
+
"01 Lecture - The ML lifecycle on Databricks",
|
|
690
|
+
"02 Exercises - The ML lifecycle on Databricks"
|
|
691
|
+
],
|
|
692
|
+
"n": 1
|
|
693
|
+
},
|
|
694
|
+
{
|
|
695
|
+
"id": "mlflow-tracking",
|
|
696
|
+
"order": 20,
|
|
697
|
+
"title": "MLflow tracking",
|
|
698
|
+
"summary": "Record every training attempt as an MLflow run with its parameters, metrics and model. Compare runs in the UI and in code, then load the best model back by its run URI.",
|
|
699
|
+
"icon": "🧪",
|
|
700
|
+
"level": "Beginner",
|
|
701
|
+
"minutes": 10,
|
|
702
|
+
"tags": [
|
|
703
|
+
"MLflow",
|
|
704
|
+
"Experiments",
|
|
705
|
+
"Runs",
|
|
706
|
+
"Autologging"
|
|
707
|
+
],
|
|
708
|
+
"group": "Foundations",
|
|
709
|
+
"slides": 14,
|
|
710
|
+
"quiz": 5,
|
|
711
|
+
"exercises": 2,
|
|
712
|
+
"demo": true,
|
|
713
|
+
"datasets": [
|
|
714
|
+
"churn"
|
|
715
|
+
],
|
|
716
|
+
"notebooks": [
|
|
717
|
+
"01 Lecture - MLflow tracking",
|
|
718
|
+
"02 Exercises - MLflow tracking"
|
|
719
|
+
],
|
|
720
|
+
"n": 2
|
|
721
|
+
},
|
|
722
|
+
{
|
|
723
|
+
"id": "feature-engineering",
|
|
724
|
+
"order": 30,
|
|
725
|
+
"title": "Feature engineering in Unity Catalog",
|
|
726
|
+
"summary": "Store features once in Unity Catalog tables with a primary key, build training sets that never see the future, and package the feature lookups with the model so scoring finds the same features.",
|
|
727
|
+
"icon": "🧮",
|
|
728
|
+
"level": "Intermediate",
|
|
729
|
+
"minutes": 11,
|
|
730
|
+
"tags": [
|
|
731
|
+
"Feature Engineering",
|
|
732
|
+
"Unity Catalog",
|
|
733
|
+
"Point-in-time",
|
|
734
|
+
"Leakage"
|
|
735
|
+
],
|
|
736
|
+
"group": "Features and training",
|
|
737
|
+
"slides": 13,
|
|
738
|
+
"quiz": 5,
|
|
739
|
+
"exercises": 2,
|
|
740
|
+
"demo": true,
|
|
741
|
+
"datasets": [
|
|
742
|
+
"churn"
|
|
743
|
+
],
|
|
744
|
+
"notebooks": [
|
|
745
|
+
"01 Lecture - Feature engineering in Unity Catalog",
|
|
746
|
+
"02 Exercises - Feature engineering in Unity Catalog"
|
|
747
|
+
],
|
|
748
|
+
"n": 3
|
|
749
|
+
},
|
|
750
|
+
{
|
|
751
|
+
"id": "hyperparameter-tuning",
|
|
752
|
+
"order": 40,
|
|
753
|
+
"title": "Hyperparameter tuning",
|
|
754
|
+
"summary": "Search model settings with grid, random and Bayesian methods, score each candidate with cross-validation, log every trial as a nested MLflow run, and keep the test set honest.",
|
|
755
|
+
"icon": "🎛️",
|
|
756
|
+
"level": "Intermediate",
|
|
757
|
+
"minutes": 11,
|
|
758
|
+
"tags": [
|
|
759
|
+
"Hyperparameters",
|
|
760
|
+
"Optuna",
|
|
761
|
+
"Cross-validation",
|
|
762
|
+
"MLflow"
|
|
763
|
+
],
|
|
764
|
+
"group": "Features and training",
|
|
765
|
+
"slides": 13,
|
|
766
|
+
"quiz": 5,
|
|
767
|
+
"exercises": 2,
|
|
768
|
+
"demo": true,
|
|
769
|
+
"datasets": [
|
|
770
|
+
"churn"
|
|
771
|
+
],
|
|
772
|
+
"notebooks": [
|
|
773
|
+
"01 Lecture - Hyperparameter tuning",
|
|
774
|
+
"02 Exercises - Hyperparameter tuning"
|
|
775
|
+
],
|
|
776
|
+
"n": 4
|
|
777
|
+
},
|
|
778
|
+
{
|
|
779
|
+
"id": "models-in-unity-catalog",
|
|
780
|
+
"order": 50,
|
|
781
|
+
"title": "Models in Unity Catalog",
|
|
782
|
+
"summary": "Register a trained model as a governed Unity Catalog object, keep immutable versions, point aliases like @champion at the one in use, and promote or roll back by moving an alias.",
|
|
783
|
+
"icon": "📦",
|
|
784
|
+
"level": "Beginner",
|
|
785
|
+
"minutes": 10,
|
|
786
|
+
"tags": [
|
|
787
|
+
"Models in UC",
|
|
788
|
+
"MLflow",
|
|
789
|
+
"Aliases",
|
|
790
|
+
"Governance"
|
|
791
|
+
],
|
|
792
|
+
"group": "Deployment",
|
|
793
|
+
"slides": 14,
|
|
794
|
+
"quiz": 5,
|
|
795
|
+
"exercises": 2,
|
|
796
|
+
"demo": true,
|
|
797
|
+
"datasets": [
|
|
798
|
+
"churn"
|
|
799
|
+
],
|
|
800
|
+
"notebooks": [
|
|
801
|
+
"01 Lecture - Models in Unity Catalog",
|
|
802
|
+
"02 Exercises - Models in Unity Catalog"
|
|
803
|
+
],
|
|
804
|
+
"n": 5
|
|
805
|
+
},
|
|
806
|
+
{
|
|
807
|
+
"id": "model-serving",
|
|
808
|
+
"order": 60,
|
|
809
|
+
"title": "Model serving",
|
|
810
|
+
"summary": "Choose between batch, streaming and real-time inference, score a whole table with a Spark UDF, and understand what a Model Serving endpoint builds, how it routes traffic between versions, and what it logs.",
|
|
811
|
+
"icon": "🚀",
|
|
812
|
+
"level": "Intermediate",
|
|
813
|
+
"minutes": 11,
|
|
814
|
+
"tags": [
|
|
815
|
+
"Model Serving",
|
|
816
|
+
"Batch inference",
|
|
817
|
+
"spark_udf",
|
|
818
|
+
"Traffic split"
|
|
819
|
+
],
|
|
820
|
+
"group": "Deployment",
|
|
821
|
+
"slides": 13,
|
|
822
|
+
"quiz": 5,
|
|
823
|
+
"exercises": 2,
|
|
824
|
+
"demo": true,
|
|
825
|
+
"datasets": [
|
|
826
|
+
"churn"
|
|
827
|
+
],
|
|
828
|
+
"notebooks": [
|
|
829
|
+
"01 Lecture - Model serving",
|
|
830
|
+
"02 Exercises - Model serving"
|
|
831
|
+
],
|
|
832
|
+
"n": 6
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
"id": "model-monitoring",
|
|
836
|
+
"order": 70,
|
|
837
|
+
"title": "Monitoring models and drift",
|
|
838
|
+
"summary": "Learn why a good model gets worse, tell data drift from concept drift, compute PSI and a KS test yourself, and see how data profiling turns an inference table into drift metrics, alerts and retraining.",
|
|
839
|
+
"icon": "📡",
|
|
840
|
+
"level": "Intermediate",
|
|
841
|
+
"minutes": 11,
|
|
842
|
+
"tags": [
|
|
843
|
+
"Drift",
|
|
844
|
+
"PSI",
|
|
845
|
+
"Lakehouse Monitoring",
|
|
846
|
+
"Data profiling"
|
|
847
|
+
],
|
|
848
|
+
"group": "Deployment",
|
|
849
|
+
"slides": 13,
|
|
850
|
+
"quiz": 5,
|
|
851
|
+
"exercises": 2,
|
|
852
|
+
"demo": true,
|
|
853
|
+
"datasets": [
|
|
854
|
+
"churn"
|
|
855
|
+
],
|
|
856
|
+
"notebooks": [
|
|
857
|
+
"01 Lecture - Monitoring models and drift",
|
|
858
|
+
"02 Exercises - Monitoring models and drift"
|
|
859
|
+
],
|
|
860
|
+
"n": 7
|
|
861
|
+
}
|
|
862
|
+
]
|
|
863
|
+
},
|
|
864
|
+
{
|
|
865
|
+
"id": "generative-ai",
|
|
866
|
+
"title": "Generative AI",
|
|
867
|
+
"icon": "✨",
|
|
868
|
+
"desc": "LLM basics, prompting, embeddings and Vector Search, RAG, agents with tools, evaluation and governance.",
|
|
869
|
+
"modules": [
|
|
870
|
+
{
|
|
871
|
+
"id": "llm-basics",
|
|
872
|
+
"order": 10,
|
|
873
|
+
"title": "How LLMs work",
|
|
874
|
+
"summary": "See what happens between a prompt and an answer. Tokens, the context window, next-token sampling, why models make things up, and how Databricks serves and bills foundation models.",
|
|
875
|
+
"icon": "🧠",
|
|
876
|
+
"level": "Beginner",
|
|
877
|
+
"minutes": 10,
|
|
878
|
+
"tags": [
|
|
879
|
+
"LLM",
|
|
880
|
+
"Tokens",
|
|
881
|
+
"Sampling",
|
|
882
|
+
"Foundation Model APIs"
|
|
883
|
+
],
|
|
884
|
+
"group": "Foundations",
|
|
885
|
+
"slides": 14,
|
|
886
|
+
"quiz": 5,
|
|
887
|
+
"exercises": 2,
|
|
888
|
+
"demo": true,
|
|
889
|
+
"datasets": [
|
|
890
|
+
"support"
|
|
891
|
+
],
|
|
892
|
+
"notebooks": [
|
|
893
|
+
"01 Lecture - How LLMs work",
|
|
894
|
+
"02 Exercises - How LLMs work"
|
|
895
|
+
],
|
|
896
|
+
"n": 1
|
|
897
|
+
},
|
|
898
|
+
{
|
|
899
|
+
"id": "prompt-engineering",
|
|
900
|
+
"order": 20,
|
|
901
|
+
"title": "Prompt engineering",
|
|
902
|
+
"summary": "Write prompts that give the same kind of answer every time. Structure a prompt, add few-shot examples, ask for JSON, build templates from table rows, defend against prompt injection, and validate what comes back.",
|
|
903
|
+
"icon": "✍️",
|
|
904
|
+
"level": "Beginner",
|
|
905
|
+
"minutes": 10,
|
|
906
|
+
"tags": [
|
|
907
|
+
"Prompts",
|
|
908
|
+
"Few-shot",
|
|
909
|
+
"Structured output",
|
|
910
|
+
"Prompt injection"
|
|
911
|
+
],
|
|
912
|
+
"group": "Foundations",
|
|
913
|
+
"slides": 14,
|
|
914
|
+
"quiz": 5,
|
|
915
|
+
"exercises": 2,
|
|
916
|
+
"demo": true,
|
|
917
|
+
"datasets": [
|
|
918
|
+
"support"
|
|
919
|
+
],
|
|
920
|
+
"notebooks": [
|
|
921
|
+
"01 Lecture - Prompt engineering",
|
|
922
|
+
"02 Exercises - Prompt engineering"
|
|
923
|
+
],
|
|
924
|
+
"n": 2
|
|
925
|
+
},
|
|
926
|
+
{
|
|
927
|
+
"id": "embeddings-vector-search",
|
|
928
|
+
"order": 30,
|
|
929
|
+
"title": "Embeddings and Vector Search",
|
|
930
|
+
"summary": "Turn text into vectors, find the nearest ones to a question, and see how Mosaic AI Vector Search builds, syncs and queries an index. Then measure a retriever on real tickets.",
|
|
931
|
+
"icon": "🧭",
|
|
932
|
+
"level": "Intermediate",
|
|
933
|
+
"minutes": 12,
|
|
934
|
+
"tags": [
|
|
935
|
+
"Embeddings",
|
|
936
|
+
"Vector Search",
|
|
937
|
+
"Cosine similarity",
|
|
938
|
+
"Hybrid search"
|
|
939
|
+
],
|
|
940
|
+
"group": "Retrieval",
|
|
941
|
+
"slides": 14,
|
|
942
|
+
"quiz": 5,
|
|
943
|
+
"exercises": 2,
|
|
944
|
+
"demo": true,
|
|
945
|
+
"datasets": [
|
|
946
|
+
"support"
|
|
947
|
+
],
|
|
948
|
+
"notebooks": [
|
|
949
|
+
"01 Lecture - Embeddings and Vector Search",
|
|
950
|
+
"02 Exercises - Embeddings and Vector Search"
|
|
951
|
+
],
|
|
952
|
+
"n": 3
|
|
953
|
+
},
|
|
954
|
+
{
|
|
955
|
+
"id": "chunking-parsing",
|
|
956
|
+
"order": 40,
|
|
957
|
+
"title": "Parsing and chunking documents",
|
|
958
|
+
"summary": "Turn PDFs, web pages and articles into clean, well-sized chunks with metadata. Compare fixed-size, sentence, recursive and structure-based chunking, write chunks to a Delta table, and judge a strategy by retrieval quality.",
|
|
959
|
+
"icon": "✂️",
|
|
960
|
+
"level": "Intermediate",
|
|
961
|
+
"minutes": 12,
|
|
962
|
+
"tags": [
|
|
963
|
+
"Chunking",
|
|
964
|
+
"Parsing",
|
|
965
|
+
"ai_parse_document",
|
|
966
|
+
"RAG"
|
|
967
|
+
],
|
|
968
|
+
"group": "Retrieval",
|
|
969
|
+
"slides": 14,
|
|
970
|
+
"quiz": 5,
|
|
971
|
+
"exercises": 2,
|
|
972
|
+
"demo": true,
|
|
973
|
+
"datasets": [
|
|
974
|
+
"support"
|
|
975
|
+
],
|
|
976
|
+
"notebooks": [
|
|
977
|
+
"01 Lecture - Parsing and chunking documents",
|
|
978
|
+
"02 Exercises - Parsing and chunking documents"
|
|
979
|
+
],
|
|
980
|
+
"n": 4
|
|
981
|
+
},
|
|
982
|
+
{
|
|
983
|
+
"id": "rag-architecture",
|
|
984
|
+
"order": 50,
|
|
985
|
+
"title": "RAG architecture",
|
|
986
|
+
"summary": "Follow a question through retrieval-augmented generation, from the offline index to a cited answer. Learn where RAG fails, how to tell a retrieval error from a generation error, and when RAG beats fine-tuning.",
|
|
987
|
+
"icon": "🔗",
|
|
988
|
+
"level": "Beginner",
|
|
989
|
+
"minutes": 10,
|
|
990
|
+
"tags": [
|
|
991
|
+
"RAG",
|
|
992
|
+
"Retrieval",
|
|
993
|
+
"Citations",
|
|
994
|
+
"Vector Search"
|
|
995
|
+
],
|
|
996
|
+
"group": "Retrieval",
|
|
997
|
+
"slides": 14,
|
|
998
|
+
"quiz": 5,
|
|
999
|
+
"exercises": 2,
|
|
1000
|
+
"demo": true,
|
|
1001
|
+
"datasets": [
|
|
1002
|
+
"support"
|
|
1003
|
+
],
|
|
1004
|
+
"notebooks": [
|
|
1005
|
+
"01 Lecture - RAG architecture",
|
|
1006
|
+
"02 Exercises - RAG architecture"
|
|
1007
|
+
],
|
|
1008
|
+
"n": 5
|
|
1009
|
+
},
|
|
1010
|
+
{
|
|
1011
|
+
"id": "agents-tools",
|
|
1012
|
+
"order": 60,
|
|
1013
|
+
"title": "Agents and tools",
|
|
1014
|
+
"summary": "See how an agent really works. The tool-calling loop, tool definitions and why their descriptions matter, Unity Catalog functions and MCP as governed tools, the Agent Framework, and the limits that keep an agent safe.",
|
|
1015
|
+
"icon": "🤖",
|
|
1016
|
+
"level": "Intermediate",
|
|
1017
|
+
"minutes": 12,
|
|
1018
|
+
"tags": [
|
|
1019
|
+
"Agents",
|
|
1020
|
+
"Tool calling",
|
|
1021
|
+
"Unity Catalog functions",
|
|
1022
|
+
"MCP",
|
|
1023
|
+
"Agent Framework"
|
|
1024
|
+
],
|
|
1025
|
+
"group": "Agents",
|
|
1026
|
+
"slides": 14,
|
|
1027
|
+
"quiz": 5,
|
|
1028
|
+
"exercises": 2,
|
|
1029
|
+
"demo": true,
|
|
1030
|
+
"datasets": [
|
|
1031
|
+
"support"
|
|
1032
|
+
],
|
|
1033
|
+
"notebooks": [
|
|
1034
|
+
"01 Lecture - Agents and tools",
|
|
1035
|
+
"02 Exercises - Agents and tools"
|
|
1036
|
+
],
|
|
1037
|
+
"n": 6
|
|
1038
|
+
},
|
|
1039
|
+
{
|
|
1040
|
+
"id": "genai-evaluation",
|
|
1041
|
+
"order": 70,
|
|
1042
|
+
"title": "Evaluating GenAI apps",
|
|
1043
|
+
"summary": "Replace \"it looks good\" with numbers. Build a labelled evaluation set, measure retrieval with precision@k, recall@k and MRR, judge answers with MLflow scorers, and keep watching quality, cost and latency in production.",
|
|
1044
|
+
"icon": "📏",
|
|
1045
|
+
"level": "Intermediate",
|
|
1046
|
+
"minutes": 12,
|
|
1047
|
+
"tags": [
|
|
1048
|
+
"Evaluation",
|
|
1049
|
+
"MLflow",
|
|
1050
|
+
"LLM judges",
|
|
1051
|
+
"Retrieval metrics",
|
|
1052
|
+
"Monitoring"
|
|
1053
|
+
],
|
|
1054
|
+
"group": "Quality and governance",
|
|
1055
|
+
"slides": 14,
|
|
1056
|
+
"quiz": 5,
|
|
1057
|
+
"exercises": 2,
|
|
1058
|
+
"demo": true,
|
|
1059
|
+
"datasets": [
|
|
1060
|
+
"support"
|
|
1061
|
+
],
|
|
1062
|
+
"notebooks": [
|
|
1063
|
+
"01 Lecture - Evaluating GenAI apps",
|
|
1064
|
+
"02 Exercises - Evaluating GenAI apps"
|
|
1065
|
+
],
|
|
1066
|
+
"n": 7
|
|
1067
|
+
},
|
|
1068
|
+
{
|
|
1069
|
+
"id": "ai-functions-gateway",
|
|
1070
|
+
"order": 80,
|
|
1071
|
+
"title": "AI Functions and AI Gateway",
|
|
1072
|
+
"summary": "Call models from SQL over whole tables with AI Functions and ai_query, and govern every model call with AI Gateway. Build a keyword baseline you can run anywhere, and learn what the gateway checks, logs and limits.",
|
|
1073
|
+
"icon": "🚪",
|
|
1074
|
+
"level": "Beginner",
|
|
1075
|
+
"minutes": 10,
|
|
1076
|
+
"tags": [
|
|
1077
|
+
"AI Functions",
|
|
1078
|
+
"ai_query",
|
|
1079
|
+
"AI Gateway",
|
|
1080
|
+
"Batch inference",
|
|
1081
|
+
"Governance"
|
|
1082
|
+
],
|
|
1083
|
+
"group": "Quality and governance",
|
|
1084
|
+
"slides": 14,
|
|
1085
|
+
"quiz": 5,
|
|
1086
|
+
"exercises": 2,
|
|
1087
|
+
"demo": true,
|
|
1088
|
+
"datasets": [
|
|
1089
|
+
"support"
|
|
1090
|
+
],
|
|
1091
|
+
"notebooks": [
|
|
1092
|
+
"01 Lecture - AI Functions and AI Gateway",
|
|
1093
|
+
"02 Exercises - AI Functions and AI Gateway"
|
|
1094
|
+
],
|
|
1095
|
+
"n": 8
|
|
1096
|
+
}
|
|
1097
|
+
]
|
|
1098
|
+
},
|
|
1099
|
+
{
|
|
1100
|
+
"id": "analytics",
|
|
1101
|
+
"title": "Analytics & AI/BI",
|
|
1102
|
+
"icon": "📊",
|
|
1103
|
+
"desc": "SQL warehouses, dashboards, Genie spaces and metric views: getting answers out of the lakehouse.",
|
|
1104
|
+
"modules": [
|
|
1105
|
+
{
|
|
1106
|
+
"id": "sql-warehouses",
|
|
1107
|
+
"order": 10,
|
|
1108
|
+
"title": "SQL warehouses",
|
|
1109
|
+
"summary": "Understand the compute behind Databricks SQL. Pick a warehouse type, size it for heavy queries or many users, and keep the bill under control with auto stop and caching.",
|
|
1110
|
+
"icon": "🏭",
|
|
1111
|
+
"level": "Beginner",
|
|
1112
|
+
"minutes": 10,
|
|
1113
|
+
"tags": [
|
|
1114
|
+
"Databricks SQL",
|
|
1115
|
+
"SQL warehouse",
|
|
1116
|
+
"Photon",
|
|
1117
|
+
"Serverless",
|
|
1118
|
+
"Cost"
|
|
1119
|
+
],
|
|
1120
|
+
"group": "Compute for SQL",
|
|
1121
|
+
"slides": 14,
|
|
1122
|
+
"quiz": 5,
|
|
1123
|
+
"exercises": 2,
|
|
1124
|
+
"demo": true,
|
|
1125
|
+
"datasets": [
|
|
1126
|
+
"retail"
|
|
1127
|
+
],
|
|
1128
|
+
"notebooks": [
|
|
1129
|
+
"01 Lecture - SQL warehouses",
|
|
1130
|
+
"02 Exercises - SQL warehouses"
|
|
1131
|
+
],
|
|
1132
|
+
"n": 1
|
|
1133
|
+
},
|
|
1134
|
+
{
|
|
1135
|
+
"id": "ai-bi-dashboards",
|
|
1136
|
+
"order": 20,
|
|
1137
|
+
"title": "AI/BI dashboards",
|
|
1138
|
+
"summary": "Build a dashboard the way Databricks does it. Write the datasets, put widgets on the canvas, wire filters and parameters, then publish with the right credentials and keep it fresh.",
|
|
1139
|
+
"icon": "📊",
|
|
1140
|
+
"level": "Beginner",
|
|
1141
|
+
"minutes": 10,
|
|
1142
|
+
"tags": [
|
|
1143
|
+
"AI/BI",
|
|
1144
|
+
"Dashboards",
|
|
1145
|
+
"Databricks SQL",
|
|
1146
|
+
"Parameters",
|
|
1147
|
+
"Alerts"
|
|
1148
|
+
],
|
|
1149
|
+
"group": "Dashboards and Genie",
|
|
1150
|
+
"slides": 13,
|
|
1151
|
+
"quiz": 5,
|
|
1152
|
+
"exercises": 2,
|
|
1153
|
+
"demo": true,
|
|
1154
|
+
"datasets": [
|
|
1155
|
+
"retail"
|
|
1156
|
+
],
|
|
1157
|
+
"notebooks": [
|
|
1158
|
+
"01 Lecture - AI/BI dashboards",
|
|
1159
|
+
"02 Exercises - AI/BI dashboards"
|
|
1160
|
+
],
|
|
1161
|
+
"n": 2
|
|
1162
|
+
},
|
|
1163
|
+
{
|
|
1164
|
+
"id": "genie-spaces",
|
|
1165
|
+
"order": 30,
|
|
1166
|
+
"title": "Genie spaces",
|
|
1167
|
+
"summary": "See how Genie turns a business question into SQL, what context makes its answers right, and how to prepare tables, comments, keys and example queries so a space is accurate from day one.",
|
|
1168
|
+
"icon": "🧞",
|
|
1169
|
+
"level": "Beginner",
|
|
1170
|
+
"minutes": 10,
|
|
1171
|
+
"tags": [
|
|
1172
|
+
"AI/BI",
|
|
1173
|
+
"Genie",
|
|
1174
|
+
"Unity Catalog",
|
|
1175
|
+
"Metadata",
|
|
1176
|
+
"Semantic layer"
|
|
1177
|
+
],
|
|
1178
|
+
"group": "Dashboards and Genie",
|
|
1179
|
+
"slides": 14,
|
|
1180
|
+
"quiz": 5,
|
|
1181
|
+
"exercises": 2,
|
|
1182
|
+
"demo": true,
|
|
1183
|
+
"datasets": [
|
|
1184
|
+
"retail"
|
|
1185
|
+
],
|
|
1186
|
+
"notebooks": [
|
|
1187
|
+
"01 Lecture - Genie spaces",
|
|
1188
|
+
"02 Exercises - Genie spaces"
|
|
1189
|
+
],
|
|
1190
|
+
"n": 3
|
|
1191
|
+
},
|
|
1192
|
+
{
|
|
1193
|
+
"id": "metric-views",
|
|
1194
|
+
"order": 40,
|
|
1195
|
+
"title": "Metric views",
|
|
1196
|
+
"summary": "Define a business metric once in Unity Catalog and get the correct number at any grain, in SQL, dashboards and Genie. Build a metric view in YAML, query it with MEASURE(), and see why pre-aggregated views give wrong answers.",
|
|
1197
|
+
"icon": "📐",
|
|
1198
|
+
"level": "Intermediate",
|
|
1199
|
+
"minutes": 15,
|
|
1200
|
+
"tags": [
|
|
1201
|
+
"Metric views",
|
|
1202
|
+
"Unity Catalog",
|
|
1203
|
+
"Genie",
|
|
1204
|
+
"AI/BI dashboards",
|
|
1205
|
+
"Semantic layer"
|
|
1206
|
+
],
|
|
1207
|
+
"group": "Dashboards and Genie",
|
|
1208
|
+
"slides": 25,
|
|
1209
|
+
"quiz": 5,
|
|
1210
|
+
"exercises": 2,
|
|
1211
|
+
"demo": true,
|
|
1212
|
+
"datasets": [
|
|
1213
|
+
"retail"
|
|
1214
|
+
],
|
|
1215
|
+
"notebooks": [
|
|
1216
|
+
"01 Lecture - Metric views",
|
|
1217
|
+
"02 Exercises - Metric views"
|
|
1218
|
+
],
|
|
1219
|
+
"n": 4
|
|
1220
|
+
}
|
|
1221
|
+
]
|
|
1222
|
+
},
|
|
1223
|
+
{
|
|
1224
|
+
"id": "governance",
|
|
1225
|
+
"title": "Governance & Security",
|
|
1226
|
+
"icon": "🛡️",
|
|
1227
|
+
"desc": "Unity Catalog privileges, row filters and column masks, Delta Sharing, lineage and system tables.",
|
|
1228
|
+
"modules": [
|
|
1229
|
+
{
|
|
1230
|
+
"id": "uc-privileges",
|
|
1231
|
+
"order": 10,
|
|
1232
|
+
"title": "Unity Catalog privileges",
|
|
1233
|
+
"summary": "Predict exactly who can read or change what. Learn the securable hierarchy, how grants inherit down it, why SELECT alone is not enough, and how to grant, revoke and inspect privileges.",
|
|
1234
|
+
"icon": "🔑",
|
|
1235
|
+
"level": "Beginner",
|
|
1236
|
+
"minutes": 10,
|
|
1237
|
+
"tags": [
|
|
1238
|
+
"Unity Catalog",
|
|
1239
|
+
"Privileges",
|
|
1240
|
+
"GRANT",
|
|
1241
|
+
"Security"
|
|
1242
|
+
],
|
|
1243
|
+
"group": "Access control",
|
|
1244
|
+
"slides": 14,
|
|
1245
|
+
"quiz": 5,
|
|
1246
|
+
"exercises": 2,
|
|
1247
|
+
"demo": true,
|
|
1248
|
+
"datasets": [
|
|
1249
|
+
"hr"
|
|
1250
|
+
],
|
|
1251
|
+
"notebooks": [
|
|
1252
|
+
"01 Lecture - Unity Catalog privileges",
|
|
1253
|
+
"02 Exercises - Unity Catalog privileges"
|
|
1254
|
+
],
|
|
1255
|
+
"n": 1
|
|
1256
|
+
},
|
|
1257
|
+
{
|
|
1258
|
+
"id": "row-filters-column-masks",
|
|
1259
|
+
"order": 20,
|
|
1260
|
+
"title": "Row filters and column masks",
|
|
1261
|
+
"summary": "Keep one table and let every user see only the rows and values they are allowed to. Write filter and mask functions, attach them, see how the engine applies them, and know when ABAC policies take over.",
|
|
1262
|
+
"icon": "🎭",
|
|
1263
|
+
"level": "Intermediate",
|
|
1264
|
+
"minutes": 12,
|
|
1265
|
+
"tags": [
|
|
1266
|
+
"Unity Catalog",
|
|
1267
|
+
"Row filters",
|
|
1268
|
+
"Column masks",
|
|
1269
|
+
"ABAC",
|
|
1270
|
+
"PII"
|
|
1271
|
+
],
|
|
1272
|
+
"group": "Access control",
|
|
1273
|
+
"slides": 14,
|
|
1274
|
+
"quiz": 5,
|
|
1275
|
+
"exercises": 2,
|
|
1276
|
+
"demo": true,
|
|
1277
|
+
"datasets": [
|
|
1278
|
+
"hr"
|
|
1279
|
+
],
|
|
1280
|
+
"notebooks": [
|
|
1281
|
+
"01 Lecture - Row filters and column masks",
|
|
1282
|
+
"02 Exercises - Row filters and column masks"
|
|
1283
|
+
],
|
|
1284
|
+
"n": 2
|
|
1285
|
+
},
|
|
1286
|
+
{
|
|
1287
|
+
"id": "delta-sharing",
|
|
1288
|
+
"order": 30,
|
|
1289
|
+
"title": "Delta Sharing",
|
|
1290
|
+
"summary": "Share live tables with another company without copying them. Learn providers, shares and recipients, how a recipient read really works, and how to prepare a curated, PII-free view for sharing.",
|
|
1291
|
+
"icon": "🤝",
|
|
1292
|
+
"level": "Intermediate",
|
|
1293
|
+
"minutes": 10,
|
|
1294
|
+
"tags": [
|
|
1295
|
+
"Delta Sharing",
|
|
1296
|
+
"Unity Catalog",
|
|
1297
|
+
"Data sharing",
|
|
1298
|
+
"Security"
|
|
1299
|
+
],
|
|
1300
|
+
"group": "Sharing and audit",
|
|
1301
|
+
"slides": 14,
|
|
1302
|
+
"quiz": 5,
|
|
1303
|
+
"exercises": 2,
|
|
1304
|
+
"demo": true,
|
|
1305
|
+
"datasets": [
|
|
1306
|
+
"hr"
|
|
1307
|
+
],
|
|
1308
|
+
"notebooks": [
|
|
1309
|
+
"01 Lecture - Delta Sharing",
|
|
1310
|
+
"02 Exercises - Delta Sharing"
|
|
1311
|
+
],
|
|
1312
|
+
"n": 3
|
|
1313
|
+
},
|
|
1314
|
+
{
|
|
1315
|
+
"id": "lineage-system-tables",
|
|
1316
|
+
"order": 40,
|
|
1317
|
+
"title": "Lineage and system tables",
|
|
1318
|
+
"summary": "Find out where data comes from, who touched it and what it cost. See how Unity Catalog captures lineage on its own, which system tables answer which question, and how to query them safely.",
|
|
1319
|
+
"icon": "🧭",
|
|
1320
|
+
"level": "Intermediate",
|
|
1321
|
+
"minutes": 11,
|
|
1322
|
+
"tags": [
|
|
1323
|
+
"Unity Catalog",
|
|
1324
|
+
"Lineage",
|
|
1325
|
+
"System tables",
|
|
1326
|
+
"Audit",
|
|
1327
|
+
"Cost"
|
|
1328
|
+
],
|
|
1329
|
+
"group": "Sharing and audit",
|
|
1330
|
+
"slides": 14,
|
|
1331
|
+
"quiz": 5,
|
|
1332
|
+
"exercises": 2,
|
|
1333
|
+
"demo": true,
|
|
1334
|
+
"datasets": [
|
|
1335
|
+
"hr"
|
|
1336
|
+
],
|
|
1337
|
+
"notebooks": [
|
|
1338
|
+
"01 Lecture - Lineage and system tables",
|
|
1339
|
+
"02 Exercises - Lineage and system tables"
|
|
1340
|
+
],
|
|
1341
|
+
"n": 4
|
|
1342
|
+
}
|
|
1343
|
+
]
|
|
1344
|
+
},
|
|
1345
|
+
{
|
|
1346
|
+
"id": "recaps",
|
|
1347
|
+
"title": "Course Recaps",
|
|
1348
|
+
"icon": "🎒",
|
|
1349
|
+
"desc": "8-10 minute recaps of the Databricks Academy instructor-led courses, one per course day.",
|
|
1350
|
+
"modules": [
|
|
1351
|
+
{
|
|
1352
|
+
"id": "lakeflow-connect-recap",
|
|
1353
|
+
"order": 10,
|
|
1354
|
+
"title": "Recap: Data Ingestion with Lakeflow Connect",
|
|
1355
|
+
"summary": "Recap of course 1 of Data Engineering with Databricks. Choose the right ingestion option, load files incrementally with COPY INTO or Auto Loader, and keep every row traceable to its source file.",
|
|
1356
|
+
"icon": "📥",
|
|
1357
|
+
"level": "Beginner",
|
|
1358
|
+
"minutes": 9,
|
|
1359
|
+
"tags": [
|
|
1360
|
+
"Lakeflow Connect",
|
|
1361
|
+
"COPY INTO",
|
|
1362
|
+
"Auto Loader",
|
|
1363
|
+
"read_files",
|
|
1364
|
+
"Ingestion"
|
|
1365
|
+
],
|
|
1366
|
+
"group": "Data Engineering with Databricks",
|
|
1367
|
+
"slides": 18,
|
|
1368
|
+
"quiz": 5,
|
|
1369
|
+
"exercises": 0,
|
|
1370
|
+
"demo": true,
|
|
1371
|
+
"datasets": [
|
|
1372
|
+
"retail"
|
|
1373
|
+
],
|
|
1374
|
+
"notebooks": [
|
|
1375
|
+
"01 Lecture - Recap: Data Ingestion with Lakeflow Connect"
|
|
1376
|
+
],
|
|
1377
|
+
"n": 1
|
|
1378
|
+
},
|
|
1379
|
+
{
|
|
1380
|
+
"id": "lakeflow-jobs-recap",
|
|
1381
|
+
"order": 20,
|
|
1382
|
+
"title": "Recap: Deploy Workloads with Lakeflow Jobs",
|
|
1383
|
+
"summary": "Recap of course 2 of Data Engineering with Databricks. Build a job as a DAG of tasks, pick the right trigger, pass parameters and task values, and recover from failures with repair runs.",
|
|
1384
|
+
"icon": "🗓️",
|
|
1385
|
+
"level": "Beginner",
|
|
1386
|
+
"minutes": 8,
|
|
1387
|
+
"tags": [
|
|
1388
|
+
"Lakeflow Jobs",
|
|
1389
|
+
"Orchestration",
|
|
1390
|
+
"Triggers",
|
|
1391
|
+
"Task values",
|
|
1392
|
+
"Repair run"
|
|
1393
|
+
],
|
|
1394
|
+
"group": "Data Engineering with Databricks",
|
|
1395
|
+
"slides": 15,
|
|
1396
|
+
"quiz": 5,
|
|
1397
|
+
"exercises": 0,
|
|
1398
|
+
"demo": false,
|
|
1399
|
+
"datasets": [],
|
|
1400
|
+
"notebooks": [
|
|
1401
|
+
"01 Lecture - Recap: Deploy Workloads with Lakeflow Jobs"
|
|
1402
|
+
],
|
|
1403
|
+
"n": 2
|
|
1404
|
+
},
|
|
1405
|
+
{
|
|
1406
|
+
"id": "declarative-pipelines-recap",
|
|
1407
|
+
"order": 30,
|
|
1408
|
+
"title": "Recap: Build Data Pipelines with Lakeflow Spark Declarative Pipelines",
|
|
1409
|
+
"summary": "Recap of course 3 of Data Engineering with Databricks. Choose streaming tables or materialized views, add expectations, run and monitor a pipeline, and apply CDC with AUTO CDC.",
|
|
1410
|
+
"icon": "🌊",
|
|
1411
|
+
"level": "Intermediate",
|
|
1412
|
+
"minutes": 9,
|
|
1413
|
+
"tags": [
|
|
1414
|
+
"Lakeflow Spark Declarative Pipelines",
|
|
1415
|
+
"Streaming tables",
|
|
1416
|
+
"Materialized views",
|
|
1417
|
+
"Expectations",
|
|
1418
|
+
"AUTO CDC"
|
|
1419
|
+
],
|
|
1420
|
+
"group": "Data Engineering with Databricks",
|
|
1421
|
+
"slides": 16,
|
|
1422
|
+
"quiz": 5,
|
|
1423
|
+
"exercises": 0,
|
|
1424
|
+
"demo": false,
|
|
1425
|
+
"datasets": [],
|
|
1426
|
+
"notebooks": [
|
|
1427
|
+
"01 Lecture - Recap: Build Data Pipelines with Lakeflow Spark Declarative Pipelines"
|
|
1428
|
+
],
|
|
1429
|
+
"n": 3
|
|
1430
|
+
},
|
|
1431
|
+
{
|
|
1432
|
+
"id": "devops-essentials-recap",
|
|
1433
|
+
"order": 40,
|
|
1434
|
+
"title": "Recap: DevOps Essentials for Data Engineering",
|
|
1435
|
+
"summary": "Recap of course 4 of Data Engineering with Databricks. Split logic into testable functions, unit test them with pytest, work in Git folders, and deploy the same code to dev, test and prod.",
|
|
1436
|
+
"icon": "🚀",
|
|
1437
|
+
"level": "Intermediate",
|
|
1438
|
+
"minutes": 8,
|
|
1439
|
+
"tags": [
|
|
1440
|
+
"CI/CD",
|
|
1441
|
+
"Unit testing",
|
|
1442
|
+
"Git folders",
|
|
1443
|
+
"Bundles",
|
|
1444
|
+
"DevOps"
|
|
1445
|
+
],
|
|
1446
|
+
"group": "Data Engineering with Databricks",
|
|
1447
|
+
"slides": 15,
|
|
1448
|
+
"quiz": 5,
|
|
1449
|
+
"exercises": 0,
|
|
1450
|
+
"demo": true,
|
|
1451
|
+
"datasets": [],
|
|
1452
|
+
"notebooks": [
|
|
1453
|
+
"01 Lecture - Recap: DevOps Essentials for Data Engineering"
|
|
1454
|
+
],
|
|
1455
|
+
"n": 4
|
|
1456
|
+
},
|
|
1457
|
+
{
|
|
1458
|
+
"id": "streaming-pipelines-recap",
|
|
1459
|
+
"order": 50,
|
|
1460
|
+
"title": "Recap: Databricks Streaming and Lakeflow Spark Declarative Pipelines",
|
|
1461
|
+
"summary": "Recap of course 1 of Advanced Data Engineering with Databricks. How Structured Streaming keeps state, emits results and recovers, and how declarative pipelines apply it to ingestion, joins, deduplication and CDC.",
|
|
1462
|
+
"icon": "🌊",
|
|
1463
|
+
"level": "Advanced",
|
|
1464
|
+
"minutes": 10,
|
|
1465
|
+
"tags": [
|
|
1466
|
+
"Structured Streaming",
|
|
1467
|
+
"Watermarks",
|
|
1468
|
+
"Checkpoints",
|
|
1469
|
+
"AUTO CDC",
|
|
1470
|
+
"Lakeflow Spark Declarative Pipelines"
|
|
1471
|
+
],
|
|
1472
|
+
"group": "Advanced Data Engineering with Databricks",
|
|
1473
|
+
"slides": 16,
|
|
1474
|
+
"quiz": 5,
|
|
1475
|
+
"exercises": 0,
|
|
1476
|
+
"demo": true,
|
|
1477
|
+
"datasets": [
|
|
1478
|
+
"retail"
|
|
1479
|
+
],
|
|
1480
|
+
"notebooks": [
|
|
1481
|
+
"01 Lecture - Recap: Databricks Streaming and Lakeflow Spark Declarative Pipelines"
|
|
1482
|
+
],
|
|
1483
|
+
"n": 5
|
|
1484
|
+
},
|
|
1485
|
+
{
|
|
1486
|
+
"id": "data-privacy-recap",
|
|
1487
|
+
"order": 60,
|
|
1488
|
+
"title": "Recap: Databricks Data Privacy",
|
|
1489
|
+
"summary": "Recap of course 2 of Advanced Data Engineering with Databricks. Control who sees which rows and columns, de-identify PII early in the medallion flow, and delete personal data so it is really gone.",
|
|
1490
|
+
"icon": "🔒",
|
|
1491
|
+
"level": "Advanced",
|
|
1492
|
+
"minutes": 9,
|
|
1493
|
+
"tags": [
|
|
1494
|
+
"Data privacy",
|
|
1495
|
+
"Row filters",
|
|
1496
|
+
"Column masks",
|
|
1497
|
+
"ABAC",
|
|
1498
|
+
"GDPR",
|
|
1499
|
+
"VACUUM"
|
|
1500
|
+
],
|
|
1501
|
+
"group": "Advanced Data Engineering with Databricks",
|
|
1502
|
+
"slides": 17,
|
|
1503
|
+
"quiz": 5,
|
|
1504
|
+
"exercises": 0,
|
|
1505
|
+
"demo": true,
|
|
1506
|
+
"datasets": [
|
|
1507
|
+
"retail"
|
|
1508
|
+
],
|
|
1509
|
+
"notebooks": [
|
|
1510
|
+
"01 Lecture - Recap: Databricks Data Privacy"
|
|
1511
|
+
],
|
|
1512
|
+
"n": 6
|
|
1513
|
+
},
|
|
1514
|
+
{
|
|
1515
|
+
"id": "performance-optimization-recap",
|
|
1516
|
+
"order": 70,
|
|
1517
|
+
"title": "Recap: Databricks Performance Optimization",
|
|
1518
|
+
"summary": "Recap of course 3 of Advanced Data Engineering with Databricks. Read less data with good file layout, move less data by avoiding shuffles, recognise skew, spill and slow UDFs, and choose compute last.",
|
|
1519
|
+
"icon": "⚡",
|
|
1520
|
+
"level": "Advanced",
|
|
1521
|
+
"minutes": 9,
|
|
1522
|
+
"tags": [
|
|
1523
|
+
"Performance",
|
|
1524
|
+
"Liquid clustering",
|
|
1525
|
+
"Data skipping",
|
|
1526
|
+
"AQE",
|
|
1527
|
+
"Photon",
|
|
1528
|
+
"Spark UI"
|
|
1529
|
+
],
|
|
1530
|
+
"group": "Advanced Data Engineering with Databricks",
|
|
1531
|
+
"slides": 16,
|
|
1532
|
+
"quiz": 5,
|
|
1533
|
+
"exercises": 0,
|
|
1534
|
+
"demo": true,
|
|
1535
|
+
"datasets": [
|
|
1536
|
+
"retail"
|
|
1537
|
+
],
|
|
1538
|
+
"notebooks": [
|
|
1539
|
+
"01 Lecture - Recap: Databricks Performance Optimization"
|
|
1540
|
+
],
|
|
1541
|
+
"n": 7
|
|
1542
|
+
},
|
|
1543
|
+
{
|
|
1544
|
+
"id": "asset-bundles-recap",
|
|
1545
|
+
"order": 80,
|
|
1546
|
+
"title": "Recap: Automated Deployment with Databricks Asset Bundles",
|
|
1547
|
+
"summary": "Recap of course 4 of Advanced Data Engineering with Databricks. Describe jobs and pipelines as YAML in a bundle, deploy the same project to dev, staging and prod with targets and variables, and automate it in CI.",
|
|
1548
|
+
"icon": "📦",
|
|
1549
|
+
"level": "Advanced",
|
|
1550
|
+
"minutes": 9,
|
|
1551
|
+
"tags": [
|
|
1552
|
+
"Declarative Automation Bundles",
|
|
1553
|
+
"Databricks CLI",
|
|
1554
|
+
"CI/CD",
|
|
1555
|
+
"GitHub Actions",
|
|
1556
|
+
"Deployment"
|
|
1557
|
+
],
|
|
1558
|
+
"group": "Advanced Data Engineering with Databricks",
|
|
1559
|
+
"slides": 13,
|
|
1560
|
+
"quiz": 5,
|
|
1561
|
+
"exercises": 0,
|
|
1562
|
+
"demo": false,
|
|
1563
|
+
"datasets": [],
|
|
1564
|
+
"notebooks": [
|
|
1565
|
+
"01 Lecture - Recap: Automated Deployment with Databricks Asset Bundles"
|
|
1566
|
+
],
|
|
1567
|
+
"n": 8
|
|
1568
|
+
}
|
|
1569
|
+
]
|
|
1570
|
+
},
|
|
1571
|
+
{
|
|
1572
|
+
"id": "exam-prep",
|
|
1573
|
+
"title": "Exam Prep",
|
|
1574
|
+
"icon": "🎓",
|
|
1575
|
+
"cta": true,
|
|
1576
|
+
"desc": "Preparation guides for the Databricks certifications: what the exam covers, what to know per domain, and a study plan.",
|
|
1577
|
+
"modules": [
|
|
1578
|
+
{
|
|
1579
|
+
"id": "exam-data-engineer-associate",
|
|
1580
|
+
"order": 10,
|
|
1581
|
+
"title": "Data Engineer Associate: exam prep",
|
|
1582
|
+
"summary": "What the Databricks Certified Data Engineer Associate exam covers, the facts and distinctions each domain tests, the classic traps, and a three-week study plan.",
|
|
1583
|
+
"icon": "🎓",
|
|
1584
|
+
"level": "Intermediate",
|
|
1585
|
+
"minutes": 14,
|
|
1586
|
+
"tags": [
|
|
1587
|
+
"Certification",
|
|
1588
|
+
"Data Engineering",
|
|
1589
|
+
"Lakeflow",
|
|
1590
|
+
"Unity Catalog"
|
|
1591
|
+
],
|
|
1592
|
+
"group": "Associate",
|
|
1593
|
+
"slides": 15,
|
|
1594
|
+
"quiz": 5,
|
|
1595
|
+
"exercises": 0,
|
|
1596
|
+
"demo": false,
|
|
1597
|
+
"datasets": [],
|
|
1598
|
+
"notebooks": [
|
|
1599
|
+
"01 Lecture - Data Engineer Associate: exam prep"
|
|
1600
|
+
],
|
|
1601
|
+
"n": 1
|
|
1602
|
+
},
|
|
1603
|
+
{
|
|
1604
|
+
"id": "exam-data-engineer-professional",
|
|
1605
|
+
"order": 20,
|
|
1606
|
+
"title": "Data Engineer Professional: exam prep",
|
|
1607
|
+
"summary": "What the Databricks Certified Data Engineer Professional exam covers, the facts and distinctions to know in each of its nine domains, and a three-week study plan.",
|
|
1608
|
+
"icon": "🎓",
|
|
1609
|
+
"level": "Advanced",
|
|
1610
|
+
"minutes": 15,
|
|
1611
|
+
"tags": [
|
|
1612
|
+
"Certification",
|
|
1613
|
+
"Data Engineering",
|
|
1614
|
+
"Lakeflow",
|
|
1615
|
+
"Delta Lake"
|
|
1616
|
+
],
|
|
1617
|
+
"group": "Professional",
|
|
1618
|
+
"slides": 15,
|
|
1619
|
+
"quiz": 5,
|
|
1620
|
+
"exercises": 0,
|
|
1621
|
+
"demo": false,
|
|
1622
|
+
"datasets": [],
|
|
1623
|
+
"notebooks": [
|
|
1624
|
+
"01 Lecture - Data Engineer Professional: exam prep"
|
|
1625
|
+
],
|
|
1626
|
+
"n": 2
|
|
1627
|
+
},
|
|
1628
|
+
{
|
|
1629
|
+
"id": "exam-data-analyst-associate",
|
|
1630
|
+
"order": 30,
|
|
1631
|
+
"title": "Data Analyst Associate: exam prep",
|
|
1632
|
+
"summary": "What the Databricks Certified Data Analyst Associate exam covers, the facts and distinctions each domain tests, the usual traps, and a three-week study plan.",
|
|
1633
|
+
"icon": "🎓",
|
|
1634
|
+
"level": "Intermediate",
|
|
1635
|
+
"minutes": 14,
|
|
1636
|
+
"tags": [
|
|
1637
|
+
"Certification",
|
|
1638
|
+
"Analytics",
|
|
1639
|
+
"Databricks SQL",
|
|
1640
|
+
"AI/BI"
|
|
1641
|
+
],
|
|
1642
|
+
"group": "Associate",
|
|
1643
|
+
"slides": 15,
|
|
1644
|
+
"quiz": 5,
|
|
1645
|
+
"exercises": 0,
|
|
1646
|
+
"demo": false,
|
|
1647
|
+
"datasets": [],
|
|
1648
|
+
"notebooks": [
|
|
1649
|
+
"01 Lecture - Data Analyst Associate: exam prep"
|
|
1650
|
+
],
|
|
1651
|
+
"n": 3
|
|
1652
|
+
},
|
|
1653
|
+
{
|
|
1654
|
+
"id": "exam-ml-associate",
|
|
1655
|
+
"order": 40,
|
|
1656
|
+
"title": "Machine Learning Associate: exam prep",
|
|
1657
|
+
"summary": "What the Databricks Certified Machine Learning Associate exam covers, the facts and distinctions each domain tests, the traps, and a three-week study plan.",
|
|
1658
|
+
"icon": "🎓",
|
|
1659
|
+
"level": "Intermediate",
|
|
1660
|
+
"minutes": 14,
|
|
1661
|
+
"tags": [
|
|
1662
|
+
"Certification",
|
|
1663
|
+
"Machine Learning",
|
|
1664
|
+
"MLflow"
|
|
1665
|
+
],
|
|
1666
|
+
"group": "Associate",
|
|
1667
|
+
"slides": 15,
|
|
1668
|
+
"quiz": 5,
|
|
1669
|
+
"exercises": 0,
|
|
1670
|
+
"demo": false,
|
|
1671
|
+
"datasets": [],
|
|
1672
|
+
"notebooks": [
|
|
1673
|
+
"01 Lecture - Machine Learning Associate: exam prep"
|
|
1674
|
+
],
|
|
1675
|
+
"n": 4
|
|
1676
|
+
},
|
|
1677
|
+
{
|
|
1678
|
+
"id": "exam-ml-professional",
|
|
1679
|
+
"order": 50,
|
|
1680
|
+
"title": "Machine Learning Professional: exam prep",
|
|
1681
|
+
"summary": "What the Databricks Certified Machine Learning Professional exam covers, the facts and distinctions to know per domain, the typical traps, and a 3-week study plan.",
|
|
1682
|
+
"icon": "🎓",
|
|
1683
|
+
"level": "Advanced",
|
|
1684
|
+
"minutes": 14,
|
|
1685
|
+
"tags": [
|
|
1686
|
+
"Certification",
|
|
1687
|
+
"Machine Learning",
|
|
1688
|
+
"MLOps"
|
|
1689
|
+
],
|
|
1690
|
+
"group": "Professional",
|
|
1691
|
+
"slides": 15,
|
|
1692
|
+
"quiz": 5,
|
|
1693
|
+
"exercises": 0,
|
|
1694
|
+
"demo": false,
|
|
1695
|
+
"datasets": [],
|
|
1696
|
+
"notebooks": [
|
|
1697
|
+
"01 Lecture - Machine Learning Professional: exam prep"
|
|
1698
|
+
],
|
|
1699
|
+
"n": 5
|
|
1700
|
+
},
|
|
1701
|
+
{
|
|
1702
|
+
"id": "exam-genai-engineer-associate",
|
|
1703
|
+
"order": 60,
|
|
1704
|
+
"title": "Generative AI Engineer Associate: exam prep",
|
|
1705
|
+
"summary": "What the GenAI Engineer Associate exam covers, the facts and distinctions to know per domain (RAG data prep, Vector Search, agents, MLflow evaluation, guardrails), and a realistic study plan.",
|
|
1706
|
+
"icon": "🎓",
|
|
1707
|
+
"level": "Intermediate",
|
|
1708
|
+
"minutes": 14,
|
|
1709
|
+
"tags": [
|
|
1710
|
+
"Certification",
|
|
1711
|
+
"Generative AI",
|
|
1712
|
+
"RAG",
|
|
1713
|
+
"Agents"
|
|
1714
|
+
],
|
|
1715
|
+
"group": "Associate",
|
|
1716
|
+
"slides": 15,
|
|
1717
|
+
"quiz": 5,
|
|
1718
|
+
"exercises": 0,
|
|
1719
|
+
"demo": false,
|
|
1720
|
+
"datasets": [],
|
|
1721
|
+
"notebooks": [
|
|
1722
|
+
"01 Lecture - Generative AI Engineer Associate: exam prep"
|
|
1723
|
+
],
|
|
1724
|
+
"n": 6
|
|
1725
|
+
},
|
|
1726
|
+
{
|
|
1727
|
+
"id": "exam-spark-developer-associate",
|
|
1728
|
+
"order": 70,
|
|
1729
|
+
"title": "Apache Spark Developer Associate: exam prep",
|
|
1730
|
+
"summary": "What the Spark Developer Associate exam covers, the facts and API details to know per domain, the classic traps, and a three-week study plan.",
|
|
1731
|
+
"icon": "🎓",
|
|
1732
|
+
"level": "Intermediate",
|
|
1733
|
+
"minutes": 14,
|
|
1734
|
+
"tags": [
|
|
1735
|
+
"Certification",
|
|
1736
|
+
"Apache Spark",
|
|
1737
|
+
"PySpark"
|
|
1738
|
+
],
|
|
1739
|
+
"group": "Associate",
|
|
1740
|
+
"slides": 15,
|
|
1741
|
+
"quiz": 5,
|
|
1742
|
+
"exercises": 0,
|
|
1743
|
+
"demo": false,
|
|
1744
|
+
"datasets": [],
|
|
1745
|
+
"notebooks": [
|
|
1746
|
+
"01 Lecture - Apache Spark Developer Associate: exam prep"
|
|
1747
|
+
],
|
|
1748
|
+
"n": 7
|
|
1749
|
+
}
|
|
1750
|
+
]
|
|
1751
|
+
},
|
|
1752
|
+
{
|
|
1753
|
+
"id": "demo-data",
|
|
1754
|
+
"title": "Demo Data",
|
|
1755
|
+
"icon": "🧪",
|
|
1756
|
+
"desc": "Seeded data generators. Each one builds several related tables with primary and foreign keys in a schema you choose.",
|
|
1757
|
+
"modules": [
|
|
1758
|
+
{
|
|
1759
|
+
"id": "retail-data",
|
|
1760
|
+
"order": 10,
|
|
1761
|
+
"title": "Retail star schema",
|
|
1762
|
+
"summary": "Three related tables (customers, products, orders) with primary and foreign keys, built from a seed. The default dataset for SQL, Delta Lake, pipelines and dashboard demos.",
|
|
1763
|
+
"icon": "🛒",
|
|
1764
|
+
"level": "Beginner",
|
|
1765
|
+
"minutes": 5,
|
|
1766
|
+
"tags": [
|
|
1767
|
+
"Demo data",
|
|
1768
|
+
"Star schema",
|
|
1769
|
+
"SQL",
|
|
1770
|
+
"Joins"
|
|
1771
|
+
],
|
|
1772
|
+
"group": "Datasets",
|
|
1773
|
+
"slides": 7,
|
|
1774
|
+
"quiz": 0,
|
|
1775
|
+
"exercises": 0,
|
|
1776
|
+
"demo": true,
|
|
1777
|
+
"datasets": [
|
|
1778
|
+
"retail"
|
|
1779
|
+
],
|
|
1780
|
+
"notebooks": [
|
|
1781
|
+
"01 Lecture - Retail star schema"
|
|
1782
|
+
],
|
|
1783
|
+
"n": 1
|
|
1784
|
+
},
|
|
1785
|
+
{
|
|
1786
|
+
"id": "iot-data",
|
|
1787
|
+
"order": 20,
|
|
1788
|
+
"title": "IoT sensor readings",
|
|
1789
|
+
"summary": "Sites, devices and 50,000 time-stamped sensor readings with realistic problems (duplicates, late arrivals, impossible values). Made for streaming, Auto Loader and data quality demos.",
|
|
1790
|
+
"icon": "📡",
|
|
1791
|
+
"level": "Beginner",
|
|
1792
|
+
"minutes": 5,
|
|
1793
|
+
"tags": [
|
|
1794
|
+
"Demo data",
|
|
1795
|
+
"Streaming",
|
|
1796
|
+
"Data quality",
|
|
1797
|
+
"Time series"
|
|
1798
|
+
],
|
|
1799
|
+
"group": "Datasets",
|
|
1800
|
+
"slides": 6,
|
|
1801
|
+
"quiz": 0,
|
|
1802
|
+
"exercises": 0,
|
|
1803
|
+
"demo": true,
|
|
1804
|
+
"datasets": [
|
|
1805
|
+
"iot"
|
|
1806
|
+
],
|
|
1807
|
+
"notebooks": [
|
|
1808
|
+
"01 Lecture - IoT sensor readings"
|
|
1809
|
+
],
|
|
1810
|
+
"n": 2
|
|
1811
|
+
},
|
|
1812
|
+
{
|
|
1813
|
+
"id": "churn-data",
|
|
1814
|
+
"order": 30,
|
|
1815
|
+
"title": "Telco churn",
|
|
1816
|
+
"summary": "5,000 subscribers with a churn label that really depends on the features, plus six months of usage per subscriber. Made for MLflow, feature tables and model demos.",
|
|
1817
|
+
"icon": "📉",
|
|
1818
|
+
"level": "Beginner",
|
|
1819
|
+
"minutes": 5,
|
|
1820
|
+
"tags": [
|
|
1821
|
+
"Demo data",
|
|
1822
|
+
"Machine learning",
|
|
1823
|
+
"Classification",
|
|
1824
|
+
"Features"
|
|
1825
|
+
],
|
|
1826
|
+
"group": "Datasets",
|
|
1827
|
+
"slides": 6,
|
|
1828
|
+
"quiz": 0,
|
|
1829
|
+
"exercises": 0,
|
|
1830
|
+
"demo": true,
|
|
1831
|
+
"datasets": [
|
|
1832
|
+
"churn"
|
|
1833
|
+
],
|
|
1834
|
+
"notebooks": [
|
|
1835
|
+
"01 Lecture - Telco churn"
|
|
1836
|
+
],
|
|
1837
|
+
"n": 3
|
|
1838
|
+
},
|
|
1839
|
+
{
|
|
1840
|
+
"id": "support-data",
|
|
1841
|
+
"order": 40,
|
|
1842
|
+
"title": "Support knowledge base",
|
|
1843
|
+
"summary": "48 help-center articles and 2,000 support tickets for a fictional smart-home company. Each resolved ticket points to the article that answers it, so retrieval can be measured.",
|
|
1844
|
+
"icon": "💬",
|
|
1845
|
+
"level": "Beginner",
|
|
1846
|
+
"minutes": 5,
|
|
1847
|
+
"tags": [
|
|
1848
|
+
"Demo data",
|
|
1849
|
+
"Generative AI",
|
|
1850
|
+
"RAG",
|
|
1851
|
+
"Text"
|
|
1852
|
+
],
|
|
1853
|
+
"group": "Datasets",
|
|
1854
|
+
"slides": 6,
|
|
1855
|
+
"quiz": 0,
|
|
1856
|
+
"exercises": 0,
|
|
1857
|
+
"demo": true,
|
|
1858
|
+
"datasets": [
|
|
1859
|
+
"support"
|
|
1860
|
+
],
|
|
1861
|
+
"notebooks": [
|
|
1862
|
+
"01 Lecture - Support knowledge base"
|
|
1863
|
+
],
|
|
1864
|
+
"n": 4
|
|
1865
|
+
},
|
|
1866
|
+
{
|
|
1867
|
+
"id": "hr-data",
|
|
1868
|
+
"order": 50,
|
|
1869
|
+
"title": "HR with sensitive columns",
|
|
1870
|
+
"summary": "8 departments and 300 employees with synthetic PII (email, national id, salary) and a manager hierarchy. Made for privileges, row filters, column masks and pseudonymization.",
|
|
1871
|
+
"icon": "🧑💼",
|
|
1872
|
+
"level": "Beginner",
|
|
1873
|
+
"minutes": 5,
|
|
1874
|
+
"tags": [
|
|
1875
|
+
"Demo data",
|
|
1876
|
+
"Governance",
|
|
1877
|
+
"PII",
|
|
1878
|
+
"Self join"
|
|
1879
|
+
],
|
|
1880
|
+
"group": "Datasets",
|
|
1881
|
+
"slides": 5,
|
|
1882
|
+
"quiz": 0,
|
|
1883
|
+
"exercises": 0,
|
|
1884
|
+
"demo": true,
|
|
1885
|
+
"datasets": [
|
|
1886
|
+
"hr"
|
|
1887
|
+
],
|
|
1888
|
+
"notebooks": [
|
|
1889
|
+
"01 Lecture - HR with sensitive columns"
|
|
1890
|
+
],
|
|
1891
|
+
"n": 5
|
|
1892
|
+
},
|
|
1893
|
+
{
|
|
1894
|
+
"id": "cdc-data",
|
|
1895
|
+
"order": 60,
|
|
1896
|
+
"title": "Change data capture feed",
|
|
1897
|
+
"summary": "A 200-row customer snapshot and 600 change events (inserts, updates, deletes), some delivered out of order. Made for MERGE, AUTO CDC and SCD Type 1 and 2.",
|
|
1898
|
+
"icon": "🔁",
|
|
1899
|
+
"level": "Beginner",
|
|
1900
|
+
"minutes": 5,
|
|
1901
|
+
"tags": [
|
|
1902
|
+
"Demo data",
|
|
1903
|
+
"CDC",
|
|
1904
|
+
"MERGE",
|
|
1905
|
+
"SCD"
|
|
1906
|
+
],
|
|
1907
|
+
"group": "Datasets",
|
|
1908
|
+
"slides": 5,
|
|
1909
|
+
"quiz": 0,
|
|
1910
|
+
"exercises": 0,
|
|
1911
|
+
"demo": true,
|
|
1912
|
+
"datasets": [
|
|
1913
|
+
"cdc"
|
|
1914
|
+
],
|
|
1915
|
+
"notebooks": [
|
|
1916
|
+
"01 Lecture - Change data capture feed"
|
|
1917
|
+
],
|
|
1918
|
+
"n": 6
|
|
1919
|
+
}
|
|
1920
|
+
]
|
|
1921
|
+
}
|
|
1922
|
+
]
|
|
1923
|
+
}
|