### Install dbt-af with pip Source: https://github.com/toloka/dbt-af/blob/main/examples/README.md This command installs the dbt-af package along with test and example dependencies. Ensure you have pip installed and a compatible Python environment. ```bash pip install dbt-af[tests,examples] ``` -------------------------------- ### Install dbt-af with Tableau Extra Source: https://github.com/toloka/dbt-af/blob/main/docs/docs.md Command to install the dbt-af package with the necessary 'tableau' extra, enabling the Tableau refresh tasks feature. ```bash pip install dbt-af[tableau] ``` -------------------------------- ### Get Help for dbt-af Manifest Tests Source: https://github.com/toloka/dbt-af/blob/main/examples/extras_and_scripts.md Displays help information for the 'dbt-af-manifest-tests' script. This script is made available after installing the 'tests' extra and is used to run various tests on the dbt project. ```bash dbt-af-manifest-tests --help ``` -------------------------------- ### Install dbt-af with Tests Extra Source: https://github.com/toloka/dbt-af/blob/main/examples/extras_and_scripts.md Installs the dbt-af package with the 'tests' extra, which includes scripts for testing dbt project correctness. This is necessary to run the manifest tests provided by dbt-af. ```bash pip install dbt-af[tests] ``` -------------------------------- ### Install dbt-af with Minidbt Extra Source: https://github.com/toloka/dbt-af/blob/main/examples/extras_and_scripts.md Installs the dbt-af package with the 'minidbt' extra. This enables the minidbt functionality for reorganizing dbt projects to improve parsing efficiency, especially for large projects. ```bash pip install dbt-af[minidbt] ``` -------------------------------- ### dbt Project Domain Start Date Configuration (YAML) Source: https://github.com/toloka/dbt-af/blob/main/docs/docs.md Sets the start date for a domain within a dbt project. This option helps reduce the number of catch-up DagRuns in Airflow by defining the earliest point from which models in that domain should be considered active. Best configured in the main dbt_project.yml file. ```yaml # dbt_project.yml models: project_name: domain_name: domain_start_date: "2024-01-01T00:00:00" ``` -------------------------------- ### dbt_run_model DAG Extra Arguments JSON Format Source: https://github.com/toloka/dbt-af/blob/main/docs/docs.md Example of how to provide additional arguments to the dbt command when using the dbt_run_model DAG, formatted as a JSON object. ```json { "--option1": "value1", "--option2": "value2", "--flag": "" } ``` -------------------------------- ### Run dbt commands: cd, debug, seed, run, test, docs generate, docs serve Source: https://github.com/toloka/dbt-af/blob/main/examples/dags/jaffle_shop/README.md This snippet outlines the essential command-line interface (CLI) commands for interacting with the dbt project. These commands cover project navigation, connection debugging, data loading, model execution, output testing, and documentation generation/serving. Ensure dbt is installed and a profile is correctly configured before executing. ```bash cd jaffle_shop dbt debug dbt seed dbt run dbt test dbt docs generate dbt docs serve ``` -------------------------------- ### Example: Set TTL with Force Predicate (YAML) Source: https://github.com/toloka/dbt-af/blob/main/examples/maintenance_and_source_freshness.md Demonstrates setting TTL using a force predicate, which overrides the base predicate and expiration timeout. Records with 'rejected' status will be deleted. ```yaml config: maintenance: ttl: key: etl_updated_dttm # ignored expiration_timeout: 10 # ignored force_predicate: order_id in (select order_id from orders where status = 'rejected') ``` -------------------------------- ### Example: Set TTL with Expiration Timeout (YAML) Source: https://github.com/toloka/dbt-af/blob/main/examples/maintenance_and_source_freshness.md An example configuration to set the Time To Live (TTL) for a table. Records older than 10 days will be automatically deleted based on the 'etl_updated_dttm' column. ```yaml config: maintenance: ttl: key: etl_updated_dttm expiration_timeout: 10 ``` -------------------------------- ### Example: Set TTL with Additional Predicate (YAML) Source: https://github.com/toloka/dbt-af/blob/main/examples/maintenance_and_source_freshness.md Configures TTL for a table, specifying an expiration timeout and an additional predicate. Records older than 10 days and with 'status = 'accepted'' will be deleted. ```yaml config: maintenance: ttl: key: etl_updated_dttm expiration_timeout: 10 additional_predicate: "status = 'accepted'" ``` -------------------------------- ### Tableau Refresh Task Configuration for dbt Models Source: https://github.com/toloka/dbt-af/blob/main/docs/docs.md Configures a list of Tableau refresh tasks to be triggered after a dbt model successfully runs. Requires the 'tableau' extra to be installed for dbt-af. ```yaml # dmn_jaffle_analytics.ods.orders.yml models: - name: dmn_jaffle_analytics.ods.orders config: tableau_refresh_tasks: - resource_name: "extract_name" project_name: "project_name" resource_type: workbook # or datasource ``` -------------------------------- ### Configure Tableau Integration in dbt-af Source: https://github.com/toloka/dbt-af/blob/main/examples/integration_with_other_tools.md This Python snippet demonstrates configuring Tableau integration within dbt-af. It requires the 'tableau' extra to be installed and specifies connection details like server address, username, and site ID. Basic authentication or personal access tokens are supported. ```python from dbt_af.conf import Config, TableauIntegrationConfig config = Config( # ... tableau=TableauIntegrationConfig( server_address='https://tableau.server.com', username='admin', password='admin', site_id='my_site', ), ) ``` -------------------------------- ### Skip Upstream Dependencies in dbt-af Model Config Source: https://github.com/toloka/dbt-af/blob/main/examples/dependencies_management.md Configure a dbt model to skip its upstream dependencies by setting `skip: true` within the `dependencies` section of the model's configuration. This is useful when a model needs to run as soon as possible without waiting for its prerequisites. The example shows how to apply this in a YAML configuration file. ```yaml config: dependencies: upstream.model.name: skip: true ``` ```yaml dependencies: dmn_jaffle_shop.stg.customers: skip: true ``` -------------------------------- ### Configure Monte Carlo Data Integration in dbt-af Source: https://github.com/toloka/dbt-af/blob/main/examples/integration_with_other_tools.md This Python snippet shows how to configure Monte Carlo Data integration within dbt-af. It enables callbacks, artifact export, and specifies metastore details. Ensure the 'mcd' extra is installed. ```python from dbt_af.conf import Config, MCDIntegrationConfig config = Config( # ... mcd=MCDIntegrationConfig( # whether to enable provided callbacks for airflow DAGs and tasks by airflow_mcd package callbacks_enabled=True, # whether to enable dbt artifacts export to Monte Carlo Data artifacts_export_enabled=True, # whether to require dbt artifacts export to MCD to be successful success_required=True, # name of metastore in MCD metastore_name='name', ) # ... ) ``` -------------------------------- ### Python Virtual Environment Task for Data Ingestion Source: https://github.com/toloka/dbt-af/blob/main/examples/python_venv_tasks.md This Python script demonstrates how to create a virtual environment task for data ingestion within a dbt pipeline. It includes necessary imports, a placeholder `model` function required by dbt, and an `ingest_venv` function that performs data generation and saves it to a PostgreSQL database. Ensure pandas, numpy, and sqlalchemy are installed. ```python # import the necessary libraries what are not available on airflow workers import pandas as pd import numpy as np from sqlalchemy import create_engine # HACK: we need to define this function so that dbt can parse the model correctly # here we need to define all refs that are used in the model def model(dbt, session): """ Here you can reference any dbt model or source to build the dependency graph (it's not required). Although dependencies can be specified, your code must perform actual reading of data. """ # dbt.ref('some_model') # dbt.source('some_source', 'some_table') return pd.DataFrame() # it's required to return DataFrame in dbt python models def ingest_venv(): # do some work here print("Ingesting data") df = pd.DataFrame(np.random.randint(0, 100, size=(100, 4)), columns=list('ABCD')) print(df.head()) # save the data to the postgres engine = create_engine('postgresql://airflow:airflow@localhost:5432/airflow') df.to_sql('random_data', con=engine, if_exists='replace', index=False) # run the function ingest_venv() ``` -------------------------------- ### Disable Single Model Manual DAG in dbt-af Configuration Source: https://github.com/toloka/dbt-af/blob/main/examples/basic_project.md This Python code snippet demonstrates how to disable the automatically generated DAG for running a single dbt model manually. It involves setting the 'include_single_model_manual_dag' parameter to False within the dbt-af Config object. This is useful for simplifying DAG generation when the single model DAG is not required. ```python from dbt_af.conf import Config config = Config( # ... include_single_model_manual_dag=False, # ... ) ``` -------------------------------- ### profiles.yml Configuration for Python Virtual Environment Target Source: https://github.com/toloka/dbt-af/blob/main/examples/python_venv_tasks.md This `profiles.yml` configuration defines a custom dbt target named `ingest` specifically for Python virtual environment tasks. It specifies the `type` as `venv`, lists required Python packages, and configures settings like Python version and package installation options. The `inherit_env` option is available for Airflow versions 2.10.0 and higher. ```yaml default: target: dev outputs: ingest: type: venv # custom type for python venv tasks schema: "{{ env_var('POSTGRES_SCHEMA') }}" requirements: - dbxio==0.5.2 - pandas - numpy system_site_packages: true python_version: "3.10" pip_install_options: - "--no-cache-dir" index_urls: - "https://pypi.org/simple" inherit_env: true # this option is allowed only for airflow versions 2.10.0 and higher ``` -------------------------------- ### Build dbt manifest script Source: https://github.com/toloka/dbt-af/blob/main/examples/README.md This script, when executed from the examples/dags directory, builds the dbt manifest. It requires the dbt project to be set up correctly. ```bash cd examples/dags ./build_manifest.sh ``` -------------------------------- ### Serve dbt Project Documentation Source: https://github.com/toloka/dbt-af/blob/main/examples/dags/advanced_jaffle_shop/README.md Serves the generated dbt project documentation locally, allowing users to browse and explore the project's structure, models, and data lineage through a web interface. ```bash dbt docs serve ``` -------------------------------- ### Generate dbt Project Documentation Source: https://github.com/toloka/dbt-af/blob/main/examples/dags/advanced_jaffle_shop/README.md Generates documentation for the dbt project, including model descriptions, column information, and lineage. This documentation can be served locally for viewing. ```bash dbt docs generate ``` -------------------------------- ### Configure dbt-af Default Targets Source: https://github.com/toloka/dbt-af/blob/main/examples/advanced_project.md This Python snippet demonstrates how to configure default dbt targets within the `dbt-af` framework using the `Config` and `DbtDefaultTargetsConfig` classes. It specifies the default target for general runs and a separate default target for tests, enhancing flexibility in dbt execution environments. ```python from dbt_af.conf import Config, DbtDefaultTargetsConfig config = Config( # ... dbt_default_targets=DbtDefaultTargetsConfig( default_target='dev', default_for_tests_target='dev', # could be undefined, then default_target will be used ), # ... ) ``` -------------------------------- ### Configure dbt Targets in dbt_project.yml Source: https://github.com/toloka/dbt-af/blob/main/examples/advanced_project.md This YAML snippet illustrates how to set default dbt targets for different cluster types (sql_cluster, daily_sql_cluster, py_cluster, bf_cluster) within the `dbt_project.yml` file. These settings define the target environment for models and seeds. ```yaml models: sql_cluster: "dev" daily_sql_cluster: "dev" py_cluster: "dev" bf_cluster: "dev" seeds: sql_cluster: "dev" daily_sql_cluster: "dev" py_cluster: "dev" bf_cluster: "dev" ``` -------------------------------- ### Dockerfile for dbt Kubernetes Tasks Source: https://github.com/toloka/dbt-af/blob/main/examples/kubernetes_tasks.md A basic Dockerfile to build an image containing dbt and its Python dependencies. Ensure no CMD or ENTRYPOINT is defined within the Dockerfile itself. ```Dockerfile FROM python:3.10-slim COPY requirements.txt /requirements.txt RUN pip install -r /requirements.txt ``` -------------------------------- ### Navigate to Jaffle Shop Directory Source: https://github.com/toloka/dbt-af/blob/main/examples/dags/advanced_jaffle_shop/README.md Changes the current directory to the 'jaffle_shop' project folder. This is a prerequisite for running dbt commands within the project. ```bash cd jaffle_shop ``` -------------------------------- ### Add Airflow pools using CLI Source: https://github.com/toloka/dbt-af/blob/main/examples/README.md This command uses the Airflow CLI to set a new pool named 'dbt_dev' with 4 slots and a description 'dev'. This is a way to configure Airflow pools programmatically. ```bash airflow pools set dbt_dev 4 "dev" ``` -------------------------------- ### Run Minidbt Project Generator Source: https://github.com/toloka/dbt-af/blob/main/examples/extras_and_scripts.md Executes the 'mini_dbt_project_generator' script, which is part of the 'minidbt' extra. This script is used to initiate the project reorganization process for performance optimization. ```bash mini_dbt_project_generator --help ``` -------------------------------- ### Configure dbt Medium Tests with Tags Source: https://github.com/toloka/dbt-af/blob/main/examples/advanced_project.md This snippet shows how to define medium tests in a dbt project's YAML configuration. Medium tests are non-blocking and run after all models in the DAG, typically after their respective YAML files are defined. This configuration uses a '@medium' tag to identify these tests. ```yaml tests: - unique: # or any other test tags: [ "@medium" ] ``` -------------------------------- ### Debug dbt Profile Configuration Source: https://github.com/toloka/dbt-af/blob/main/examples/dags/advanced_jaffle_shop/README.md Verifies that the dbt profile is correctly configured to connect to the data warehouse. Essential for ensuring dbt can interact with your database. ```bash dbt debug ``` -------------------------------- ### Run dbt Models Source: https://github.com/toloka/dbt-af/blob/main/examples/dags/advanced_jaffle_shop/README.md Executes the dbt models defined in the project, transforming raw data into analytical tables or views in the data warehouse. May require SQL adjustments based on the target database. ```bash dbt run ``` -------------------------------- ### Customize Retries for dbt-af Components with Python Source: https://github.com/toloka/dbt-af/blob/main/examples/advanced_project.md Configures retry policies for dbt-af DAG components. It allows setting a default retry policy for all components and overriding it for specific types like dbt runs. Dependencies include 'datetime.timedelta' and dbt-af's 'Config', 'RetriesConfig', and 'RetryPolicy' classes. ```python from datetime import timedelta from dbt_af.conf import Config, RetriesConfig, RetryPolicy config = Config( # ... retries_config=RetriesConfig( default_retry_policy=RetryPolicy( retries=1, retry_delay=timedelta(minutes=5), retry_exponential_backoff=True, max_retry_delay=timedelta(minutes=30) ), dbt_run_retry_policy=RetryPolicy(retries=3) ) # ... ) ``` -------------------------------- ### Enable Persist Docs Maintenance (YAML) Source: https://github.com/toloka/dbt-af/blob/main/examples/maintenance_and_source_freshness.md Enables the persistence of documentation. Use with caution as this feature is not well-documented. ```yaml config: maintenance: persist_docs: true ``` -------------------------------- ### Python Model Script for Kubernetes Execution Source: https://github.com/toloka/dbt-af/blob/main/examples/kubernetes_tasks.md A Python script template for dbt models intended to run in Kubernetes. It requires a `model` function for dbt parsing and a `main` function for script execution, utilizing environment variables for configuration. ```python import os import typer import pandas as pd from typing import Optional # HACK: we need to define this function so that dbt can parse the model correctly # here we need to define all refs that are used in the model def model(dbt, session): dbt.ref('your.model.name') return pd.DataFrame() # it's required to return DataFrame in dbt python models def main( model_config_b64: Optional[str] = os.getenv('MODEL_CONFIG_B64'), dag_run_conf: Optional[str] = os.getenv('DAG_RUN_CONF'), start_dttm: Optional[str] = os.getenv('START_DTTM'), end_dttm: Optional[str] = os.getenv('END_DTTM'), ): # your code here ... if __name__ == '__main__': typer.run(main) ``` -------------------------------- ### dbt Profile for Kubernetes Target Source: https://github.com/toloka/dbt-af/blob/main/examples/kubernetes_tasks.md Defines a new dbt profile targeting Kubernetes. This includes schema, node pool selection, Kubernetes image details, resource guarantees, and optional tolerations. ```yaml k8s_target: schema: "{{ env_var('DBT_SCHEMA') }}" node_pool_selector_name: "selector_name" node_pool: "node_pool_name" image_name: "image_name" pod_cpu_guarantee: "500m" # limit in k8s notation pod_memory_guarantee: "2Gi" # limit in k8s notation type: kubernetes tolerations: # optional (see Step 2) - key: "key" operator: "Exists" ``` -------------------------------- ### Generate Airflow DAGs for dbt project with dbt-af Source: https://github.com/toloka/dbt-af/blob/main/README.md This Python code snippet demonstrates how to generate Airflow DAGs for a dbt project using the dbt-af library. It requires specifying configuration details for the dbt project and its paths. The output is a dictionary of DAG objects that can be registered with Airflow. ```python # LABELS: dag, airflow (it's required for airflow dag-processor) from dbt_af.dags import compile_dbt_af_dags from dbt_af.conf import Config, DbtDefaultTargetsConfig, DbtProjectConfig # specify here all settings for your dbt project config = Config( dbt_project=DbtProjectConfig( dbt_project_name='my_dbt_project', dbt_project_path='/path/to/my_dbt_project', dbt_models_path='/path/to/my_dbt_project/models', dbt_profiles_path='/path/to/my_dbt_project', dbt_target_path='/path/to/my_dbt_project/target', dbt_log_path='/path/to/my_dbt_project/logs', dbt_schema='my_dbt_schema', ), dbt_default_targets=DbtDefaultTargetsConfig(default_target='dev'), dry_run=False, # set to True if you want to turn on dry-run mode ) dags = compile_dbt_af_dags( manifest_path='/path/to/my_dbt_project/target/manifest.json', config=config, ) for dag_name, dag in dags.items(): globals()[dag_name] = dag ``` -------------------------------- ### Load Seed Data into Warehouse Source: https://github.com/toloka/dbt-af/blob/main/examples/dags/advanced_jaffle_shop/README.md Loads data from CSV files (seeds) into the target data warehouse. Note that this is typically not required for a standard dbt project where raw data is already in the warehouse. ```bash dbt seed ``` -------------------------------- ### Test dbt Model Outputs Source: https://github.com/toloka/dbt-af/blob/main/examples/dags/advanced_jaffle_shop/README.md Runs the tests defined for the dbt models to ensure data quality and integrity. This helps validate the transformations performed by the models. ```bash dbt test ``` -------------------------------- ### dbt Model Dependencies Configuration (YAML) Source: https://github.com/toloka/dbt-af/blob/main/docs/docs.md Defines how a dbt model depends on other models. Allows specifying if an upstream model should be skipped and the wait policy (last or all) for dependencies. This is crucial for managing data pipeline flow. ```yaml # dmn_jaffle_analytics.ods.orders.yml models: - name: dmn_jaffle_analytics.ods.orders config: dependencies: dmn_jaffle_shop.stg.orders: skip: True dmn_jaffle_shop.stg.payments: wait_policy: last ``` -------------------------------- ### Enable OPTIMIZE Table Maintenance (YAML) Source: https://github.com/toloka/dbt-af/blob/main/examples/maintenance_and_source_freshness.md Enables the OPTIMIZE command for a table, which compacts smaller files into larger ones to improve query performance. This configuration is set in the model's config. ```yaml config: maintenance: optimize_table: true ``` -------------------------------- ### dbt Model Environment Variables Configuration (YAML) Source: https://github.com/toloka/dbt-af/blob/main/docs/docs.md Allows passing additional environment variables to the runtime for a specific dbt model. These variables are processed first by dbt's Jinja rendering and then by Airflow's rendering. Airflow templates require double curly braces for escaping. ```yaml # dmn_jaffle_analytics.ods.orders.yml models: - name: dmn_jaffle_analytics.ods.orders config: env: MY_ENV_VAR: "my_value" MY_ENV_WITH_AF_RENDERING: "{{'{{ var.value.get("my.var", "fallback") }}'}}" ``` -------------------------------- ### dbt Cluster Target Configuration Source: https://github.com/toloka/dbt-af/blob/main/docs/docs.md Configures dbt targets for different clusters (py, sql, daily_sql, bf) within specific domains in the dbt_project.yml file. These targets are used to resolve dbt targets if not explicitly set. ```yaml # dbt_project.yml models: project_name: domain_name: py_cluster: "py_cluster" sql_cluster: "sql_cluster" daily_sql_cluster: "daily_sql_cluster" bf_cluster: "bf_cluster" ``` -------------------------------- ### Enable VACUUM Table Maintenance (YAML) Source: https://github.com/toloka/dbt-af/blob/main/examples/maintenance_and_source_freshness.md Enables the VACUUM command for a table, which is used to remove old data files and reclaim storage space. This configuration is applied within the model's config. ```yaml config: maintenance: vacuum_table: true ``` -------------------------------- ### Custom Wait Policy for Upstream Dependencies in dbt-af Source: https://github.com/toloka/dbt-af/blob/main/examples/dependencies_management.md Implement a custom wait policy for upstream dependencies in dbt-af by setting `wait_policy: all` in the `dependencies` section. This ensures that a model waits for all runs of its upstream dependency that occurred between the last run of the upstream and the current run of the downstream model. Use with caution as it can increase task complexity. ```yaml config: dependencies: upstream.model.name: wait_policy: all ``` -------------------------------- ### Enable Table Deduplication Maintenance (YAML) Source: https://github.com/toloka/dbt-af/blob/main/examples/maintenance_and_source_freshness.md Enables deduplication for a table based on specified 'unique_key' and 'partition_by' columns. Use with caution as this feature is not well-documented. ```yaml config: maintenance: deduplicate_table: true ``` -------------------------------- ### dbt Model Maintenance Configuration Source: https://github.com/toloka/dbt-af/blob/main/docs/docs.md Defines maintenance tasks for a dbt model, including TTL (Time To Live) settings for data freshness. This configuration is typically placed in a model's YAML file. ```yaml # dmn_jaffle_analytics.ods.orders.yml models: - name: dmn_jaffle_analytics.ods.orders config: ttl: key: etl_updated_dttm expiration_timeout: 10 ``` -------------------------------- ### Set Explicit dbt Target in Model Config Source: https://github.com/toloka/dbt-af/blob/main/examples/advanced_project.md Allows overriding the default dbt target for a specific model by setting the 'dbt_target' parameter within the model's configuration. This is useful for running specific models against particular environments or targets. ```yaml config: dbt_target: large_dev ``` -------------------------------- ### Set Time To Live (TTL) for Table Maintenance (YAML) Source: https://github.com/toloka/dbt-af/blob/main/examples/maintenance_and_source_freshness.md Configures automatic data deletion for tables by setting a Time To Live (TTL). Records older than the specified timeout are deleted. Requires a monotonically increasing timestamp column. ```yaml config: maintenance: ttl: key: # Table timestamp-like column name expiration_timeout: # Table expiration timeout in days additional_predicate: # Additional predicate for filtering expired data force_predicate: # Force predicate for filtering expired data. It will override base predicate ``` -------------------------------- ### Configure Source Freshness Check (YAML) Source: https://github.com/toloka/dbt-af/blob/main/examples/maintenance_and_source_freshness.md Enables checking the freshness of external data sources. If a source is not fresh, dependent models will not execute. This configuration is added to the source's YAML file. ```yaml sources: - name: my_source freshness: error_after: count: 15 # positive integer period: hour # minute | hour | day loaded_at_field: my_source_loaded_at # column or expression on which to check the freshness ``` -------------------------------- ### Bind Tableau Extracts with dbt Models Source: https://github.com/toloka/dbt-af/blob/main/examples/integration_with_other_tools.md This YAML configuration snippet shows how to bind Tableau extracts for refresh with dbt models. It specifies a list of Tableau resources (workbooks or data sources) to be refreshed, including their names and projects. ```yaml tableau_refresh_tasks: - resource_name: embedded_data_source project_name: project_name resource_type: workbook - resource_name: published_data_source_with_extract project_name: project_name resource_type: datasource ``` -------------------------------- ### dbt Model Configuration for Python Virtual Environment Task Source: https://github.com/toloka/dbt-af/blob/main/examples/python_venv_tasks.md This YAML configuration specifies settings for a dbt model designed to run within a Python virtual environment. It defines the dbt target to be used (`ingest`) and allows setting environment variables (`env`) for the task, provided Airflow version is 2.10.0 or higher. ```yaml version: 2 models: - name: dmn_jaffle_analytics.ods.ingest_venv config: dbt_target: ingest env: # this option is allowed only for airflow versions 2.10.0 and higher SOME_FLAG: "some_value" ``` -------------------------------- ### Contributor License Agreement (CLA) Notification Source: https://github.com/toloka/dbt-af/blob/main/CONTRIBUTING.md This snippet provides the required text to include in your first pull request to signify your agreement with the Toloka Contributor License Agreement (CLA). It is a one-time notification for direct contributions to the dbt-af project. ```text I hereby agree to the terms of either individual CLA available at: https://toloka.ai/legal/cla_individual or corporate CLA available at: https://toloka.ai/legal/cla_corporate, whichever is applicable to me, as it pertains to direct contributions to dbt-af only. ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.