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

SQL FROM

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

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

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

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

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

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

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

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

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

order_idcustomer_idorder_date
112018-01-01
232018-01-02
3952018-01-04

В приведенном выше запросе 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