fabricks 3.0.2__tar.gz → 3.0.4__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.2 → fabricks-3.0.4}/PKG-INFO +1 -1
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/base/configurator.py +4 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/base/merger.py +1 -1
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/base/processor.py +11 -6
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/base/_types.py +13 -13
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/base/configurator.py +16 -13
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/bronze.py +25 -12
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/metastore/table.py +5 -1
- {fabricks-3.0.2 → fabricks-3.0.4}/pyproject.toml +1 -1
- {fabricks-3.0.2 → fabricks-3.0.4}/uv.lock +1 -1
- {fabricks-3.0.2 → fabricks-3.0.4}/.gitignore +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/.gitkeep +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/.python-version +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/README.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/databricks.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/docs/helpers/init.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/docs/helpers/job.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/docs/helpers/runtime.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/docs/helpers/schedule.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/docs/helpers/step.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/docs/index.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/docs/introduction/layers.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/docs/introduction/overview.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/docs/reference/cdc.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/docs/reference/checks-data-quality.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/docs/reference/extenders-udfs-parsers.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/docs/reference/table-options.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/docs/steps/BRONZE.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/docs/steps/GOLD.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/docs/steps/SILVER.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/cdc/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/cdc/nocdc.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/cdc/scd1.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/cdc/scd2.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/context.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/core.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/exceptions.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/extenders.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/job_schema.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/log.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/metastore/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/metastore/database.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/metastore/table.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/metastore/view.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/notebooks/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/notebooks/add_fabricks.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/notebooks/cluster.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/notebooks/initialize.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/notebooks/optimize.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/notebooks/process.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/notebooks/run.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/notebooks/terminate.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/notebooks/vacuum.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/parsers.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/schedules.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/udfs.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/utils.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/api/views.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/base/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/base/_types.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/base/cdc.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/base/generator.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/cdc.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/nocdc.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/scd.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/scd1.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/scd2.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/filter/final.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/filter/latest.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/filter/update.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/filter.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/merge/scd1.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/merge/scd2.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/merge.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/query/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/query/base.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/query/context.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/query/current.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/query/deduplicate_hash.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/query/deduplicate_key.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/query/final.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/query/hash.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/query/nocdc.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/query/rectify.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/query/scd1.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/query/scd2.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/query/slice.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/cdc/templates/query.sql.jinja +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/base.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/fabricks/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/fabricks/base.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/fabricks/environment.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/fabricks/pyproject.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/jobs/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/jobs/base.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/jobs/bronze.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/jobs/gold.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/jobs/silver.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/runtime.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/steps/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/steps/base.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/steps/bronze.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/steps/gold.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/config/steps/silver.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/context/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/context/_types.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/context/log.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/context/runtime.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/context/secret.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/context/spark_session.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/dags/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/dags/base.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/dags/generator.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/dags/log.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/dags/processor.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/dags/run.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/dags/terminator.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/dags/utils.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/deploy/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/deploy/tables.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/deploy/udfs.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/deploy/views.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/extenders.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/base/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/base/checker.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/base/exception.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/base/generator.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/base/invoker.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/base/job.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/base/processor.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/get_job.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/get_job_conf.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/get_job_id.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/get_jobs.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/gold.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/jobs/silver.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/parsers/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/parsers/_types.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/parsers/base.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/parsers/decorator.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/parsers/get_parser.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/schedules.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/scripts/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/scripts/armageddon.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/scripts/generate.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/scripts/job_schema.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/scripts/process.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/scripts/stats.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/scripts/steps.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/scripts/terminate.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/steps/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/steps/_types.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/steps/base.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/steps/get_step.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/steps/get_step_conf.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/udfs.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/utils.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/core/views.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/metastore/README.md +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/metastore/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/metastore/_types.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/metastore/database.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/metastore/dbobject.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/metastore/pyproject.toml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/metastore/utils.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/metastore/view.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/azure_queue.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/azure_table.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/console.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/fdict.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/helpers.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/log.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/path.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/pip.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/pydantic.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/read/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/read/_types.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/read/read.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/read/read_excel.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/read/read_yaml.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/schema/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/schema/get_json_schema_for_type.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/schema/get_schema_for_type.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/spark.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/sqlglot.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/write/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/write/delta.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/fabricks/utils/write/stream.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/format.sh +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/mkdocs.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/_types.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/add_fabricks.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/armageddon.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/compare.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job1/king/2022/01/01/0001/king_202201010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job1/king/2022/01/02/0001/king_202201020001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job1/king__deletelog/2022/02/01/0001/king_202201010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job1/prince/2022/01/01/0001/prince_202201010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job1/princess/2022/01/01/0001/princess_202201010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job1/queen/2022/01/01/0001/queen_202201010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job1/queen/2022/01/02/0001/queen_202201020001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job1/queen/2022/01/04/0001/queen_202201040001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job1/queen__deletelog/2022/01/03/0001/queen_202201030001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job1/queen__deletelog/2022/01/04/0001/queen_202201040001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job1/too_many_columns/2022/01/01/0001/sample_202201010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job10/king/2022/10/01/0001/king_202210010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job10/king/2022/10/02/0001/king_202210020001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job10/king/2022/10/02/0002/king_202210020002.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job10/king/2022/10/03/0001/king_202210030001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job10/queen__deletelog/2022/10/01/0001/queen_202210010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job11/king/2022/11/01/0001/king_202210010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job11/king__deletelog/2022/11/01/0001/king_202211010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job2/king/2022/02/05/0001/king_202202050001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job2/prince__deletelog/2022/02/01/0001/prince_202202010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job2/princess/2022/02/05/0001/princess_202202050001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job2/queen/2022/02/05/0001/queen_202202050001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job3/king/2022/03/01/001234/king_20220301001234.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job3/king__deletelog/2022/03/01/001234/king_20220301001234.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job3/queen/2022/03/05/001234/queen_20220305001234.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job3/queen/2022/03/06/0001/queen_202203060001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job4/king/2022/04/01/0001/king_202204010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job4/monarch/2022/04/01/0001/monarch_202204010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job4/queen/2022/04/01/0001/queen_202204010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job4/regent/2022/04/01/0001/regent_202204010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job5/king/2022/05/01/0001/king_202205010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job5/queen/2022/05/01/0001/queen_202205010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job6/king/2022/06/01/0001/king_202206010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job6/queen/2022/06/01/0001/queen_202206010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job7/king/2022/07/01/0001/king_202207010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job7/queen/2022/07/01/0001/queen_202207010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job8/king/2022/08/01/0001/king_202208010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job8/queen/2022/08/01/0001/queen_202208010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job9/king/2022/09/01/0001/king_202209010001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job9/king/2022/09/03/0001/king_202209030001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job9/king/2022/09/03/0002/king_202209030002.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job9/king/2022/09/08/0001/king_202209080001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job9/king__deletelog/2022/09/02/0001/king_202209020001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job9/king__deletelog/2022/09/04/0001/king_202209040001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job9/king__deletelog/2022/09/04/0005/king_202209040005.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job9/king__deletelog/2022/09/04/0009/king_202209040009.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job9/queen/2022/09/08/0001/queen_202209080001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/data/job9/queen__deletelog/2022/09/01/0001/queen_202209030001.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd1/job01.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd1/job02.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd1/job03.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd1/job04.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd1/job05.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd1/job06.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd1/job07.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd1/job08.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd1/job09.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd1/job10.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd1/job11.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd2/job01.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd2/job02.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd2/job03.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd2/job04.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd2/job05.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd2/job06.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd2/job07.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd2/job08.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd2/job09.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd2/job10.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/gold/scd2/job11.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd1/job01.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd1/job02.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd1/job03.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd1/job04.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd1/job05.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd1/job06.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd1/job07.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd1/job08.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd1/job09.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd1/job10.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd1/job11.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd2/job01.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd2/job02.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd2/job03.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd2/job04.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd2/job05.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd2/job06.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd2/job07.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd2/job08.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd2/job09.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd2/job10.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/expected/silver/scd2/job11.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/init.sh +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/initialize.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job1/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job1/test_cdc.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job1/test_check.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job1/test_dependency.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job1/test_gold.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job1/test_invoke.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job1/test_overwrite.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job1/test_schedule.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job1/test_semantic.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job1/test_silver.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job2/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job2/test_gold.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job2/test_run.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job2/test_semantic.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job2/test_silver.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job3/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job3/test_gold.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job3/test_run.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job3/test_silver.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job4/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job4/test_gold.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job4/test_run.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job5/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/jobs/job5/test_step.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/reset.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/run.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runjobs.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtests.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/.gitignore +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/add_fabricks.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/bronze/_config.kings.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/bronze/_config.memory.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/bronze/_config.monarchs.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/bronze/_config.princes.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/bronze/_config.princesses.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/bronze/_config.queens.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/bronze/_config.regents.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/conf.fabricks.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/conf.uc.fabricks.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/extenders/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/extenders/add_country.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/extenders/drop__cols.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/extenders/force_reload.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/extenders/monarch.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/parsers/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/parsers/delete_log.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/parsers/monarch.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/requirements.txt +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/schedules/schedule.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/udfs/__init__.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/udfs/addition.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/udfs/identity.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/udfs/key.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/udfs/parse_phone_number.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/fabricks/views/monarch.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/check/_config.check.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/check/count_must_equal.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/check/duplicate_identity.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/check/duplicate_key.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/check/fail.pre_run.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/check/fail.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/check/max_rows.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/check/min_rows.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/check/skip.skip.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/check/skip.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/check/warning.post_run.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/check/warning.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/dim/_config.dim.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/dim/date.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/dim/identity.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/dim/overwrite.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/dim/time.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/fact/_config.fact.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/fact/append.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/fact/deduplicate.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/fact/dependency_notebook.ipynb +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/fact/dependency_sql.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/fact/manual.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/fact/memory.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/fact/notebook.ipynb +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/fact/option.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/fact/order_duplicate.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/fact/overwrite.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/fact/udf.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/invoke/_config.invoke.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/invoke/failed_pre_run.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/invoke/notebook.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/invoke/notebook_without_argument.ipynb +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/invoke/notebooks.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/invoke/notebooks_failed_pre_run.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/invoke/post_run/exe.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/invoke/post_run.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/invoke/pre_run/exe.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/invoke/pre_run/exe_2.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/invoke/timedout.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/invoke/timedout_pre_run.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/scd1/_config.scd1.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/scd1/complete.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/scd1/identity.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/scd1/last_timestamp.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/scd1/memory.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/scd1/update.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/scd2/_config.scd2.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/scd2/complete.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/scd2/correct_valid_from.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/scd2/last_timestamp.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/scd2/memory.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/scd2/update.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/type_widening/_config.type_widening.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/type_widening/merge.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/gold/type_widening/overwrite.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/transf/fact/_config.transf.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/transf/fact/memory.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/gold/transf/post_run.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/job-schema.json +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/semantic/fact/_config.semantic.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/semantic/fact/job_option.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/semantic/fact/powerbi.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/semantic/fact/schema_drift.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/semantic/fact/step_option.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/semantic/fact/zstd.sql +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/silver/_config.kings_and_queens.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/silver/_config.memory.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/silver/_config.monarchs.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/silver/_config.princes.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/silver/_config.princesses.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/silver/_config.regents.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/uc/bronze/_config.kings.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/uc/bronze/_config.memory.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/uc/bronze/_config.monarchs.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/uc/bronze/_config.princes.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/uc/bronze/_config.princesses.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/uc/bronze/_config.queens.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/runtime/uc/bronze/_config.regents.yml +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/schedule.py +0 -0
- {fabricks-3.0.2 → fabricks-3.0.4}/tests/integration/utils.py +0 -0
|
@@ -37,6 +37,10 @@ class Configurator(ABC):
|
|
|
37
37
|
def is_registered(self):
|
|
38
38
|
return self.table.is_registered
|
|
39
39
|
|
|
40
|
+
@property
|
|
41
|
+
def qualified_name(self):
|
|
42
|
+
return f"{self.database}_{'_'.join(self.levels)}"
|
|
43
|
+
|
|
40
44
|
@abstractmethod
|
|
41
45
|
def get_query(self, src: Union[DataFrame, Table, str], **kwargs):
|
|
42
46
|
raise NotImplementedError()
|
|
@@ -101,7 +101,7 @@ class Merger(Processor):
|
|
|
101
101
|
self.create_table(src, **kwargs)
|
|
102
102
|
|
|
103
103
|
df = self.get_data(src, **kwargs)
|
|
104
|
-
global_temp_view = f"{self.
|
|
104
|
+
global_temp_view = f"{self.qualified_name}__merge"
|
|
105
105
|
view = create_or_replace_global_temp_view(global_temp_view, df, uuid=kwargs.get("uuid", False))
|
|
106
106
|
|
|
107
107
|
merge = self.get_merge_query(view, **kwargs)
|
|
@@ -16,7 +16,7 @@ from fabricks.utils.sqlglot import fix as fix_sql
|
|
|
16
16
|
class Processor(Generator):
|
|
17
17
|
def get_data(self, src: Union[DataFrame, Table, str], **kwargs) -> DataFrame:
|
|
18
18
|
if isinstance(src, (DataFrame, CDataFrame)):
|
|
19
|
-
name = f"{self.
|
|
19
|
+
name = f"{self.qualified_name}__data"
|
|
20
20
|
global_temp_view = create_or_replace_global_temp_view(name, src, uuid=kwargs.get("uuid", False))
|
|
21
21
|
src = f"select * from {global_temp_view}"
|
|
22
22
|
|
|
@@ -347,8 +347,11 @@ class Processor(Generator):
|
|
|
347
347
|
df = self.get_data(src, **kwargs)
|
|
348
348
|
df = self.reorder_columns(df)
|
|
349
349
|
|
|
350
|
+
name = f"{self.qualified_name}__append"
|
|
351
|
+
create_or_replace_global_temp_view(name, df, uuid=kwargs.get("uuid", False))
|
|
352
|
+
|
|
350
353
|
DEFAULT_LOGGER.debug("append", extra={"job": self})
|
|
351
|
-
|
|
354
|
+
self.spark.sql(f"insert into table {self.table} by name select * from global_temp.{name}")
|
|
352
355
|
|
|
353
356
|
def overwrite(
|
|
354
357
|
self,
|
|
@@ -366,9 +369,11 @@ class Processor(Generator):
|
|
|
366
369
|
if kwargs.get("update_where"):
|
|
367
370
|
dynamic = True
|
|
368
371
|
|
|
369
|
-
writer = df.write.format("delta").mode("overwrite")
|
|
370
372
|
if dynamic:
|
|
371
|
-
|
|
373
|
+
self.spark.sql("set spark.sql.sources.partitionOverwriteMode = dynamic")
|
|
374
|
+
|
|
375
|
+
name = f"{self.qualified_name}__overwrite"
|
|
376
|
+
create_or_replace_global_temp_view(name, df, uuid=kwargs.get("uuid", False))
|
|
372
377
|
|
|
373
|
-
DEFAULT_LOGGER.
|
|
374
|
-
|
|
378
|
+
DEFAULT_LOGGER.debug("overwrite", extra={"job": self})
|
|
379
|
+
self.spark.sql(f"insert overwrite table {self.table} by name select * from global_temp.{name}")
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from dataclasses import dataclass
|
|
2
|
-
from typing import
|
|
2
|
+
from typing import List, Literal, Optional, TypedDict, Union
|
|
3
3
|
|
|
4
4
|
from pydantic import BaseModel, ConfigDict, model_validator
|
|
5
5
|
from pyspark.sql.types import StringType, StructField, StructType
|
|
@@ -33,8 +33,8 @@ Origins = Literal["parser", "job"]
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
class SparkOptions(TypedDict):
|
|
36
|
-
sql: Optional[dict[
|
|
37
|
-
conf: Optional[dict[
|
|
36
|
+
sql: Optional[dict[str, str]]
|
|
37
|
+
conf: Optional[dict[str, str]]
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
class TableOptions(TypedDict):
|
|
@@ -45,17 +45,17 @@ class TableOptions(TypedDict):
|
|
|
45
45
|
cluster_by: Optional[List[str]]
|
|
46
46
|
powerbi: Optional[bool]
|
|
47
47
|
bloomfilter_by: Optional[List[str]]
|
|
48
|
-
constraints: Optional[dict[
|
|
49
|
-
properties: Optional[dict[
|
|
48
|
+
constraints: Optional[dict[str, str]]
|
|
49
|
+
properties: Optional[dict[str, str]]
|
|
50
50
|
comment: Optional[str]
|
|
51
|
-
calculated_columns: Optional[dict[
|
|
51
|
+
calculated_columns: Optional[dict[str, str]]
|
|
52
52
|
retention_days: Optional[int]
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
class _InvokeOptions(TypedDict):
|
|
56
56
|
notebook: str
|
|
57
57
|
timeout: int
|
|
58
|
-
arguments: Optional[dict[
|
|
58
|
+
arguments: Optional[dict[str, str]]
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
class InvokerOptions(TypedDict):
|
|
@@ -66,7 +66,7 @@ class InvokerOptions(TypedDict):
|
|
|
66
66
|
|
|
67
67
|
class ExtenderOptions(TypedDict):
|
|
68
68
|
extender: str
|
|
69
|
-
arguments: Optional[dict[
|
|
69
|
+
arguments: Optional[dict[str, str]]
|
|
70
70
|
|
|
71
71
|
|
|
72
72
|
class CheckOptions(TypedDict):
|
|
@@ -90,7 +90,7 @@ class BronzeOptions(TypedDict):
|
|
|
90
90
|
filter_where: Optional[str]
|
|
91
91
|
# extra
|
|
92
92
|
encrypted_columns: Optional[List[str]]
|
|
93
|
-
calculated_columns: Optional[dict[
|
|
93
|
+
calculated_columns: Optional[dict[str, str]]
|
|
94
94
|
operation: Optional[Operations]
|
|
95
95
|
timeout: Optional[int]
|
|
96
96
|
|
|
@@ -106,7 +106,7 @@ class SilverOptions(TypedDict):
|
|
|
106
106
|
deduplicate: Optional[bool]
|
|
107
107
|
stream: Optional[bool]
|
|
108
108
|
# else
|
|
109
|
-
order_duplicate_by: Optional[dict[
|
|
109
|
+
order_duplicate_by: Optional[dict[str, str]]
|
|
110
110
|
timeout: Optional[int]
|
|
111
111
|
|
|
112
112
|
|
|
@@ -141,7 +141,7 @@ class BaseJobConf:
|
|
|
141
141
|
|
|
142
142
|
@dataclass
|
|
143
143
|
class JobConfBronze(BaseJobConf):
|
|
144
|
-
step:
|
|
144
|
+
step: TBronze
|
|
145
145
|
options: BronzeOptions
|
|
146
146
|
table_options: Optional[TableOptions] = None
|
|
147
147
|
parser_options: Optional[ParserOptions] = None
|
|
@@ -155,7 +155,7 @@ class JobConfBronze(BaseJobConf):
|
|
|
155
155
|
|
|
156
156
|
@dataclass
|
|
157
157
|
class JobConfSilver(BaseJobConf):
|
|
158
|
-
step:
|
|
158
|
+
step: TSilver
|
|
159
159
|
options: SilverOptions
|
|
160
160
|
table_options: Optional[TableOptions] = None
|
|
161
161
|
check_options: Optional[CheckOptions] = None
|
|
@@ -168,7 +168,7 @@ class JobConfSilver(BaseJobConf):
|
|
|
168
168
|
|
|
169
169
|
@dataclass
|
|
170
170
|
class JobConfGold(BaseJobConf):
|
|
171
|
-
step:
|
|
171
|
+
step: TGold
|
|
172
172
|
options: Optional[GoldOptions]
|
|
173
173
|
table_options: Optional[TableOptions] = None
|
|
174
174
|
check_options: Optional[CheckOptions] = None
|
|
@@ -301,9 +301,8 @@ class Configurator(ABC):
|
|
|
301
301
|
"""
|
|
302
302
|
if self.mode == "memory":
|
|
303
303
|
DEFAULT_LOGGER.debug("memory (no optimize)", extra={"job": self})
|
|
304
|
-
else:
|
|
305
|
-
assert self.table.exists()
|
|
306
304
|
|
|
305
|
+
else:
|
|
307
306
|
if vacuum:
|
|
308
307
|
self.vacuum()
|
|
309
308
|
if optimize:
|
|
@@ -312,19 +311,23 @@ class Configurator(ABC):
|
|
|
312
311
|
self.table.compute_statistics()
|
|
313
312
|
|
|
314
313
|
def vacuum(self):
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
if job is not None:
|
|
320
|
-
retention_days = job
|
|
321
|
-
elif step:
|
|
322
|
-
retention_days = step
|
|
314
|
+
if self.mode == "memory":
|
|
315
|
+
DEFAULT_LOGGER.debug("memory (no vacuum)", extra={"job": self})
|
|
316
|
+
|
|
323
317
|
else:
|
|
324
|
-
|
|
325
|
-
|
|
318
|
+
job = self.options.table.get("retention_days")
|
|
319
|
+
step = self.step_conf.get("table_options", {}).get("retention_days", None)
|
|
320
|
+
runtime = CONF_RUNTIME.get("options", {}).get("retention_days")
|
|
321
|
+
|
|
322
|
+
if job is not None:
|
|
323
|
+
retention_days = job
|
|
324
|
+
elif step:
|
|
325
|
+
retention_days = step
|
|
326
|
+
else:
|
|
327
|
+
assert runtime
|
|
328
|
+
retention_days = runtime
|
|
326
329
|
|
|
327
|
-
|
|
330
|
+
self.table.vacuum(retention_days=retention_days)
|
|
328
331
|
|
|
329
332
|
def __str__(self):
|
|
330
333
|
return f"{self.step}.{self.topic}_{self.item}"
|
|
@@ -103,6 +103,21 @@ class Bronze(BaseJob):
|
|
|
103
103
|
DEFAULT_LOGGER.debug("drop external table", extra={"job": self})
|
|
104
104
|
self.spark.sql(f"drop table if exists {self.qualified_name}")
|
|
105
105
|
|
|
106
|
+
def analyze_external_table(self):
|
|
107
|
+
DEFAULT_LOGGER.debug("analyze external table", extra={"job": self})
|
|
108
|
+
self.spark.sql(f"analyze table {self.qualified_name} compute statistics")
|
|
109
|
+
|
|
110
|
+
def vacuum_external_table(self, retention_hours: Optional[int] = 168):
|
|
111
|
+
from delta import DeltaTable
|
|
112
|
+
|
|
113
|
+
DEFAULT_LOGGER.debug("vacuum external table", extra={"job": self})
|
|
114
|
+
try:
|
|
115
|
+
dt = DeltaTable.forPath(self.spark, self.data_path.string)
|
|
116
|
+
self.spark.sql("SET self.spark.databricks.delta.retentionDurationCheck.enabled = False")
|
|
117
|
+
dt.vacuum(retention_hours)
|
|
118
|
+
finally:
|
|
119
|
+
self.spark.sql("SET self.spark.databricks.delta.retentionDurationCheck.enabled = True")
|
|
120
|
+
|
|
106
121
|
def optimize_external_table(
|
|
107
122
|
self,
|
|
108
123
|
vacuum: Optional[bool] = True,
|
|
@@ -110,20 +125,10 @@ class Bronze(BaseJob):
|
|
|
110
125
|
):
|
|
111
126
|
DEFAULT_LOGGER.debug("optimize external table", extra={"job": self})
|
|
112
127
|
if vacuum:
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
dt = DeltaTable.forPath(self.spark, self.data_path.string)
|
|
116
|
-
retention_days = 7
|
|
117
|
-
DEFAULT_LOGGER.debug(f"{self.data_path} - vacuum table (removing files older than {retention_days} days)")
|
|
118
|
-
try:
|
|
119
|
-
self.spark.sql("SET self.spark.databricks.delta.retentionDurationCheck.enabled = False")
|
|
120
|
-
dt.vacuum(retention_days * 24)
|
|
121
|
-
finally:
|
|
122
|
-
self.spark.sql("SET self.spark.databricks.delta.retentionDurationCheck.enabled = True")
|
|
128
|
+
self.vacuum_external_table()
|
|
123
129
|
|
|
124
130
|
if analyze:
|
|
125
|
-
|
|
126
|
-
self.spark.sql(f"analyze table delta.`{self.data_path}` compute delta statistics")
|
|
131
|
+
self.analyze_external_table()
|
|
127
132
|
|
|
128
133
|
@property
|
|
129
134
|
def parser(self) -> BaseParser:
|
|
@@ -370,6 +375,14 @@ class Bronze(BaseJob):
|
|
|
370
375
|
else:
|
|
371
376
|
super().optimize(vacuum=vacuum, optimize=optimize, analyze=analyze)
|
|
372
377
|
|
|
378
|
+
def vacuum(self):
|
|
379
|
+
if self.mode == "memory":
|
|
380
|
+
DEFAULT_LOGGER.info("memory (no vacuum)", extra={"job": self})
|
|
381
|
+
elif self.mode == "register":
|
|
382
|
+
self.vacuum_external_table()
|
|
383
|
+
else:
|
|
384
|
+
super().vacuum()
|
|
385
|
+
|
|
373
386
|
def overwrite(self):
|
|
374
387
|
self.truncate()
|
|
375
388
|
self.run()
|
|
@@ -433,7 +433,11 @@ class Table(DbObject):
|
|
|
433
433
|
cols = [
|
|
434
434
|
f"`{name}`"
|
|
435
435
|
for name, dtype in self.dataframe.dtypes
|
|
436
|
-
if not dtype.startswith("struct")
|
|
436
|
+
if not dtype.startswith("struct")
|
|
437
|
+
and not dtype.startswith("array")
|
|
438
|
+
and not dtype.startswith("variant")
|
|
439
|
+
and not dtype.startswith("map")
|
|
440
|
+
and name not in ["__metadata"]
|
|
437
441
|
]
|
|
438
442
|
cols = ", ".join(sorted(cols))
|
|
439
443
|
self.spark.sql(f"analyze table {self.qualified_name} compute statistics for columns {cols}")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|