static_analysis
Конфигурация static_analysis доступна только в dbt Fusion Engine. В dbt Core она недоступна и будет проигнорирована. Чтобы перейти на Fusion, см. начало работы Fusion.
- YAML-файл проекта
- Properties YAML file
- SQL file config
models:
resource-path:
+static_analysis: on | unsafe | off
models:
- name: model_name
config:
static_analysis: on | unsafe | off
{{ config(static_analysis='on' | 'unsafe' | 'off') }}
select
user_id,
my_cool_udf(ip_address) as cleaned_ip
from {{ ref('my_model') }}
Определение
Вы можете настроить, будет ли и когда dbt Fusion Engine выполнять статический анализ SQL для модели. Конфигурацию static_analysis можно задать в YAML-файле проекта (dbt_project.yml), в YAML-файле свойств модели или в SQL-блоке config внутри файла модели. Подробнее о том, как dbt Fusion Engine рендерит модели, см. rendering strategies.
Для static_analysis доступны следующие значения:
on: Выполнять статический анализ SQL заранее (AOT, ahead-of-time). Значение по умолчанию для неинтроспективных моделей; зависит от AOT-рендеринга.unsafe: Выполнять статический анализ SQL непосредственно перед выполнением (JIT, just-in-time). Значение по умолчанию, если модель (или любой из её родителей) использует интроспективные запросы. JIT-анализ по‑прежнему выявляет большинство SQL-ошибок, однако анализ выполняется после выполнения части вышестоящих шагов.off: Пропустить SQL-анализ для этой модели и всех её потомков.
Модель может участвовать в статическом анализе только в том случае, если все её родительские модели также ему подлежат.
Более подробное обсуждение и визуальные схемы см. на странице концепций Fusion: New concepts. Дополнительную информацию о JSON-схеме см. в файле dbt-jsonschema.
Переопределение в CLI
Вы можете переопределить конфигурацию на уровне модели при запуске, используя следующие CLI-флаги. Например, чтобы отключить статический анализ для одного запуска:
dbt run --static-analysis off # отключить статический анализ для всех моделей
dbt run --static-analysis unsafe # использовать JIT-анализ для всех моделей
См. также: static analysis CLI flag.
Примеры
Следующие примеры показывают, как отключить статический анализ для всех моделей в пакете, для одной модели, а также для модели, использующей пользовательскую UDF.
- Отключить статический анализ для всех моделей в пакете
- Отключить статический анализ в YAML для одной модели
- Отключить статический анализ в SQL для модели, использующей пользовательскую UDF
Отключить статический анализ для всех моделей в пакете
В этом примере показано, как отключить статический анализ для всех моделей в пакете. Префикс + применяет конфигурацию ко всем моделям в пакете.
name: jaffle_shop
models:
jaffle_shop:
marts:
+materialized: table
a_package_with_introspective_queries:
+static_analysis: off
Отключить статический анализ в YAML для одной модели
В этом примере показано, как отключить статический анализ для одной модели в YAML.
models:
- name: model_with_static_analysis_off
config:
static_analysis: off
Отключить статический анализ в SQL для модели, использующей пользовательскую UDF
В этом примере показано, как отключить статический анализ для модели, использующей пользовательскую user-defined function (UDF), в SQL-файле.
{{ config(static_analysis='off') }}
select
user_id,
my_cool_udf(ip_address) as cleaned_ip
from {{ ref('my_model') }}
Соображения
- При отключении статического анализа функции расширения VS Code, зависящие от понимания SQL, будут недоступны.
- В некоторых случаях статический анализ может завершаться неудачей (например, при использовании динамического SQL или нераспознанных UDF) и может потребоваться установка
static_analysis: off. Дополнительные примеры см. в разделе Когда следует отключать статический анализ?.