Настройка кавычек в источниках
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 здесь следует использовать database
и schema
, хотя эти настройки будут применяться к именам project
и dataset
соответственно.
Значение по умолчанию
Значения по умолчанию различаются в зависимости от базы данных.
Для большинства адаптеров кавычки по умолчанию установлены в true.
Почему? Выбор из отношений с идентификаторами в кавычках или без них одинаково прост. Кавычки позволяют использовать зарезервированные слова и специальные символы в этих идентификаторах, хотя мы рекомендуем избегать этого, если это возможно.
В Snowflake кавычки по умолчанию установлены в false.
Создание отношений с идентификаторами в кавычках также делает эти идентификаторы чувствительными к регистру. Выбор из них становится гораздо сложнее. Вы можете повторно включить кавычки для идентификаторов отношений, которые чувствительны к регистру, являются зарезервированными словами или содержат специальные символы, но мы рекомендуем избегать этого, насколько это возможно.
Пример
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
В модели ниже по потоку:
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)