Перейти к основному содержимому

static_analysis

к сведению

Конфигурация static_analysis доступна только в dbt Fusion Engine. В dbt Core она недоступна и будет проигнорирована. Чтобы перейти на Fusion, см. начало работы Fusion.

dbt_project.yml
models:
resource-path:
+static_analysis: on | unsafe | off

Определение

Вы можете настроить, будет ли и когда 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.

Отключить статический анализ для всех моделей в пакете

В этом примере показано, как отключить статический анализ для всех моделей в пакете. Префикс + применяет конфигурацию ко всем моделям в пакете.

dbt_project.yml
name: jaffle_shop

models:
jaffle_shop:
marts:
+materialized: table

a_package_with_introspective_queries:
+static_analysis: off

Отключить статический анализ в YAML для одной модели

В этом примере показано, как отключить статический анализ для одной модели в YAML.

models/my_udf_using_model.yml
models:
- name: model_with_static_analysis_off
config:
static_analysis: off

Отключить статический анализ в SQL для модели, использующей пользовательскую UDF

В этом примере показано, как отключить статический анализ для модели, использующей пользовательскую user-defined function (UDF), в SQL-файле.

models/my_udf_using_model.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. Дополнительные примеры см. в разделе Когда следует отключать статический анализ?.

Нашли ошибку?

0
Loading