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

Как определить тип столбца?

SQL-движок вашего хранилища данных автоматически присваивает тип данных каждому столбцу, будь то источник или модель. Чтобы заставить SQL обрабатывать столбцы как определенный тип данных, используйте функции cast:

models/order_prices.sql
select
cast(order_id as integer),
cast(order_price as double(6,2)) -- более общий способ преобразования типа
from {{ ref('stg_orders') }}

Многие современные теперь поддерживают синтаксис :: как сокращение для cast( as ).

models/orders_prices_colon_syntax.sql
select
order_id::integer,
order_price::numeric(6,2) -- вы можете встретить это в Redshift, Snowflake и Postgres
from {{ ref('stg_orders') }}

Будьте осторожны, чтение данных и их приведение может не всегда давать ожидаемые результаты, и у каждого хранилища есть свои особенности. Некоторые приведения могут быть недопустимы (например, в Bigquery нельзя привести значение типа boolean к float64). Приведения, которые связаны с потерей точности (например, float к integer), полагаются на ваш SQL-движок, чтобы сделать наилучшее предположение или следовать определенной схеме, не используемой конкурентными сервисами. При выполнении приведений важно быть знакомым с правилами приведения вашего хранилища, чтобы правильно обозначать поля в ваших источниках и моделях.

К счастью, популярные сервисы баз данных, как правило, имеют документацию по типам данных--Redshift и Bigquery.

0