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

SQL FROM

Что движет миром аналитики? Запросы и плохие графики. (Поскольку мы здесь, чтобы быть краткими, мы не будем углубляться в последнее 😉)

Первое, чему кто-то учится в SQL: как строить запрос с использованием операторов SELECT и FROM. Оператор SQL FROM является основным строительным блоком любого запроса: он позволяет определить объект схемы базы данных (таблицу/представление), из которого вы хотите выбрать данные в запросе.

В проекте dbt SQL‑модель dbt технически представляет собой единичный оператор SELECT (часто построенный с использованием CTEs или subqueries), который использует reference на вышестоящую модель данных или таблицу в выражении FROM.

Как использовать операторы SQL FROM

Любой запрос начинается с простого оператора SELECT и завершается оператором FROM:

select
order_id, --выберите ваши столбцы
customer_id,
order_date
from {{ ref('orders') }} --таблица/представление/модель, из которой вы хотите выбрать
limit 3

Ого-ого-ого! Это не тот типичный оператор FROM, который вы, вероятно, привыкли видеть!

Большинство операторов FROM вне мира dbt, например при выполнении ad‑hoc запросов напрямую в вашем хранилище данных, используют синтаксис FROM database.schema.table_name. В проектах dbt аналитические инженеры используют выражение ref, чтобы ссылаться на другие модели данных и источники. Это позволяет автоматически строить граф зависимостей и избегать жёсткого указания имён схем. Такая гибкость особенно ценна, поскольку аналитические инженеры могут разрабатывать в собственных средах разработки (схемах), не переименовывая таблицы в операторах FROM.

Этот базовый запрос выбирает три столбца из таблицы orders Jaffle Shop и возвращает три строки. Если вы выполните этот запрос в вашем хранилище данных, он вернет результат, выглядящий следующим образом:

order_idcustomer_idorder_date
112018-01-01
232018-01-02
3952018-01-04
Loading table...

В приведенном выше запросе dbt автоматически компилирует from {{ ref('orders') }} в from analytics.jaffle_shop.orders, когда запрос отправляется в хранилище данных и выполняется в производственной среде.

Если вы выбираете из нескольких таблиц или моделей, то вам понадобятся объединения или соединения, чтобы объединить несколько таблиц таким образом, который имеет смысл для ваших данных.

Синтаксис оператора FROM в Snowflake, Databricks, BigQuery и Redshift

Так же как скромный оператор SELECT является основой SQL, которая не изменяется хранилищами данных, синтаксис FROM не варьируется в них. В результате написание фактического оператора select…from в Snowflake, Databricks, Google BigQuery и Amazon Redshift будет выглядеть одинаково.

Нашли ошибку?

0
Loading