fabricks 3.0.5.2__tar.gz → 3.0.6__tar.gz
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.
- {fabricks-3.0.5.2 → fabricks-3.0.6}/PKG-INFO +2 -1
- {fabricks-3.0.5.2 → fabricks-3.0.6}/docs/helpers/init.md +29 -34
- {fabricks-3.0.5.2 → fabricks-3.0.6}/docs/helpers/job.md +18 -20
- {fabricks-3.0.5.2 → fabricks-3.0.6}/docs/helpers/runtime.md +9 -14
- {fabricks-3.0.5.2 → fabricks-3.0.6}/docs/helpers/schedule.md +14 -21
- {fabricks-3.0.5.2 → fabricks-3.0.6}/docs/helpers/step.md +23 -26
- fabricks-3.0.6/docs/index.md +51 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/docs/introduction/layers.md +10 -9
- {fabricks-3.0.5.2 → fabricks-3.0.6}/docs/introduction/overview.md +11 -10
- {fabricks-3.0.5.2 → fabricks-3.0.6}/docs/reference/cdc.md +54 -62
- {fabricks-3.0.5.2 → fabricks-3.0.6}/docs/reference/checks-data-quality.md +15 -20
- {fabricks-3.0.5.2 → fabricks-3.0.6}/docs/reference/extenders-udfs-parsers.md +11 -16
- {fabricks-3.0.5.2 → fabricks-3.0.6}/docs/reference/table-options.md +22 -21
- fabricks-3.0.6/docs/steps/BRONZE.md +110 -0
- fabricks-3.0.6/docs/steps/GOLD.md +184 -0
- fabricks-3.0.6/docs/steps/SILVER.md +150 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/__init__.py +2 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/context.py +1 -2
- fabricks-3.0.6/fabricks/api/deploy.py +3 -0
- fabricks-3.0.6/fabricks/api/job_schema.py +3 -0
- fabricks-3.0.6/fabricks/api/masks.py +3 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/notebooks/initialize.py +2 -2
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/notebooks/process.py +2 -2
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/notebooks/run.py +2 -2
- fabricks-3.0.6/fabricks/api/notebooks/schedule.py +75 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/notebooks/terminate.py +2 -2
- fabricks-3.0.6/fabricks/api/schedules.py +3 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/cdc/__init__.py +2 -2
- fabricks-3.0.6/fabricks/cdc/base/__init__.py +4 -0
- fabricks-3.0.6/fabricks/cdc/base/_types.py +10 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/cdc/base/configurator.py +86 -41
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/cdc/base/generator.py +44 -35
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/cdc/base/merger.py +16 -14
- fabricks-3.0.6/fabricks/cdc/base/processor.py +471 -0
- fabricks-3.0.6/fabricks/cdc/nocdc.py +20 -0
- {fabricks-3.0.5.2/fabricks/cdc/templates/query → fabricks-3.0.6/fabricks/cdc/templates/ctes}/base.sql.jinja +7 -6
- fabricks-3.0.6/fabricks/cdc/templates/ctes/current.sql.jinja +28 -0
- fabricks-3.0.6/fabricks/cdc/templates/ctes/deduplicate_hash.sql.jinja +32 -0
- fabricks-3.0.6/fabricks/cdc/templates/ctes/deduplicate_key.sql.jinja +31 -0
- {fabricks-3.0.5.2/fabricks/cdc/templates/query → fabricks-3.0.6/fabricks/cdc/templates/ctes}/rectify.sql.jinja +4 -22
- fabricks-3.0.6/fabricks/cdc/templates/ctes/slice.sql.jinja +1 -0
- fabricks-3.0.6/fabricks/cdc/templates/filter.sql.jinja +4 -0
- fabricks-3.0.6/fabricks/cdc/templates/macros/bactick.sql.jinja +1 -0
- fabricks-3.0.6/fabricks/cdc/templates/macros/hash.sql.jinja +18 -0
- fabricks-3.0.6/fabricks/cdc/templates/merge.sql.jinja +3 -0
- fabricks-3.0.6/fabricks/cdc/templates/merges/nocdc.sql.jinja +41 -0
- fabricks-3.0.6/fabricks/cdc/templates/queries/context.sql.jinja +186 -0
- fabricks-3.0.5.2/fabricks/cdc/templates/query/nocdc.sql.jinja → fabricks-3.0.6/fabricks/cdc/templates/queries/nocdc/complete.sql.jinja +1 -1
- fabricks-3.0.6/fabricks/cdc/templates/queries/nocdc/update.sql.jinja +35 -0
- {fabricks-3.0.5.2/fabricks/cdc/templates/query → fabricks-3.0.6/fabricks/cdc/templates/queries}/scd1.sql.jinja +2 -28
- {fabricks-3.0.5.2/fabricks/cdc/templates/query → fabricks-3.0.6/fabricks/cdc/templates/queries}/scd2.sql.jinja +29 -48
- fabricks-3.0.6/fabricks/cdc/templates/query.sql.jinja +15 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/context/__init__.py +18 -4
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/context/_types.py +2 -0
- fabricks-3.0.6/fabricks/context/config/__init__.py +92 -0
- fabricks-3.0.6/fabricks/context/config/utils.py +53 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/context/log.py +8 -2
- fabricks-3.0.6/fabricks/context/runtime.py +117 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/context/secret.py +1 -1
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/context/spark_session.py +1 -1
- fabricks-3.0.6/fabricks/context/utils.py +76 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/dags/generator.py +6 -7
- fabricks-3.0.6/fabricks/core/dags/log.py +12 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/dags/processor.py +11 -11
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/dags/utils.py +15 -1
- {fabricks-3.0.5.2/fabricks/core/scripts → fabricks-3.0.6/fabricks/core}/job_schema.py +4 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/base/_types.py +64 -22
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/base/checker.py +13 -12
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/base/configurator.py +41 -67
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/base/generator.py +55 -24
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/base/invoker.py +54 -30
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/base/processor.py +43 -26
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/bronze.py +45 -38
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/get_jobs.py +2 -2
- fabricks-3.0.6/fabricks/core/jobs/get_schedule.py +10 -0
- fabricks-3.0.6/fabricks/core/jobs/get_schedules.py +32 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/gold.py +61 -48
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/silver.py +39 -40
- fabricks-3.0.6/fabricks/core/masks.py +52 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/parsers/base.py +2 -2
- fabricks-3.0.6/fabricks/core/schedules/__init__.py +14 -0
- fabricks-3.0.6/fabricks/core/schedules/diagrams.py +46 -0
- fabricks-3.0.6/fabricks/core/schedules/get_schedule.py +5 -0
- fabricks-3.0.6/fabricks/core/schedules/get_schedules.py +9 -0
- fabricks-3.0.6/fabricks/core/schedules/run.py +3 -0
- fabricks-3.0.6/fabricks/core/schedules/views.py +61 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/steps/base.py +110 -72
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/udfs.py +12 -23
- fabricks-3.0.6/fabricks/core/views.py +41 -0
- fabricks-3.0.6/fabricks/deploy/__init__.py +97 -0
- fabricks-3.0.6/fabricks/deploy/masks.py +8 -0
- fabricks-3.0.6/fabricks/deploy/notebooks.py +71 -0
- fabricks-3.0.6/fabricks/deploy/schedules.py +8 -0
- {fabricks-3.0.5.2/fabricks/core → fabricks-3.0.6/fabricks}/deploy/tables.py +16 -13
- {fabricks-3.0.5.2/fabricks/core → fabricks-3.0.6/fabricks}/deploy/udfs.py +3 -1
- fabricks-3.0.6/fabricks/deploy/utils.py +36 -0
- {fabricks-3.0.5.2/fabricks/core → fabricks-3.0.6/fabricks}/deploy/views.py +5 -9
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/metastore/database.py +3 -3
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/metastore/dbobject.py +4 -4
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/metastore/table.py +157 -88
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/metastore/view.py +13 -6
- fabricks-3.0.6/fabricks/utils/_types.py +6 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/azure_table.py +4 -3
- fabricks-3.0.6/fabricks/utils/helpers.py +228 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/log.py +29 -18
- fabricks-3.0.6/fabricks/utils/read/_types.py +3 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/schema/get_schema_for_type.py +6 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/write/delta.py +3 -3
- fabricks-3.0.6/mkdocs.sh +1 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/pyproject.toml +7 -5
- fabricks-3.0.5.2/tests/integration/add_fabricks.py → fabricks-3.0.6/tests/integration/add_missing_modules.py +2 -1
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/armageddon.py +3 -9
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/compare.py +2 -0
- fabricks-3.0.6/tests/integration/fabricksconfig.json +8 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/initialize.py +3 -1
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job1/test_gold.py +11 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job1/test_schedule.py +21 -29
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job2/test_run.py +5 -2
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job3/test_gold.py +36 -1
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job5/test_step.py +5 -5
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/reset.py +1 -1
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/run.py +1 -1
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runjobs.py +7 -3
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtests.py +1 -1
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/fabricks/conf.fabricks.yml +3 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/fabricks/conf.uc.fabricks.yml +2 -0
- fabricks-3.0.6/tests/integration/runtime/fabricks/masks/dummy.sql +1 -0
- fabricks-3.0.6/tests/integration/runtime/fabricks/notebooks/add_missing_modules.py +24 -0
- fabricks-3.0.6/tests/integration/runtime/fabricks/notebooks/cluster.py +6 -0
- fabricks-3.0.6/tests/integration/runtime/fabricks/notebooks/initialize.py +42 -0
- fabricks-3.0.6/tests/integration/runtime/fabricks/notebooks/process.py +54 -0
- fabricks-3.0.6/tests/integration/runtime/fabricks/notebooks/run.py +59 -0
- fabricks-3.0.6/tests/integration/runtime/fabricks/notebooks/schedule.py +76 -0
- fabricks-3.0.5.2/fabricks/api/notebooks/vacuum.py → fabricks-3.0.6/tests/integration/runtime/fabricks/notebooks/terminate.py +10 -8
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/fabricks/parsers/delete_log.py +1 -1
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/fact/_config.fact.yml +57 -1
- fabricks-3.0.6/tests/integration/runtime/gold/gold/fact/add_missing_modules.py +24 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/fact/dependency_notebook.ipynb +1 -1
- fabricks-3.0.6/tests/integration/runtime/gold/gold/fact/foreign_keys.sql +3 -0
- fabricks-3.0.6/tests/integration/runtime/gold/gold/fact/masker_and_commenter.sql +3 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/fact/notebook.ipynb +80 -11
- fabricks-3.0.6/tests/integration/runtime/gold/gold/fact/primary_key.sql +3 -0
- fabricks-3.0.6/tests/integration/runtime/gold/gold/invoke/post_run.sql +1 -0
- fabricks-3.0.6/tests/integration/runtime/gold/gold/invoke/timedout_pre_run.sql +1 -0
- fabricks-3.0.6/tests/integration/runtime/gold/gold/nocdc/_config.nocdc.yml +17 -0
- fabricks-3.0.6/tests/integration/runtime/gold/gold/nocdc/deduplicate.sql +18 -0
- fabricks-3.0.6/tests/integration/runtime/gold/gold/nocdc/update.sql +9 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/scd1/_config.scd1.yml +8 -0
- fabricks-3.0.6/tests/integration/runtime/gold/gold/scd1/special_char.sql +1 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/job-schema.json +214 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/schedule.py +3 -3
- {fabricks-3.0.5.2 → fabricks-3.0.6}/uv.lock +1615 -1578
- fabricks-3.0.5.2/docs/index.md +0 -49
- fabricks-3.0.5.2/docs/steps/BRONZE.md +0 -144
- fabricks-3.0.5.2/docs/steps/GOLD.md +0 -641
- fabricks-3.0.5.2/docs/steps/SILVER.md +0 -260
- fabricks-3.0.5.2/fabricks/api/job_schema.py +0 -3
- fabricks-3.0.5.2/fabricks/api/notebooks/add_fabricks.py +0 -13
- fabricks-3.0.5.2/fabricks/api/notebooks/optimize.py +0 -29
- fabricks-3.0.5.2/fabricks/api/schedules.py +0 -17
- fabricks-3.0.5.2/fabricks/cdc/base/__init__.py +0 -4
- fabricks-3.0.5.2/fabricks/cdc/base/_types.py +0 -3
- fabricks-3.0.5.2/fabricks/cdc/base/processor.py +0 -383
- fabricks-3.0.5.2/fabricks/cdc/nocdc.py +0 -19
- fabricks-3.0.5.2/fabricks/cdc/templates/filter.sql.jinja +0 -4
- fabricks-3.0.5.2/fabricks/cdc/templates/merge.sql.jinja +0 -2
- fabricks-3.0.5.2/fabricks/cdc/templates/query/context.sql.jinja +0 -101
- fabricks-3.0.5.2/fabricks/cdc/templates/query/current.sql.jinja +0 -32
- fabricks-3.0.5.2/fabricks/cdc/templates/query/deduplicate_hash.sql.jinja +0 -21
- fabricks-3.0.5.2/fabricks/cdc/templates/query/deduplicate_key.sql.jinja +0 -14
- fabricks-3.0.5.2/fabricks/cdc/templates/query/hash.sql.jinja +0 -1
- fabricks-3.0.5.2/fabricks/cdc/templates/query/slice.sql.jinja +0 -14
- fabricks-3.0.5.2/fabricks/cdc/templates/query.sql.jinja +0 -11
- fabricks-3.0.5.2/fabricks/config/base.py +0 -8
- fabricks-3.0.5.2/fabricks/config/fabricks/__init__.py +0 -26
- fabricks-3.0.5.2/fabricks/config/fabricks/base.py +0 -90
- fabricks-3.0.5.2/fabricks/config/fabricks/environment.py +0 -9
- fabricks-3.0.5.2/fabricks/config/fabricks/pyproject.py +0 -47
- fabricks-3.0.5.2/fabricks/config/jobs/__init__.py +0 -6
- fabricks-3.0.5.2/fabricks/config/jobs/base.py +0 -101
- fabricks-3.0.5.2/fabricks/config/jobs/bronze.py +0 -38
- fabricks-3.0.5.2/fabricks/config/jobs/gold.py +0 -27
- fabricks-3.0.5.2/fabricks/config/jobs/silver.py +0 -22
- fabricks-3.0.5.2/fabricks/config/runtime.py +0 -67
- fabricks-3.0.5.2/fabricks/config/steps/__init__.py +0 -6
- fabricks-3.0.5.2/fabricks/config/steps/base.py +0 -50
- fabricks-3.0.5.2/fabricks/config/steps/bronze.py +0 -7
- fabricks-3.0.5.2/fabricks/config/steps/gold.py +0 -14
- fabricks-3.0.5.2/fabricks/config/steps/silver.py +0 -15
- fabricks-3.0.5.2/fabricks/context/runtime.py +0 -293
- fabricks-3.0.5.2/fabricks/core/dags/log.py +0 -25
- fabricks-3.0.5.2/fabricks/core/deploy/__init__.py +0 -17
- fabricks-3.0.5.2/fabricks/core/schedules.py +0 -142
- fabricks-3.0.5.2/fabricks/core/scripts/__init__.py +0 -9
- fabricks-3.0.5.2/fabricks/core/scripts/armageddon.py +0 -87
- fabricks-3.0.5.2/fabricks/core/scripts/stats.py +0 -51
- fabricks-3.0.5.2/fabricks/core/scripts/steps.py +0 -26
- fabricks-3.0.5.2/fabricks/core/views.py +0 -34
- fabricks-3.0.5.2/fabricks/utils/helpers.py +0 -98
- fabricks-3.0.5.2/fabricks/utils/read/_types.py +0 -3
- fabricks-3.0.5.2/tests/integration/runtime/add_fabricks.py +0 -11
- fabricks-3.0.5.2/tests/integration/runtime/fabricks/udfs/__init__.py +0 -0
- fabricks-3.0.5.2/tests/integration/runtime/gold/gold/fact/option_b.sql +0 -1
- {fabricks-3.0.5.2 → fabricks-3.0.6}/.gitignore +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/.gitkeep +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/.python-version +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/README.md +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/databricks.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/cdc/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/cdc/nocdc.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/cdc/scd1.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/cdc/scd2.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/core.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/exceptions.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/extenders.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/log.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/metastore/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/metastore/database.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/metastore/table.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/metastore/view.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/notebooks/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/notebooks/cluster.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/parsers.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/udfs.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/utils.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/version.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/api/views.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/cdc/base/cdc.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/cdc/cdc.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/cdc/scd.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/cdc/scd1.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/cdc/scd2.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/cdc/templates/__init__.py +0 -0
- {fabricks-3.0.5.2/fabricks/cdc/templates/filter → fabricks-3.0.6/fabricks/cdc/templates/filters}/final.sql.jinja +0 -0
- {fabricks-3.0.5.2/fabricks/cdc/templates/filter → fabricks-3.0.6/fabricks/cdc/templates/filters}/latest.sql.jinja +0 -0
- {fabricks-3.0.5.2/fabricks/cdc/templates/filter → fabricks-3.0.6/fabricks/cdc/templates/filters}/update.sql.jinja +0 -0
- {fabricks-3.0.5.2/fabricks/cdc/templates/merge → fabricks-3.0.6/fabricks/cdc/templates/merges}/scd1.sql.jinja +0 -0
- {fabricks-3.0.5.2/fabricks/cdc/templates/merge → fabricks-3.0.6/fabricks/cdc/templates/merges}/scd2.sql.jinja +0 -0
- {fabricks-3.0.5.2/fabricks/cdc/templates/query → fabricks-3.0.6/fabricks/cdc/templates/queries}/__init__.py +0 -0
- {fabricks-3.0.5.2/fabricks/cdc/templates/query → fabricks-3.0.6/fabricks/cdc/templates/queries}/final.sql.jinja +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/dags/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/dags/base.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/dags/run.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/dags/terminator.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/extenders.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/base/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/base/exception.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/base/job.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/get_job.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/get_job_conf.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/jobs/get_job_id.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/parsers/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/parsers/_types.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/parsers/decorator.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/parsers/get_parser.py +0 -0
- {fabricks-3.0.5.2/fabricks/core → fabricks-3.0.6/fabricks/core/parsers}/utils.py +0 -0
- {fabricks-3.0.5.2/fabricks/core/scripts → fabricks-3.0.6/fabricks/core/schedules}/generate.py +0 -0
- {fabricks-3.0.5.2/fabricks/core/scripts → fabricks-3.0.6/fabricks/core/schedules}/process.py +0 -0
- {fabricks-3.0.5.2/fabricks/core/scripts → fabricks-3.0.6/fabricks/core/schedules}/terminate.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/steps/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/steps/_types.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/steps/get_step.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/core/steps/get_step_conf.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/metastore/README.md +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/metastore/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/metastore/_types.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/metastore/pyproject.toml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/metastore/utils.py +0 -0
- {fabricks-3.0.5.2/fabricks/config → fabricks-3.0.6/fabricks/utils}/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/azure_queue.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/console.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/fdict.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/path.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/pip.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/pydantic.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/read/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/read/read.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/read/read_excel.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/read/read_yaml.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/schema/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/schema/get_json_schema_for_type.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/spark.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/sqlglot.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/write/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/fabricks/utils/write/stream.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/format.sh +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/mkdocs.yml +0 -0
- {fabricks-3.0.5.2/fabricks/utils → fabricks-3.0.6/tests}/__init__.py +0 -0
- {fabricks-3.0.5.2/tests → fabricks-3.0.6/tests/integration}/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/_types.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job1/king/2022/01/01/0001/king_202201010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job1/king/2022/01/02/0001/king_202201020001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job1/king__deletelog/2022/02/01/0001/king_202201010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job1/prince/2022/01/01/0001/prince_202201010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job1/princess/2022/01/01/0001/princess_202201010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job1/queen/2022/01/01/0001/queen_202201010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job1/queen/2022/01/02/0001/queen_202201020001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job1/queen/2022/01/04/0001/queen_202201040001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job1/queen__deletelog/2022/01/03/0001/queen_202201030001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job1/queen__deletelog/2022/01/04/0001/queen_202201040001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job1/too_many_columns/2022/01/01/0001/sample_202201010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job10/king/2022/10/01/0001/king_202210010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job10/king/2022/10/02/0001/king_202210020001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job10/king/2022/10/02/0002/king_202210020002.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job10/king/2022/10/03/0001/king_202210030001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job10/queen__deletelog/2022/10/01/0001/queen_202210010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job11/king/2022/11/01/0001/king_202210010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job11/king__deletelog/2022/11/01/0001/king_202211010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job2/king/2022/02/05/0001/king_202202050001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job2/prince__deletelog/2022/02/01/0001/prince_202202010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job2/princess/2022/02/05/0001/princess_202202050001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job2/queen/2022/02/05/0001/queen_202202050001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job3/king/2022/03/01/001234/king_20220301001234.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job3/king__deletelog/2022/03/01/001234/king_20220301001234.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job3/queen/2022/03/05/001234/queen_20220305001234.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job3/queen/2022/03/06/0001/queen_202203060001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job4/king/2022/04/01/0001/king_202204010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job4/monarch/2022/04/01/0001/monarch_202204010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job4/queen/2022/04/01/0001/queen_202204010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job4/regent/2022/04/01/0001/regent_202204010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job5/king/2022/05/01/0001/king_202205010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job5/queen/2022/05/01/0001/queen_202205010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job6/king/2022/06/01/0001/king_202206010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job6/queen/2022/06/01/0001/queen_202206010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job7/king/2022/07/01/0001/king_202207010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job7/queen/2022/07/01/0001/queen_202207010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job8/king/2022/08/01/0001/king_202208010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job8/queen/2022/08/01/0001/queen_202208010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job9/king/2022/09/01/0001/king_202209010001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job9/king/2022/09/03/0001/king_202209030001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job9/king/2022/09/03/0002/king_202209030002.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job9/king/2022/09/08/0001/king_202209080001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job9/king__deletelog/2022/09/02/0001/king_202209020001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job9/king__deletelog/2022/09/04/0001/king_202209040001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job9/king__deletelog/2022/09/04/0005/king_202209040005.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job9/king__deletelog/2022/09/04/0009/king_202209040009.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job9/queen/2022/09/08/0001/queen_202209080001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/data/job9/queen__deletelog/2022/09/01/0001/queen_202209030001.json +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd1/job01.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd1/job02.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd1/job03.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd1/job04.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd1/job05.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd1/job06.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd1/job07.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd1/job08.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd1/job09.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd1/job10.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd1/job11.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd2/job01.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd2/job02.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd2/job03.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd2/job04.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd2/job05.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd2/job06.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd2/job07.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd2/job08.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd2/job09.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd2/job10.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/gold/scd2/job11.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd1/job01.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd1/job02.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd1/job03.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd1/job04.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd1/job05.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd1/job06.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd1/job07.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd1/job08.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd1/job09.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd1/job10.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd1/job11.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd2/job01.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd2/job02.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd2/job03.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd2/job04.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd2/job05.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd2/job06.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd2/job07.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd2/job08.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd2/job09.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd2/job10.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/expected/silver/scd2/job11.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/init.sh +0 -0
- {fabricks-3.0.5.2/tests/integration → fabricks-3.0.6/tests/integration/jobs}/__init__.py +0 -0
- {fabricks-3.0.5.2/tests/integration/jobs → fabricks-3.0.6/tests/integration/jobs/job1}/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job1/test_cdc.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job1/test_check.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job1/test_dependency.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job1/test_invoke.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job1/test_overwrite.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job1/test_semantic.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job1/test_silver.py +0 -0
- {fabricks-3.0.5.2/tests/integration/jobs/job1 → fabricks-3.0.6/tests/integration/jobs/job2}/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job2/test_gold.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job2/test_semantic.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job2/test_silver.py +0 -0
- {fabricks-3.0.5.2/tests/integration/jobs/job2 → fabricks-3.0.6/tests/integration/jobs/job3}/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job3/test_run.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job3/test_silver.py +0 -0
- {fabricks-3.0.5.2/tests/integration/jobs/job3 → fabricks-3.0.6/tests/integration/jobs/job4}/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job4/test_gold.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/jobs/job4/test_run.py +0 -0
- {fabricks-3.0.5.2/tests/integration/jobs/job4 → fabricks-3.0.6/tests/integration/jobs/job5}/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/.gitignore +0 -0
- {fabricks-3.0.5.2/tests/integration/jobs/job5 → fabricks-3.0.6/tests/integration/runtime}/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/bronze/_config.kings.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/bronze/_config.memory.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/bronze/_config.monarchs.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/bronze/_config.princes.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/bronze/_config.princesses.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/bronze/_config.queens.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/bronze/_config.regents.yml +0 -0
- {fabricks-3.0.5.2/tests/integration/runtime → fabricks-3.0.6/tests/integration/runtime/fabricks/extenders}/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/fabricks/extenders/add_country.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/fabricks/extenders/drop__cols.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/fabricks/extenders/force_reload.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/fabricks/extenders/monarch.py +0 -0
- {fabricks-3.0.5.2/tests/integration/runtime/fabricks/extenders → fabricks-3.0.6/tests/integration/runtime/fabricks/parsers}/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/fabricks/parsers/monarch.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/fabricks/requirements.txt +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/fabricks/schedules/schedule.yml +0 -0
- {fabricks-3.0.5.2/tests/integration/runtime/fabricks/parsers → fabricks-3.0.6/tests/integration/runtime/fabricks/udfs}/__init__.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/fabricks/udfs/addition.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/fabricks/udfs/identity.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/fabricks/udfs/key.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/fabricks/udfs/parse_phone_number.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/fabricks/views/monarch.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/check/_config.check.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/check/count_must_equal.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/check/duplicate_identity.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/check/duplicate_key.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/check/fail.pre_run.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/check/fail.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/check/max_rows.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/check/min_rows.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/check/skip.skip.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/check/skip.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/check/warning.post_run.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/check/warning.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/dim/_config.dim.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/dim/date.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/dim/identity.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/dim/overwrite.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/dim/time.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/fact/append.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/fact/deduplicate.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/fact/dependency_sql.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/fact/manual.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/fact/memory.sql +0 -0
- /fabricks-3.0.5.2/tests/integration/runtime/gold/gold/invoke/failed_pre_run.sql → /fabricks-3.0.6/tests/integration/runtime/gold/gold/fact/no_drop.sql +0 -0
- /fabricks-3.0.5.2/tests/integration/runtime/gold/gold/invoke/notebooks_failed_pre_run.sql → /fabricks-3.0.6/tests/integration/runtime/gold/gold/fact/optimize_vacuum.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/fact/option.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/fact/order_duplicate.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/fact/overwrite.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/fact/udf.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/invoke/_config.invoke.yml +0 -0
- /fabricks-3.0.5.2/tests/integration/runtime/gold/gold/invoke/post_run.sql → /fabricks-3.0.6/tests/integration/runtime/gold/gold/invoke/failed_pre_run.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/invoke/notebook.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/invoke/notebook_without_argument.ipynb +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/invoke/notebooks.py +0 -0
- /fabricks-3.0.5.2/tests/integration/runtime/gold/gold/invoke/timedout_pre_run.sql → /fabricks-3.0.6/tests/integration/runtime/gold/gold/invoke/notebooks_failed_pre_run.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/invoke/post_run/exe.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/invoke/pre_run/exe.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/invoke/pre_run/exe_2.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/invoke/timedout.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/scd1/complete.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/scd1/identity.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/scd1/last_timestamp.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/scd1/memory.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/scd1/update.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/scd2/_config.scd2.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/scd2/complete.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/scd2/correct_valid_from.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/scd2/last_timestamp.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/scd2/memory.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/scd2/update.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/type_widening/_config.type_widening.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/type_widening/merge.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/gold/type_widening/overwrite.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/transf/fact/_config.transf.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/transf/fact/memory.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/gold/transf/post_run.py +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/semantic/fact/_config.semantic.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/semantic/fact/job_option.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/semantic/fact/powerbi.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/semantic/fact/schema_drift.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/semantic/fact/step_option.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/semantic/fact/zstd.sql +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/silver/_config.kings_and_queens.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/silver/_config.memory.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/silver/_config.monarchs.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/silver/_config.princes.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/silver/_config.princesses.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/silver/_config.regents.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/uc/bronze/_config.kings.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/uc/bronze/_config.memory.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/uc/bronze/_config.monarchs.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/uc/bronze/_config.princes.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/uc/bronze/_config.princesses.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/uc/bronze/_config.queens.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/runtime/uc/bronze/_config.regents.yml +0 -0
- {fabricks-3.0.5.2 → fabricks-3.0.6}/tests/integration/utils.py +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fabricks
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.6
|
|
4
4
|
Author-email: BMS DWH Team <bi_support@bmsuisse.ch>
|
|
5
5
|
Requires-Python: <4,>=3.9
|
|
6
6
|
Requires-Dist: azure-data-tables<13,>=12.5.0
|
|
7
7
|
Requires-Dist: azure-identity>=1.10.0
|
|
8
8
|
Requires-Dist: azure-storage-blob>=12.14.1
|
|
9
9
|
Requires-Dist: azure-storage-queue<13,>=12.10.0
|
|
10
|
+
Requires-Dist: databricks-cli>=0.18.0
|
|
10
11
|
Requires-Dist: databricks-sdk>=0.20.0
|
|
11
12
|
Requires-Dist: importlib-metadata>=8.6.1
|
|
12
13
|
Requires-Dist: jinja2>=2.11.3
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
# Initialize Fabricks
|
|
1
|
+
# Initialize Fabricks
|
|
2
2
|
|
|
3
3
|
This helper explains how to initialize Fabricks on a Databricks cluster or local environment by:
|
|
4
4
|
|
|
5
5
|
- Installing the Fabricks library
|
|
6
6
|
- Pointing Fabricks to your runtime
|
|
7
|
-
- Running the armageddon script to bootstrap metadata and objects
|
|
7
|
+
- Running the ``armageddon`` script to bootstrap metadata and objects
|
|
8
8
|
|
|
9
9
|
## 1) Install Fabricks
|
|
10
10
|
|
|
11
11
|
You need the Fabricks package available on your cluster or local environment.
|
|
12
12
|
|
|
13
13
|
- Databricks cluster (recommended)
|
|
14
|
-
- Libraries → Install new → Python PyPI → fabricks (or install a wheel/artifact you build)
|
|
14
|
+
- Libraries → Install new → Python PyPI → `fabricks` (or install a wheel/artifact you build)
|
|
15
15
|
- Alternatively, attach a workspace library artifact built from this repository
|
|
16
16
|
|
|
17
17
|
- Local development (optional)
|
|
18
|
-
- pip install fabricks
|
|
19
|
-
- or from source (for development): pip install -e .[dev,test]
|
|
18
|
+
- `pip install fabricks`
|
|
19
|
+
- or from source (for development): `pip install -e .[dev,test]`
|
|
20
20
|
|
|
21
21
|
Python >=3.9,<4 is recommended; align with your Databricks LTS runtime.
|
|
22
22
|
|
|
23
23
|
## 2) Point Fabricks to your runtime
|
|
24
24
|
|
|
25
|
-
Fabricks discovers its runtime via either environment variables or [tool.fabricks] in your pyproject.toml
|
|
25
|
+
Fabricks discovers its runtime via either environment variables or `[tool.fabricks]` in your `pyproject.toml`. The core lookup logic is implemented in `fabricks/context/runtime.py`.
|
|
26
26
|
|
|
27
|
-
*Option A*: Configure via pyproject.toml (preferred for repo-managed projects):
|
|
27
|
+
*Option A*: Configure via `pyproject.toml` (preferred for repo-managed projects):
|
|
28
28
|
```toml
|
|
29
29
|
[tool.fabricks]
|
|
30
30
|
runtime = "path/to/your/runtime" # e.g., tests/integration/runtime or examples/runtime
|
|
31
31
|
notebooks = "fabricks/api/notebooks" # optional: helpers shipped with Fabricks
|
|
32
32
|
job_config_from_yaml = true # optional
|
|
33
|
-
loglevel = "info" # optional: DEBUG
|
|
33
|
+
loglevel = "info" # optional: `DEBUG`|`INFO`|`WARNING`|`ERROR`|`CRITICAL`
|
|
34
34
|
debugmode = false # optional
|
|
35
35
|
config = "path/to/your/runtime/fabricks/conf.fabricks.yml" # main runtime YAML
|
|
36
36
|
```
|
|
@@ -42,16 +42,12 @@ config = "path/to/your/runtime/fabricks/conf.fabricks.yml" # main runtime YAML
|
|
|
42
42
|
# FABRICKS_CONFIG: full path to your main conf.fabricks.yml (if not set, Fabricks tries to infer a conf.uc.<orgId>.yml)
|
|
43
43
|
# FABRICKS_NOTEBOOKS: optional helper notebook path
|
|
44
44
|
# FABRICKS_IS_JOB_CONFIG_FROM_YAML, FABRICKS_LOGLEVEL, FABRICKS_IS_DEBUGMODE: optional toggles
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Example on Databricks (Cluster → Configuration → Advanced options → Environment variables):
|
|
45
|
+
```Example\non Databricks (Cluster → Configuration → Advanced options → Environment variables):
|
|
48
46
|
```
|
|
49
47
|
FABRICKS_RUNTIME=/Workspace/Repos/your/repo/examples/runtime
|
|
50
48
|
FABRICKS_CONFIG=/Workspace/Repos/your/repo/examples/runtime/fabricks/conf.fabricks.yml
|
|
51
49
|
FABRICKS_LOGLEVEL=INFO
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
You can also set env vars in a notebook before importing Fabricks:
|
|
50
|
+
```You\ncan also set env vars in a notebook before importing Fabricks:
|
|
55
51
|
```python
|
|
56
52
|
import os
|
|
57
53
|
os.environ["FABRICKS_RUNTIME"] = "/Workspace/Repos/your/repo/examples/runtime"
|
|
@@ -60,20 +56,20 @@ os.environ["FABRICKS_CONFIG"] = "/Workspace/Repos/your/repo/examples/runtime/fab
|
|
|
60
56
|
# os.environ["FABRICKS_LOGLEVEL"] = "INFO"
|
|
61
57
|
```
|
|
62
58
|
|
|
63
|
-
## 3) Run armageddon
|
|
59
|
+
## 3) Run ``armageddon``
|
|
64
60
|
|
|
65
|
-
armageddon performs a one-
|
|
61
|
+
``armageddon`` performs a one-time setup based on your runtime configuration (e.g., preparing databases/metadata, registering views).
|
|
66
62
|
|
|
67
63
|
Import and call:
|
|
68
64
|
```python
|
|
69
65
|
# Databricks or local
|
|
70
|
-
from fabricks.core.scripts
|
|
66
|
+
from fabricks.core.scripts.`armageddon` import `armageddon`
|
|
71
67
|
|
|
72
|
-
# You may pass one or more steps (bronze
|
|
68
|
+
# You may pass one or more steps (`bronze`, `silver`, `gold`, `semantic`, `transf`, ...)
|
|
73
69
|
# Examples:
|
|
74
|
-
armageddon(steps="gold") # single step
|
|
75
|
-
armageddon(steps=["bronze", "silver", "gold"]) # multiple steps
|
|
76
|
-
armageddon(steps=None) # default behavior, follow runtime config
|
|
70
|
+
`armageddon`(steps="gold") # single step
|
|
71
|
+
`armageddon`(steps=["bronze", "silver", "gold"]) # multiple steps
|
|
72
|
+
`armageddon`(steps=None) # default behavior, follow runtime config
|
|
77
73
|
```
|
|
78
74
|
|
|
79
75
|
## Example: Databricks Notebook: Initialize
|
|
@@ -87,30 +83,29 @@ Create a new notebook (Python) named initialize and include:
|
|
|
87
83
|
# os.environ["FABRICKS_CONFIG"] = "/Workspace/Repos/your/repo/examples/runtime/fabricks/conf.fabricks.yml"
|
|
88
84
|
# os.environ["FABRICKS_LOGLEVEL"] = "INFO"
|
|
89
85
|
|
|
90
|
-
from fabricks.core.scripts
|
|
86
|
+
from fabricks.core.scripts.`armageddon` import `armageddon`
|
|
91
87
|
# Run for all default steps from your runtime config:
|
|
92
|
-
armageddon()
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
Attach the Fabricks library to the cluster before running the notebook.
|
|
88
|
+
`armageddon`()
|
|
89
|
+
```Attach\nthe Fabricks library to the cluster before running the notebook.
|
|
96
90
|
|
|
97
91
|
## Troubleshooting
|
|
98
92
|
|
|
99
93
|
- Missing env/config:
|
|
100
|
-
- ValueError
|
|
101
|
-
- Fix by setting FABRICKS_RUNTIME or adding [tool.fabricks] to pyproject.toml
|
|
94
|
+
- `ValueError`: Must have at least a `pyproject.toml` or set `FABRICKS_RUNTIME`
|
|
95
|
+
- Fix by setting `FABRICKS_RUNTIME` or adding `[tool.fabricks]` to `pyproject.toml`
|
|
102
96
|
|
|
103
97
|
- Unity Catalog:
|
|
104
|
-
- Ensure options.unity_catalog is true and options.catalog is set in conf.fabricks.yml
|
|
98
|
+
- Ensure `options.unity_catalog` is true and `options.catalog` is set in `conf.fabricks.yml`
|
|
105
99
|
|
|
106
100
|
- Paths and storage:
|
|
107
|
-
- conf.fabricks.yml must define path_options.storage and per-step runtime/storage paths; Fabricks uses these to resolve PATHS_RUNTIME and PATHS_STORAGE
|
|
101
|
+
- `conf.fabricks.yml` must define `path_options.storage` and per-step runtime/storage paths; Fabricks uses these to resolve `PATHS_RUNTIME` and `PATHS_STORAGE`
|
|
108
102
|
|
|
109
103
|
- Logging:
|
|
110
|
-
- Set FABRICKS_LOGLEVEL or tool.fabricks.loglevel to control verbosity
|
|
104
|
+
- Set `FABRICKS_LOGLEVEL` or `tool.fabricks.loglevel` to control verbosity
|
|
111
105
|
|
|
112
106
|
## Related topics
|
|
113
107
|
|
|
114
|
-
- Runtime configuration:
|
|
115
|
-
- Step Helper:
|
|
116
|
-
- Job Helper:
|
|
108
|
+
- Runtime configuration: `../helpers/runtime.md`
|
|
109
|
+
- Step Helper: `./step.md`
|
|
110
|
+
- Job Helper: `./job.md`
|
|
111
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Job Helper
|
|
1
|
+
# Job Helper
|
|
2
2
|
|
|
3
3
|
This helper describes a widget-driven approach to manage a Fabricks job.
|
|
4
4
|
|
|
@@ -24,7 +24,7 @@ j.run()
|
|
|
24
24
|
# Other common operations:
|
|
25
25
|
j.update_schema()
|
|
26
26
|
j.overwrite_schema()
|
|
27
|
-
j
|
|
27
|
+
j.`register`()
|
|
28
28
|
|
|
29
29
|
j.create()
|
|
30
30
|
|
|
@@ -59,17 +59,17 @@ dbutils.widgets.multiselect(
|
|
|
59
59
|
"run",
|
|
60
60
|
[
|
|
61
61
|
"drop", -- Drop the job
|
|
62
|
-
"register", -- Register the table
|
|
62
|
+
"`register`", -- Register the table
|
|
63
63
|
"create", -- Create the job
|
|
64
64
|
"truncate", -- Truncate the table
|
|
65
65
|
"run", -- Run the job
|
|
66
66
|
"for-each-run", -- Run the job (excluding the invoker(s) and the check(s))
|
|
67
67
|
"overwrite", -- Overwrite the schema and run the job
|
|
68
|
-
"pre-run
|
|
68
|
+
"pre-run-`invoke`", -- Run the pre-run invoker(s)
|
|
69
69
|
"pre-run-check", -- Run the pre-run check(s)
|
|
70
|
-
"post-run
|
|
70
|
+
"post-run-`invoke`", -- Run the post-run invoker(s)
|
|
71
71
|
"post-run-check", -- Run the post-run check(s)
|
|
72
|
-
"update
|
|
72
|
+
"`update`-schema", -- Update the schema
|
|
73
73
|
"overwrite-schema", -- Overwrite the schema
|
|
74
74
|
],
|
|
75
75
|
label="5 - Action(s)"
|
|
@@ -125,10 +125,7 @@ from fabricks.core.jobs import Gold # noqa: E402
|
|
|
125
125
|
actions = dbutils.widgets.get("actions").split(",")
|
|
126
126
|
actions = [a.strip() for a in actions]
|
|
127
127
|
|
|
128
|
-
# COMMAND
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
def do(job: str) -> None:
|
|
128
|
+
# COMMAND ----------`n`ndef do(job: str) -> None:
|
|
132
129
|
j = get_job(job=job)
|
|
133
130
|
todos: dict[str, Callable] = {}
|
|
134
131
|
|
|
@@ -139,11 +136,11 @@ def do(job: str) -> None:
|
|
|
139
136
|
if "drop" in actions:
|
|
140
137
|
todos["drop"] = j.drop
|
|
141
138
|
|
|
142
|
-
if "register" in actions:
|
|
143
|
-
todos["register"] = j
|
|
139
|
+
if "`register`" in actions:
|
|
140
|
+
todos["`register`"] = j.`register`
|
|
144
141
|
|
|
145
|
-
if "pre-run
|
|
146
|
-
todos["pre-run
|
|
142
|
+
if "pre-run-`invoke`" in actions:
|
|
143
|
+
todos["pre-run-`invoke`"] = j.invoke_pre_run
|
|
147
144
|
|
|
148
145
|
if "pre-run-check" in actions:
|
|
149
146
|
todos["pre-run-check"] = j.check_pre_run
|
|
@@ -151,8 +148,8 @@ def do(job: str) -> None:
|
|
|
151
148
|
if "create" in actions:
|
|
152
149
|
todos["create"] = j.create
|
|
153
150
|
|
|
154
|
-
if "update
|
|
155
|
-
todos["update
|
|
151
|
+
if "`update`-schema" in actions:
|
|
152
|
+
todos["`update`-schema"] = j.update_schema
|
|
156
153
|
|
|
157
154
|
if "overwrite-schema" in actions:
|
|
158
155
|
todos["overwrite-schema"] = j.overwrite_schema
|
|
@@ -172,8 +169,8 @@ def do(job: str) -> None:
|
|
|
172
169
|
if "post-run-check" in actions:
|
|
173
170
|
todos["post-run-check"] = j.check_post_run
|
|
174
171
|
|
|
175
|
-
if "post-run
|
|
176
|
-
todos["post-run
|
|
172
|
+
if "post-run-`invoke`" in actions:
|
|
173
|
+
todos["post-run-`invoke`"] = j.invoke_post_run
|
|
177
174
|
|
|
178
175
|
for key, func in todos.items():
|
|
179
176
|
func()
|
|
@@ -185,7 +182,7 @@ jobs = [s.strip() for s in dbutils.widgets.get("jobs").split(",")]
|
|
|
185
182
|
jobs = [[j.strip() for j in job.split("//")] if "//" in job else job for job in jobs]
|
|
186
183
|
|
|
187
184
|
for job in jobs:
|
|
188
|
-
DEFAULT_LOGGER.warning(", ".join(actions), extra={"
|
|
185
|
+
DEFAULT_LOGGER.warning(", ".join(actions), extra={"label": job})
|
|
189
186
|
|
|
190
187
|
# COMMAND ----------
|
|
191
188
|
|
|
@@ -203,8 +200,9 @@ dbutils.notebook.exit("exit (0)") # type: ignore
|
|
|
203
200
|
|
|
204
201
|
## Related topics
|
|
205
202
|
|
|
206
|
-
- Steps: [Bronze](../steps/bronze.md)
|
|
203
|
+
- Steps: [Bronze](../steps/bronze.md) | [Silver](../steps/silver.md) | [Gold](../steps/gold.md)
|
|
207
204
|
- Runtime overview and sample runtime: [Runtime](../helpers/runtime.md)
|
|
208
205
|
- Checks & Data Quality: [Checks and Data Quality](../reference/checks-data-quality.md)
|
|
209
206
|
- Table options and storage layout: [Table Options](../reference/table-options.md)
|
|
210
207
|
- Extenders, UDFs & Views: [Extenders, UDFs & Views](../reference/extenders-udfs-parsers.md)
|
|
208
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Runtime Configuration
|
|
1
|
+
# Runtime Configuration
|
|
2
2
|
|
|
3
3
|
The Fabricks runtime is the folder where your Lakehouse project lives (configs, SQL, jobs, UDFs, extenders, views). This page explains how to point Fabricks to your runtime, how to structure it, and how to configure schedules and step paths.
|
|
4
4
|
|
|
@@ -19,7 +19,7 @@ This quick path gets a working runtime running end-to-end using the sample inclu
|
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
2) Inspect the sample runtime
|
|
22
|
-
- Directory: `examples/runtime` (see structure in
|
|
22
|
+
- Directory: `examples/runtime` (see structure in “Sample runtime†below).
|
|
23
23
|
- It contains a minimal schedule and a Gold `hello_world.sql` full-refresh job.
|
|
24
24
|
|
|
25
25
|
3) Run a schedule
|
|
@@ -29,11 +29,11 @@ This quick path gets a working runtime running end-to-end using the sample inclu
|
|
|
29
29
|
Expected outputs
|
|
30
30
|
- Tables/views:
|
|
31
31
|
- A Gold table for the `hello_world` job (full refresh).
|
|
32
|
-
- If using memory mode jobs, temporary views are registered for downstream steps.
|
|
32
|
+
- If using ``memory`` mode jobs, temporary views are registered for downstream steps.
|
|
33
33
|
- Logs:
|
|
34
34
|
- A completion line indicating job success; warnings/errors surfaced from checks/contracts if configured.
|
|
35
35
|
- Data quality (if enabled):
|
|
36
|
-
- Built-in bound violations or contract `__action = 'fail'` causes a non
|
|
36
|
+
- Built-in bound violations or contract `__action = 'fail'` causes a nonâ€'zero exit and, for physical tables, an automatic rollback to the last successful version.
|
|
37
37
|
- Contract `__action = 'warning'` logs the message and the run continues.
|
|
38
38
|
|
|
39
39
|
Tip: If your environment uses different storage locations or workspace setup, adjust `path_options` and `spark_options` in the runtime YAML before running.
|
|
@@ -99,9 +99,7 @@ gold:
|
|
|
99
99
|
path_options:
|
|
100
100
|
runtime: src/steps/gold
|
|
101
101
|
storage: abfss://gold@youraccount.blob.core.windows.net
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
Key concepts:
|
|
102
|
+
```Key\nconcepts:
|
|
105
103
|
- options: global project config (secrets, timeouts, worker count)
|
|
106
104
|
- path_options: shared storage/config paths
|
|
107
105
|
- spark_options: default Spark SQL options applied for jobs
|
|
@@ -136,9 +134,7 @@ Schedules group jobs and define step order. Place schedules in your runtime (com
|
|
|
136
134
|
variables:
|
|
137
135
|
var1: 1
|
|
138
136
|
var2: 2
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
Pass the schedule name when running the shipped notebooks or the Databricks bundle job.
|
|
137
|
+
```Pass\nthe schedule name when running the shipped notebooks or the Databricks bundle job.
|
|
142
138
|
|
|
143
139
|
## Typical runtime structure
|
|
144
140
|
|
|
@@ -191,9 +187,7 @@ examples/runtime/
|
|
|
191
187
|
hello_world.sql
|
|
192
188
|
semantic/
|
|
193
189
|
_config.example.yml
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
Key files and purpose
|
|
190
|
+
```Key\nfiles and purpose
|
|
197
191
|
- `fabricks/conf.fabricks.yml`: project-level configuration (secret scope, timeouts, workers, storage paths, schedules path)
|
|
198
192
|
- `fabricks/schedules/schedule.yml`: minimal schedule to run the gold step
|
|
199
193
|
- `gold/gold/_config.example.yml`: defines a simple Gold job
|
|
@@ -207,7 +201,8 @@ How to use this sample
|
|
|
207
201
|
|
|
208
202
|
## Related topics
|
|
209
203
|
|
|
210
|
-
- Steps: [Bronze](../steps/bronze.md)
|
|
204
|
+
- Steps: [Bronze](../steps/bronze.md) | [Silver](../steps/silver.md) | [Gold](../steps/gold.md)
|
|
211
205
|
- Data quality checks and contracts: [Checks & Data Quality](../reference/checks-data-quality.md)
|
|
212
206
|
- Table properties and physical layout: [Table Options](../reference/table-options.md)
|
|
213
207
|
- Custom logic integration: [Extenders, UDFs & Views](../reference/extenders-udfs-parsers.md)
|
|
208
|
+
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
# Schedules
|
|
1
|
+
# Schedules
|
|
2
2
|
|
|
3
3
|
Views provide a simple, declarative way to define a set of jobs to run in a schedule. Instead of listing jobs manually, you create a SQL view that filters the canonical `fabricks.jobs` table, and then reference that view by name from a schedule.
|
|
4
4
|
|
|
5
5
|
Typical use cases:
|
|
6
6
|
- Run all jobs for a given domain/topic (e.g., monarch)
|
|
7
7
|
- Run only certain steps (e.g., all Gold jobs)
|
|
8
|
-
- Run a curated subset of jobs for ad
|
|
8
|
+
- Run a curated subset of jobs for adâ€'hoc backfills or smoke tests
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
## Types of views in Fabricks
|
|
13
13
|
|
|
14
|
-
- Data views (user
|
|
14
|
+
- Data views (userâ€'authored):
|
|
15
15
|
- You place `.sql` files under your runtime `views` path (see below).
|
|
16
16
|
- Each file defines one SQL view created under the `fabricks` schema.
|
|
17
17
|
- These are typically simple filters over `fabricks.jobs`.
|
|
18
18
|
|
|
19
|
-
- Schedule views (framework
|
|
19
|
+
- Schedule views (frameworkâ€'generated):
|
|
20
20
|
- For each `schedule` defined in your runtime YAML, Fabricks can generate a companion view named `fabricks.<schedule_name>_schedule`.
|
|
21
|
-
- A schedule view selects `j.*` from `fabricks.jobs` and applies optional filters from the schedule
|
|
21
|
+
- A schedule view selects `j.*` from `fabricks.jobs` and applies optional filters from the schedule’s options (`view`, `steps`, `tag`), excluding manual jobs.
|
|
22
22
|
|
|
23
23
|
Both kinds of views are useful: data views define job subsets; schedule views expose the final, resolved set for each schedule.
|
|
24
24
|
|
|
@@ -30,7 +30,7 @@ Both kinds of views are useful: data views define job subsets; schedule views ex
|
|
|
30
30
|
- Data views: Your SQL selects a subset from `fabricks.jobs` (recommended: `select *`).
|
|
31
31
|
- Schedules:
|
|
32
32
|
- In `schedule.yml`, you can set `options.view: <data_view_name>`.
|
|
33
|
-
- Fabricks resolves the schedule
|
|
33
|
+
- Fabricks resolves the schedule’s membership via the data view (and optional `steps` / `tag` filters).
|
|
34
34
|
- Fabricks can also materialize a schedule view `fabricks.<schedule_name>_schedule` for inspection and tooling.
|
|
35
35
|
|
|
36
36
|
---
|
|
@@ -59,9 +59,7 @@ Create a file `monarch.sql` in your runtime `views` directory:
|
|
|
59
59
|
select *
|
|
60
60
|
from fabricks.jobs j
|
|
61
61
|
where j.topic = 'monarch'
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
This will create a view called `fabricks.monarch`. You can then reference this view in a schedule.
|
|
62
|
+
```This\nwill create a view called `fabricks.monarch`. You can then reference this view in a schedule.
|
|
65
63
|
|
|
66
64
|
---
|
|
67
65
|
|
|
@@ -79,7 +77,7 @@ This will create a view called `fabricks.monarch`. You can then reference this v
|
|
|
79
77
|
|
|
80
78
|
Behavior:
|
|
81
79
|
- Fabricks loads all jobs returned by `fabricks.monarch` and further filters by `steps` and `tag` if provided.
|
|
82
|
-
- Schedule
|
|
80
|
+
- Scheduleâ€'level options like `variables`, `timeouts`, etc., still apply to execution.
|
|
83
81
|
- In most cases the view alone defines the job set; `steps`/`tag` refine it.
|
|
84
82
|
|
|
85
83
|
---
|
|
@@ -141,7 +139,7 @@ You can (re)create both data views and schedule views programmatically.
|
|
|
141
139
|
```
|
|
142
140
|
|
|
143
141
|
- Initialization path:
|
|
144
|
-
- The bootstrap script (
|
|
142
|
+
- The bootstrap script (“armageddonâ€) calls both data view and schedule view builders so your environment is in sync with runtime configs and SQL view files.
|
|
145
143
|
|
|
146
144
|
---
|
|
147
145
|
|
|
@@ -152,24 +150,18 @@ Filter by step:
|
|
|
152
150
|
select *
|
|
153
151
|
from fabricks.jobs j
|
|
154
152
|
where j.step = 'gold'
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
Filter by a set of topics:
|
|
153
|
+
```Filter\nby a set of topics:
|
|
158
154
|
```sql title:core_topics.sql
|
|
159
155
|
select *
|
|
160
156
|
from fabricks.jobs j
|
|
161
157
|
where j.topic in ('sales', 'finance', 'marketing')
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
Filter by both step and topic pattern:
|
|
158
|
+
```Filter\nby both step and topic pattern:
|
|
165
159
|
```sql title:gold_sales_like.sql
|
|
166
160
|
select *
|
|
167
161
|
from fabricks.jobs j
|
|
168
162
|
where j.step = 'gold'
|
|
169
163
|
and j.topic like 'sales_%'
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
Curate explicit jobs:
|
|
164
|
+
```Curate\nexplicit jobs:
|
|
173
165
|
```sql title:curated_selection.sql
|
|
174
166
|
select *
|
|
175
167
|
from fabricks.jobs j
|
|
@@ -186,7 +178,7 @@ Tip:
|
|
|
186
178
|
|
|
187
179
|
- Keep view logic simple: use filters, avoid heavy joins or transformations.
|
|
188
180
|
- Align views with business domains or execution scopes (by step, topic family, tags).
|
|
189
|
-
- Use explicit OR lists for one
|
|
181
|
+
- Use explicit OR lists for oneâ€'off backfills to keep intent clear and auditable.
|
|
190
182
|
- Favor stable view names; schedules reference the view name.
|
|
191
183
|
|
|
192
184
|
## Related topics
|
|
@@ -196,3 +188,4 @@ Tip:
|
|
|
196
188
|
- Steps overview (Bronze/Silver/Gold): ../steps/gold.md and siblings
|
|
197
189
|
- Data quality checks: ./checks-data-quality.md
|
|
198
190
|
- Table options and storage layout: ./table-options.md
|
|
191
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Step Helper (Databricks Notebook)
|
|
1
|
+
# Step Helper (Databricks Notebook)
|
|
2
2
|
|
|
3
3
|
This helper describes a widget-driven approach in a Databricks notebook to manage a Fabricks step (bronze, silver, gold).
|
|
4
4
|
|
|
@@ -28,8 +28,7 @@ s.update_dependencies(progress_bar=False)
|
|
|
28
28
|
|
|
29
29
|
## Helper Notebook
|
|
30
30
|
|
|
31
|
-
```
|
|
32
|
-
# Databricks notebook source
|
|
31
|
+
```python\n# Databricks notebook source
|
|
33
32
|
import os
|
|
34
33
|
from multiprocessing import Pool
|
|
35
34
|
from typing import Callable, List
|
|
@@ -41,15 +40,15 @@ from databricks.sdk.runtime import dbutils, spark
|
|
|
41
40
|
dbutils.widgets.text("steps", "---", label="6 - Step(s)")
|
|
42
41
|
dbutils.widgets.multiselect(
|
|
43
42
|
"actions",
|
|
44
|
-
"update
|
|
43
|
+
"``update``-configurations",
|
|
45
44
|
[
|
|
46
|
-
"update
|
|
45
|
+
"``update``-configurations", -- Update job configurations
|
|
47
46
|
"add-missing-jobs", -- Create any missing jobs
|
|
48
|
-
"update
|
|
49
|
-
"update
|
|
50
|
-
"update
|
|
51
|
-
"update
|
|
52
|
-
"update" -- Update the step
|
|
47
|
+
"``update``-dependencies", -- Update job dependencies
|
|
48
|
+
"``update``-lists", -- Update lists of jobs/tables/views
|
|
49
|
+
"``update``-tables-list", -- Update the list of tables
|
|
50
|
+
"``update``-views-list", -- Update the list of views
|
|
51
|
+
"``update``" -- Update the step
|
|
53
52
|
],
|
|
54
53
|
label="5 - Action(s)"
|
|
55
54
|
)
|
|
@@ -103,30 +102,27 @@ from fabricks.api.log import DEFAULT_LOGGER # noqa: E402
|
|
|
103
102
|
actions = dbutils.widgets.get("actions").split(",")
|
|
104
103
|
actions = [a.strip() for a in actions]
|
|
105
104
|
|
|
106
|
-
# COMMAND
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
def do(step: str) -> None:
|
|
105
|
+
# COMMAND ----------`n`ndef do(step: str) -> None:
|
|
110
106
|
s = get_step(step=step)
|
|
111
107
|
todos: dict[str, Callable] = {}
|
|
112
108
|
|
|
113
|
-
if "update
|
|
114
|
-
todos["update
|
|
109
|
+
if "``update``-configurations" in actions:
|
|
110
|
+
todos["``update``-configurations"] = s.update_jobs
|
|
115
111
|
|
|
116
112
|
if "add-missing-jobs" in actions:
|
|
117
113
|
todos["add-missing-jobs"] = s.create_jobs
|
|
118
114
|
|
|
119
|
-
if "update
|
|
120
|
-
todos["update
|
|
115
|
+
if "``update``-views-list" in actions or "``update``-lists" in actions:
|
|
116
|
+
todos["``update``-views-list"] = s.update_views
|
|
121
117
|
|
|
122
|
-
if "update
|
|
123
|
-
todos["update
|
|
118
|
+
if "``update``-tables-list" in actions or "``update``-lists" in actions:
|
|
119
|
+
todos["``update``-tables-list"] = s.update_tables
|
|
124
120
|
|
|
125
|
-
if "update" in actions and len(actions) == 1:
|
|
126
|
-
todos["update"] = s
|
|
121
|
+
if "``update``" in actions and len(actions) == 1:
|
|
122
|
+
todos["``update``"] = s.``update``
|
|
127
123
|
|
|
128
|
-
if "update
|
|
129
|
-
todos["update
|
|
124
|
+
if "``update``-dependencies" in actions:
|
|
125
|
+
todos["``update``-dependencies"] = s.update_dependencies
|
|
130
126
|
|
|
131
127
|
for key, func in todos.items():
|
|
132
128
|
func()
|
|
@@ -138,7 +134,7 @@ steps = [s.strip() for s in dbutils.widgets.get("steps").split(",")]
|
|
|
138
134
|
steps = [[j.strip() for j in job.split("//")] if "//" in job else job for job in steps]
|
|
139
135
|
|
|
140
136
|
for step in steps:
|
|
141
|
-
DEFAULT_LOGGER.warning(", ".join(actions), extra={"
|
|
137
|
+
DEFAULT_LOGGER.warning(", ".join(actions), extra={"label": step})
|
|
142
138
|
|
|
143
139
|
# COMMAND ----------
|
|
144
140
|
|
|
@@ -158,8 +154,9 @@ dbutils.notebook.exit("exit (0)") # type: ignore
|
|
|
158
154
|
|
|
159
155
|
## Related topics
|
|
160
156
|
|
|
161
|
-
- Steps: [Bronze](../steps/bronze.md)
|
|
157
|
+
- Steps: [Bronze](../steps/bronze.md) | [Silver](../steps/silver.md) | [Gold](../steps/gold.md)
|
|
162
158
|
- Runtime overview and sample runtime: [Runtime](../helpers/runtime.md)
|
|
163
159
|
- Checks & Data Quality: [Checks and Data Quality](../reference/checks-data-quality.md)
|
|
164
160
|
- Table options and storage layout: [Table Options](../reference/table-options.md)
|
|
165
161
|
- Extenders, UDFs & Views: [Extenders, UDFs & Views](../reference/extenders-udfs-parsers.md)
|
|
162
|
+
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Fabricks User Guide
|
|
2
|
+
|
|
3
|
+
Fabricks is a pragmatic framework to build Databricks Lakehouse pipelines using YAML for orchestration and SQL for transformations.
|
|
4
|
+
It standardizes jobs, steps, schedules, CDC, and checks while keeping development SQL-first.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Steps Overview
|
|
9
|
+
|
|
10
|
+
Fabricks organizes your Lakehouse into clear layers. Each step has a dedicated reference with modes, options, and examples.
|
|
11
|
+
|
|
12
|
+
### Bronze
|
|
13
|
+
|
|
14
|
+
Raw ingestion from source systems (files, streams, existing tables). Keep logic light; land data for downstream processing.
|
|
15
|
+
|
|
16
|
+
- Typical modes: ``memory``, ``append``, ``register``
|
|
17
|
+
- Focus: lightweight parsing/landing; no business logic
|
|
18
|
+
- Output: raw tables or temporary views
|
|
19
|
+
|
|
20
|
+
Read the full reference: [Bronze Step](steps/bronze.md)
|
|
21
|
+
|
|
22
|
+
### Silver
|
|
23
|
+
|
|
24
|
+
Standardize, clean, and enrich data; optionally apply CDC (SCD1/SCD2). Produces conformed datasets and convenience views.
|
|
25
|
+
|
|
26
|
+
- Typical modes: ``memory``, ``append``, ``latest``, ``update``, ``combine``
|
|
27
|
+
- CDC: ``nocdc``, ``scd1``, ``scd2`` with built-in helpers and views
|
|
28
|
+
- Output: conformed tables and curated views
|
|
29
|
+
|
|
30
|
+
Read the full reference: [Silver Step](steps/silver.md)
|
|
31
|
+
|
|
32
|
+
### Gold
|
|
33
|
+
|
|
34
|
+
Curated business models for analytics and reporting; dimensional or mart-style outputs. Can also `invoke` notebooks when needed.
|
|
35
|
+
|
|
36
|
+
- Typical modes: ``memory``, ``append``, ``complete``, ``update``, ``invoke`` (notebooks)
|
|
37
|
+
- Focus: dimensional models, marts, KPI-ready data
|
|
38
|
+
- Output: business-consumption tables and views
|
|
39
|
+
|
|
40
|
+
Read the full reference: [Gold Step](steps/gold.md)
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Where to Configure
|
|
45
|
+
|
|
46
|
+
- Project configuration, schedules, and runtime structure: [Runtime](helpers/runtime.md)
|
|
47
|
+
- Data quality and rollback behavior: [Checks & Data Quality](reference/checks-data-quality.md)
|
|
48
|
+
- Table properties, clustering, and layout: [Table Options](reference/table-options.md)
|
|
49
|
+
- Custom logic and reusable SQL assets: [Extenders, UDFs & Parsers](reference/extenders-udfs-parsers.md)
|
|
50
|
+
- Change Data Capture (CDC): [CDC](reference/cdc.md)
|
|
51
|
+
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# Layers (Bronze
|
|
1
|
+
# Layers (Bronze â†' Silver â†' Gold)
|
|
2
2
|
|
|
3
3
|
Fabricks organizes pipelines into layered steps to keep responsibilities clear and composable. Use this page to decide where logic belongs and how to structure data flow.
|
|
4
4
|
|
|
5
5
|
Layer summary
|
|
6
6
|
|
|
7
|
-
- Bronze: Land raw data
|
|
7
|
+
- Bronze: Land raw data “as-is†from files/streams/tables. Keep it light.
|
|
8
8
|
- Silver: Standardize, clean, enrich; optionally apply CDC (SCD1/SCD2). Provide conformed datasets and convenience views.
|
|
9
9
|
- Gold: Build consumption-ready models (facts/dims/marts), possibly with CDC merges or full refreshes.
|
|
10
10
|
|
|
@@ -13,23 +13,23 @@ When to use each layer
|
|
|
13
13
|
- Bronze
|
|
14
14
|
- Ingest from external sources with minimal logic
|
|
15
15
|
- Keep provenance and raw fidelity
|
|
16
|
-
- Typical modes: memory
|
|
16
|
+
- Typical modes: ``memory``, ``append``, ``register``
|
|
17
17
|
|
|
18
18
|
- Silver
|
|
19
19
|
- Standardize schemas, apply business keys, deduplicate
|
|
20
|
-
- Apply CDC: scd1
|
|
21
|
-
- Typical modes: memory
|
|
20
|
+
- Apply CDC: ``scd1``/``scd2`` with convenience views (e.g., table__current)
|
|
21
|
+
- Typical modes: ``memory``, ``append``, ``latest``, ``update``, ``combine``
|
|
22
22
|
|
|
23
23
|
- Gold
|
|
24
24
|
- Aggregate, reshape, and model data for analytics/reporting
|
|
25
25
|
- Implement SCD patterns at the desired consumption grain
|
|
26
|
-
- Typical modes: memory
|
|
26
|
+
- Typical modes: ``memory``, ``append``, ``complete``, ``update``, ``invoke`` (notebook)
|
|
27
27
|
|
|
28
28
|
Data flow
|
|
29
29
|
|
|
30
|
-
- Bronze: raw sources
|
|
31
|
-
- Silver: bronze tables/views
|
|
32
|
-
- Gold: silver conformed outputs
|
|
30
|
+
- Bronze: raw sources â†' (light parsing, optional filters/calculated columns) â†' raw tables/views
|
|
31
|
+
- Silver: bronze tables/views â†' (standardize/enrich, optional CDC) â†' conformed tables + {table}__current view
|
|
32
|
+
- Gold: silver conformed outputs â†' (marts/dim/fact, SCD merges or ``complete`` refresh) â†' business-consumption tables/views
|
|
33
33
|
|
|
34
34
|
Quality and governance
|
|
35
35
|
|
|
@@ -44,3 +44,4 @@ Related
|
|
|
44
44
|
- CDC reference: ../reference/cdc.md
|
|
45
45
|
- Data quality checks: ../reference/checks-data-quality.md
|
|
46
46
|
- Table options: ../reference/table-options.md
|
|
47
|
+
|