Как определить тип столбца?
SQL-движок вашего хранилища данных автоматически присваивает тип данных каждому столбцу, будь то источник или модель. Чтобы заставить SQL обр абатывать столбцы как определенный тип данных, используйте функции cast
:
select
cast(order_id as integer),
cast(order_price as double(6,2)) -- более общий способ преобразования типа
from {{ ref('stg_orders') }}
Многие современные теперь поддерживают синтаксис ::
как сокращение для cast( as )
.
select
order_id::integer,
order_price::numeric(6,2) -- вы можете встретить это в Redshift, Snowflake и Postgres
from {{ ref('stg_orders') }}
Будьте осторожны, чтение данных и их приведение может не всегда давать ожидаемые результаты, и у каждого хранилища есть свои особенности. Некоторые приведения могут быть недопустимы (например, в Bigquery нельзя привести значение типа boolean
к float64
). Приведения, которые связаны с потерей точности (например, float
к integer
), полагаются на ваш SQL-движок, чтобы сделать наилучшее предположение или следовать определенной схеме, не используемой конкурентными сервисами. При выполнении приведений важно быть знакомым с правилами приведения вашего хранилища, чтобы правильно обозначать поля в ваших источниках и моделях.
К счастью, популярные сервисы баз данных, как правило, имеют документацию по типам данных--Redshift и Bigquery.