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

quote

models/schema.yml
version: 2

models:
- name: model_name
columns:
- name: column_name
quote: true | false

Определение

Поле quote может использоваться для включения или отключения кавычек для имен столбцов.

По умолчанию

Значение по умолчанию для кавычек — false.

Объяснение

Это особенно актуально для пользователей Snowflake, где использование кавычек может быть довольно капризным.

Это свойство полезно, когда:

  • Источник имеет столбец, который необходимо заключить в кавычки для выбора, например, чтобы сохранить регистр столбца.
  • Сид был создан с quote_columns: true (документация) в Snowflake.
  • Модель использует кавычки в SQL, возможно, чтобы обойти использование зарезервированных слов.
select user_group as "group"

Без установки quote: true:

  • Тесты данных, применяемые к этому столбцу, могут завершиться неудачей из-за недопустимого SQL.
  • Документация может отображаться некорректно, например, group и "group" могут не совпадать как одно и то же имя столбца.

Пример

Добавление тестов к столбцу с кавычками в таблице источника

Это особенно актуально при использовании Snowflake:

version: 2

sources:
- name: stripe
tables:
- name: payment
columns:
- name: orderID
quote: true
tests:
- not_null

Без quote: true произойдет следующая ошибка:

$ dbt test -s source:stripe.*
Запуск с dbt=0.16.1
Найдено 7 моделей, 22 теста, 0 снимков, 0 анализов, 130 макросов, 0 операций, 0 файлов сидов, 4 источника

13:33:37 | Параллелизм: 4 потока (target='learn')
13:33:37 |
13:33:37 | 1 из 1 НАЧАЛ тест source_not_null_stripe_payment_order_id............ [RUN]
13:33:39 | 1 из 1 ОШИБКА source_not_null_stripe_payment_order_id................. [ERROR in 1.89s]
13:33:39 |
13:33:39 | Завершено выполнение 1 теста за 6.43s.

Завершено с 1 ошибкой и 0 предупреждениями:

Ошибка базы данных в тесте source_not_null_stripe_payment_order_id (models/staging/stripe/src_stripe.yml)
000904 (42000): Ошибка компиляции SQL: ошибка на строке 3 в позиции 6
недопустимый идентификатор 'ORDERID'
скомпилированный SQL в target/compiled/jaffle_shop/schema_test/source_not_null_stripe_payment_orderID.sql

Это происходит потому, что dbt пытается выполнить:

select count(*)
from raw.stripe.payment
where orderID is null

Вместо:

select count(*)
from raw.stripe.payment
where "orderID" is null

0