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

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

dbt_project.yml
quoting:
database: true | false
schema: true | false
identifier: true | false

Определение

Вы можете настроить, следует ли dbt заключать в кавычки базы данных, схемы и идентификаторы при:

  • создании связей (таблиц/представлений)
  • разрешении функции ref в прямую ссылку на связь
Терминология BigQuery

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

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

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

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

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

dbt_project.yml
quoting:
database: true
schema: true
identifier: true

Примеры

Установите кавычки в false для проекта:

dbt_project.yml
quoting:
database: false
schema: false
identifier: false

dbt затем создаст связи без кавычек:

create table analytics.dbt_alice.dim_customers

Рекомендации

Snowflake

Установите все конфигурации кавычек в False. Это означает, что вы не можете использовать зарезервированные слова в качестве идентификаторов, однако обычно лучше избегать этих зарезервированных слов.

Если таблица источника Snowflake использует кавычки для базы данных, схемы или идентификатора таблицы, вы можете настроить это в файле source.yml. Обратитесь к настройке кавычек для получения дополнительной информации.

Объяснение:

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

snowflake_casing.sql
/*
Вы можете выполнить следующие запросы в своей базе данных,
чтобы понять, как работают кавычки в Snowflake.
*/

-- Это вывод примерной модели `orders.sql` с включенными кавычками
create table "analytics"."orders" as (

select 1 as id

);

/*
Эти запросы НЕ будут работать! Поскольку таблица выше была создана с кавычками,
Snowflake создал таблицу orders с нижним регистром схемы и идентификатора.

Поскольку некавыченные идентификаторы автоматически приводятся к верхнему регистру,
оба следующих запроса эквивалентны, и ни один из них не будет работать правильно.
*/

select * from analytics.orders;
select * from ANALYTICS.ORDERS;

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

select * from "analytics"."orders";


/*
Чтобы избежать этой путаницы с кавычками, вы можете отключить кавычки для схем
и идентификаторов в вашем файле dbt_project.yml. Это означает, что вы
не сможете использовать зарезервированные слова в качестве имен моделей, но вам, вероятно,
не следует этого делать в любом случае! Предполагая, что кавычки для схем и идентификаторов
отключены, следующий запрос действительно будет работать:
*/

select * from analytics.orders;

Другие хранилища

Оставьте значения по умолчанию для вашего хранилища.

0