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

Настройка кавычек в источниках

models/<filename>.yml
version: 2

sources:
- name: jaffle_shop
quoting:
database: true | false
schema: true | false
identifier: true | false
tables:
- name: orders
quoting:
database: true | false
schema: true | false
identifier: true | false

Определение

При необходимости настройте, должен ли dbt заключать в кавычки базы данных, схемы и идентификаторы при разрешении функции {{ source() }} в прямую ссылку на отношение.

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

Терминология BigQuery

Обратите внимание, что для конфигурации кавычек в BigQuery здесь следует использовать database и schema, хотя эти настройки будут применяться к именам project и dataset соответственно.

Значение по умолчанию

Значения по умолчанию различаются в зависимости от базы данных.

Для большинства адаптеров кавычки по умолчанию установлены в true.

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

В Snowflake кавычки по умолчанию установлены в false.

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

Пример

models/<filename>.yml
version: 2

sources:
- name: jaffle_shop
database: raw
quoting:
database: true
schema: true
identifier: true

tables:
- name: orders
- name: customers
# Это переопределяет настройку кавычек `jaffle_shop`
quoting:
identifier: false


В модели ниже по потоку:

models/<filename>.yml
select
...

-- это должно быть в кавычках
from {{ source('jaffle_shop', 'orders') }}

-- здесь идентификатор должен быть без кавычек
left join {{ source('jaffle_shop', 'customers') }} using (order_id)

Это будет скомпилировано в:

select
...

-- это должно быть в кавычках
from "raw"."jaffle_shop"."orders"

-- здесь идентификатор должен быть без кавычек
left join "raw"."jaffle_shop".customers using (order_id)

0