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

В каком SQL-диалекте писать мои модели? Или какой SQL-диалект использует dbt?

dbt может казаться магией, но на самом деле это не так. Под капотом он выполняет SQL в вашем собственном хранилище данных — ваши данные не обрабатываются за пределами вашего хранилища.

Таким образом, ваши модели должны использовать SQL-диалект вашей собственной базы данных. Затем, когда dbt оборачивает ваши select выражения в соответствующие или , он будет использовать правильный DML для вашего хранилища — вся эта логика уже заложена в dbt.

Вы можете найти больше информации о базах данных, платформах и движках запросов, которые поддерживает dbt, в документации Поддерживаемые платформы данных.

Хотите углубиться в то, как это работает? Рассмотрим фрагмент SQL, который работает на каждом хранилище:

models/test_model.sql
select 1 as my_column

Чтобы заменить существующую , вот иллюстративный пример SQL, который dbt выполнит на разных хранилищах (фактический SQL может быть гораздо сложнее этого!)

-- на redshift нельзя создать или заменить, поэтому используйте транзакцию для выполнения этого атомарно

begin;

create table "dbt_alice"."test_model__dbt_tmp" as (
select 1 as my_column
);

alter table "dbt_alice"."test_model" rename to "test_model__dbt_backup";

alter table "dbt_alice"."test_model__dbt_tmp" rename to "test_model"

commit;

begin;

drop table if exists "dbt_alice"."test_model__dbt_backup" cascade;

commit;
0