Как определить тип столбца?
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.