āĻā§āĻ¨ āĻ¨ā§āĻ¤āĻŋāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻāĻĻāĻ°ā§āĻļ āĻĄā§āĻāĻž āĻā§āĻĻāĻžāĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ?
āĻŦāĻ¯āĻŧāĻ˛āĻžāĻ°āĻĒā§āĻ˛ā§āĻ āĻā§āĻĄā§āĻ° āĻ āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧāĻŋāĻ āĻŽā§āĻ˛ā§āĻ¯ āĻāĻŦāĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĻ° āĻāĻĒāĻ° āĻĢā§āĻāĻžāĻ¸ āĻāĻ°ā§āĻ¨āĨ¤ āĻā§āĻĄāĻŦā§āĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§ DWH āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž: āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ, āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§āĻāĻ¨āĻž, āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻŦāĻ CIāĨ¤ āĻŽāĻĄā§āĻ˛āĻžāĻ°āĻŋāĻāĻŋ, āĻāĻā§āĻ¸āĻā§āĻ¨āĻ¸āĻŋāĻŦāĻŋāĻ˛āĻŋāĻāĻŋ, āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻāĻŦāĻ āĻāĻŽāĻŋāĻāĻ¨āĻŋāĻāĻŋāĨ¤ āĻŦāĻ¨ā§āĻ§ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻāĻŦāĻ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻāĻŋāĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨ (āĻĄā§āĻāĻž āĻ˛āĻžāĻāĻ¨ā§āĻ)āĨ¤
āĻāĻ āĻ¸āĻŦ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻ°āĻ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻāĻžāĻŦā§ āĻāĻŦāĻ āĻŦāĻŋāĻ āĻĄā§āĻāĻž āĻāĻŦāĻ āĻ
ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻŋāĻāĻŋāĻā§āĻ¸ āĻāĻā§āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§ DBT-āĻāĻ° āĻā§āĻŽāĻŋāĻāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ - āĻā§āĻ¯āĻžāĻā§āĻ° āĻ
āĻ§ā§āĻ¨ā§ āĻ¸ā§āĻŦāĻžāĻāĻ¤āĻŽāĨ¤
āĻ¸āĻŦāĻžāĻ āĻšā§āĻ¯āĻžāĻ˛ā§
āĻāĻ°ā§āĻā§āĻŽāĻŋ āĻā§āĻāĻŋāĻ° āĻ¯ā§āĻāĻžāĻ¯ā§āĻā§ āĻāĻā§āĻ¨āĨ¤ 5 āĻŦāĻāĻ°ā§āĻ°āĻ āĻŦā§āĻļāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻ§āĻ°ā§ āĻāĻŽāĻŋ āĻĄā§āĻāĻž āĻā§āĻĻāĻžāĻŽāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻāĻŋ, ETL/ELT āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻāĻŋ, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻĄā§āĻāĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻŦāĻ āĻāĻŋāĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨āĨ¤ āĻāĻŽāĻŋ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§ āĻāĻžāĻ āĻāĻ°āĻāĻŋ
āĻ¸āĻāĻā§āĻˇāĻŋāĻĒā§āĻ¤āĻ¸āĻžāĻ°
DBT āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻšāĻ˛ āĻāĻĻā§āĻ¯āĻā§āĻˇāĻ° ELT (Extract - Transform - Load) āĻāĻ° T āĻ āĻā§āĻˇāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĨ¤
BigQuery, Redshift, Snowflake-āĻāĻ° āĻŽāĻ¤ā§ āĻā§āĻĒāĻžāĻĻāĻ¨āĻļā§āĻ˛ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ˛āĻ¯ā§āĻā§āĻ¯ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖāĻžāĻ¤ā§āĻŽāĻ āĻĄā§āĻāĻžāĻŦā§āĻ¸āĻā§āĻ˛āĻŋāĻ° āĻāĻŦāĻŋāĻ°ā§āĻāĻžāĻŦā§āĻ° āĻ¸āĻžāĻĨā§, āĻĄā§āĻāĻž āĻāĻ¯āĻŧāĻžāĻ°āĻšāĻžāĻāĻ¸ā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻžāĻ° āĻā§āĻ¨āĻ āĻŽāĻžāĻ¨ā§ āĻ¨ā§āĻā§ˇ
DBT āĻā§āĻ¸ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°ā§ āĻ¨āĻž, āĻ¤āĻŦā§ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻ¸ā§āĻā§āĻ°ā§āĻā§ (āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻŦāĻž āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ āĻ¸āĻā§āĻāĻ¯āĻŧāĻ¸ā§āĻĨāĻžāĻ¨) āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻž āĻĄā§āĻāĻž āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻ¸ā§āĻ¯ā§āĻ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤
āĻĄāĻŋāĻŦāĻŋāĻāĻŋ-āĻ° āĻŽā§āĻ˛ āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ āĻšāĻ˛ āĻā§āĻĄāĻāĻŋ āĻ¨ā§āĻāĻ¯āĻŧāĻž, āĻāĻāĻŋāĻā§ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛-āĻ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž, āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋāĻ¤ā§ āĻ¸āĻ āĻŋāĻ āĻā§āĻ°āĻŽ āĻ
āĻ¨ā§āĻ¸āĻžāĻ°ā§ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĨ¤
āĻĄāĻŋāĻŦāĻŋāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻāĻžāĻ āĻžāĻŽā§
āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° 2 āĻ§āĻ°āĻ¨ā§āĻ° āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻāĻŦāĻ āĻĢāĻžāĻāĻ˛ āĻ°āĻ¯āĻŧā§āĻā§:
- āĻŽāĻĄā§āĻ˛ (.sql) - āĻāĻāĻāĻŋ SELECT āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻž āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ°ā§āĻ° āĻāĻāĻ
- āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ (.yml) - āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ, āĻ¸ā§āĻāĻŋāĻāĻ¸, āĻĒāĻ°ā§āĻā§āĻˇāĻž, āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨
āĻŽā§āĻ˛āĻŋāĻ āĻ¸ā§āĻ¤āĻ°ā§, āĻāĻžāĻāĻāĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ āĻšāĻ¯āĻŧ:
- āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¯ā§āĻā§āĻ¨ā§ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ IDE-āĻ¤ā§ āĻŽāĻĄā§āĻ˛ āĻā§āĻĄ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°ā§
- CLI āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻŽāĻĄā§āĻ˛āĻā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ, DBT āĻŽāĻĄā§āĻ˛āĻā§āĻ˛āĻŋāĻ° āĻā§āĻĄ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛-āĻ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°ā§
- āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻā§āĻĄ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻā§āĻ°āĻŽāĻžāĻ¨ā§āĻ¸āĻžāĻ°ā§ (āĻā§āĻ°āĻžāĻĢ) āĻ¸ā§āĻā§āĻ°ā§āĻā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ
CLI āĻĨā§āĻā§ āĻ˛āĻā§āĻ āĻāĻ°āĻž āĻĻā§āĻāĻ¤ā§ āĻāĻ°āĻāĻŽ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§:
āĻ¸āĻŦāĻāĻŋāĻā§ SELECT
āĻāĻāĻŋ āĻĄā§āĻāĻž āĻŦāĻŋāĻ˛ā§āĻĄ āĻā§āĻ˛ āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§āĻ° āĻāĻāĻāĻŋ āĻšāĻ¤ā§āĻ¯āĻžāĻāĻžāĻ°ā§ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĨ¤ āĻ āĻ¨ā§āĻ¯ āĻāĻĨāĻžāĻ¯āĻŧ, āĻĄāĻŋāĻŦāĻŋāĻāĻŋ āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋāĻ¤ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻļā§āĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻĄāĻā§ āĻŦāĻŋāĻŽā§āĻ°ā§āĻ¤ āĻāĻ°ā§ āĻĻā§āĻ¯āĻŧ (āĻ¤ā§āĻ°āĻŋ, āĻĸā§āĻāĻžāĻ¨ā§, āĻāĻĒāĻĄā§āĻ, āĻŽā§āĻā§āĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨, āĻā§āĻ°āĻžāĻ¨ā§āĻ, ... āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĨā§āĻā§ āĻāĻŋāĻ¨ā§āĻ¨āĻ¤āĻž)āĨ¤
āĻ¯ā§ āĻā§āĻ¨ā§ āĻŽāĻĄā§āĻ˛ āĻāĻāĻāĻŋ āĻāĻāĻ āĻ¸āĻŋāĻ˛ā§āĻā§āĻ āĻā§āĻ¯āĻŧā§āĻ°āĻŋ āĻ˛āĻŋāĻāĻ¤ā§ āĻŦā§āĻāĻžāĻ¯āĻŧ āĻ¯āĻž āĻĢāĻ˛āĻžāĻĢāĻ˛āĻā§āĻ¤ āĻĄā§āĻāĻž āĻ¸ā§āĻāĻā§ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°ā§āĨ¤
āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§, āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ¯ā§āĻā§āĻ¤āĻŋ āĻŽāĻžāĻ˛ā§āĻāĻŋ-āĻ˛ā§āĻā§āĻ˛ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻŽāĻĄā§āĻ˛ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻāĻāĻŋ āĻŽāĻĄā§āĻ˛ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¯āĻž āĻ āĻ°ā§āĻĄāĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻļā§āĻā§āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦā§ (f_orders):
{% set payment_methods = ['credit_card', 'coupon', 'bank_transfer', 'gift_card'] %}
with orders as (
select * from {{ ref('stg_orders') }}
),
order_payments as (
select * from {{ ref('order_payments') }}
),
final as (
select
orders.order_id,
orders.customer_id,
orders.order_date,
orders.status,
{% for payment_method in payment_methods -%}
order_payments.{{payment_method}}_amount,
{% endfor -%}
order_payments.total_amount as amount
from orders
left join order_payments using (order_id)
)
select * from final
āĻāĻŽāĻ°āĻž āĻāĻāĻžāĻ¨ā§ āĻāĻŋ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ?
āĻĒā§āĻ°āĻĨāĻŽ: āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ CTE (āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻā§āĻŦāĻŋāĻ˛ āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻļāĻ¨) - āĻā§āĻĄāĻāĻŋ āĻ¸āĻāĻāĻ āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻŦā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻ¯ā§āĻāĻŋāĻ¤ā§ āĻĒā§āĻ°āĻā§āĻ° āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻāĻŦāĻ āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧāĻŋāĻ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻ°āĻ¯āĻŧā§āĻā§
āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ: āĻŽāĻĄā§āĻ˛ āĻā§āĻĄ SQL āĻāĻŦāĻ āĻāĻžāĻˇāĻžāĻ° āĻŽāĻŋāĻļā§āĻ°āĻŖ
āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻāĻāĻāĻŋ āĻ˛ā§āĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻļāĻ¨ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ āĻ°ā§āĻĨāĻĒā§āĻ°āĻĻāĻžāĻ¨ā§āĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻ¸ā§āĻ. āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¸ā§āĻ¤ā§āĻ° - āĻā§āĻĄā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŽāĻĄā§āĻ˛ā§ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž:
- āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻ¸āĻŽāĻ¯āĻŧā§ āĻ¸ā§āĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻā§āĻ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ°ā§ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻŦā§ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻŦāĻž āĻ¸ā§āĻā§āĻ°ā§āĻā§āĻ° āĻāĻŋāĻāĻ¤ā§
- āĻ¸ā§āĻ¤ā§āĻ° āĻāĻĒāĻ¨āĻžāĻā§ āĻŽāĻĄā§āĻ˛āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻā§āĻ°āĻžāĻĢ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ
āĻāĻāĻž āĻāĻŋāĻ˛
- If / else āĻ¸ā§āĻā§āĻāĻŽā§āĻ¨ā§āĻ - āĻļāĻžāĻāĻž āĻŦāĻŋāĻŦā§āĻ¤āĻŋ
- loops - loops āĻāĻ¨ā§āĻ¯
- āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛
- āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§ - āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž
āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻāĻ°āĻŖ: āĻā§āĻŦāĻŋāĻ˛, āĻāĻŋāĻ, āĻāĻ¨āĻā§āĻ°āĻŋāĻŽā§āĻ¨ā§āĻāĻžāĻ˛
āĻŽā§āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨ āĻ¸ā§āĻā§āĻ°ā§āĻ¯āĻžāĻā§āĻāĻŋ āĻšāĻ˛ āĻāĻāĻāĻŋ āĻĒāĻ¨ā§āĻĨāĻž āĻ¯āĻžāĻ° āĻĢāĻ˛ā§ āĻŽāĻĄā§āĻ˛ āĻĄā§āĻāĻžāĻ° āĻ¸ā§āĻ āĻ¸ā§āĻā§āĻ°ā§āĻā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻŽā§āĻ˛āĻŋāĻ āĻĒāĻĻā§, āĻāĻāĻŋ āĻšāĻ˛:
- āĻā§āĻŦāĻŋāĻ˛ - āĻ¸ā§āĻā§āĻ°ā§āĻā§āĻ° āĻāĻāĻāĻŋ āĻļāĻžāĻ°ā§āĻ°āĻŋāĻ āĻā§āĻŦāĻŋāĻ˛
- āĻāĻŋāĻ - āĻāĻŋāĻ, āĻ¸ā§āĻā§āĻ°ā§āĻā§āĻ° āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻā§āĻŦāĻŋāĻ˛
āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ āĻŦāĻ¸ā§āĻ¤ā§āĻāĻ¤ā§āĻāĻ°āĻŖ āĻā§āĻļāĻ˛ āĻ°āĻ¯āĻŧā§āĻā§:
- āĻāĻ¨āĻā§āĻ°āĻŋāĻŽā§āĻ¨ā§āĻāĻžāĻ˛ - āĻāĻ¨āĻā§āĻ°āĻŋāĻŽā§āĻ¨ā§āĻāĻžāĻ˛ āĻ˛ā§āĻĄāĻŋāĻ (āĻŦāĻĄāĻŧ āĻĢā§āĻ¯āĻžāĻā§āĻ āĻā§āĻŦāĻŋāĻ˛); āĻ¨āĻ¤ā§āĻ¨ āĻ˛āĻžāĻāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤āĻā§āĻ˛āĻŋ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻŽā§āĻā§ āĻĢā§āĻ˛āĻžāĻā§āĻ˛āĻŋ āĻ¸āĻžāĻĢ āĻāĻ°āĻž āĻšāĻ¯āĻŧ
- āĻā§āĻˇāĻŖāĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ - āĻŽāĻĄā§āĻ˛āĻāĻŋ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻ¤āĻŦā§ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŽāĻĄā§āĻ˛āĻā§āĻ˛āĻŋāĻ¤ā§ CTE āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ āĻāĻļāĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§
- āĻ āĻ¨ā§āĻ¯ āĻā§āĻ¨ āĻā§āĻļāĻ˛ āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻā§āĻā§ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻŦāĻ¸ā§āĻ¤ā§āĻāĻ¤ā§āĻāĻ°āĻŖ āĻā§āĻļāĻ˛ āĻāĻžāĻĄāĻŧāĻžāĻ, āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ˛ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻ¨ā§āĻ° āĻ¸ā§āĻ¯ā§āĻ āĻ°āĻ¯āĻŧā§āĻā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ:
- āĻ¤ā§āĻˇāĻžāĻ°āĻāĻŖāĻž: āĻā§āĻˇāĻŖāĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻā§āĻŦāĻŋāĻ˛, āĻāĻāĻ°āĻŖ āĻŽāĻžāĻ°ā§āĻ āĻāĻ°āĻž, āĻā§āĻŦāĻŋāĻ˛ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°āĻŋāĻ, āĻ āĻ¨ā§āĻĻāĻžāĻ¨ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻž, āĻ¸ā§āĻ°āĻā§āĻˇāĻŋāĻ¤ āĻĻā§āĻļā§āĻ¯
- āĻ˛ā§āĻšāĻŋāĻ¤ āĻ¸āĻ°āĻŖ: āĻĄāĻŋāĻ¸ā§āĻāĻāĻŋ, āĻ¸āĻ°ā§āĻāĻāĻŋ (āĻāĻ¨ā§āĻāĻžāĻ°āĻ˛āĻŋāĻāĻĄ, āĻāĻŽā§āĻĒāĻžāĻāĻ¨ā§āĻĄ), āĻ˛ā§āĻ āĻŦāĻžāĻāĻ¨ā§āĻĄāĻŋāĻ āĻāĻŋāĻ
- BigQuery- āĻ¤ā§: āĻā§āĻŦāĻŋāĻ˛ āĻĒāĻžāĻ°ā§āĻāĻŋāĻļāĻ¨ āĻāĻŦāĻ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°āĻŋāĻ, āĻŽāĻžāĻ°ā§āĻ āĻāĻāĻ°āĻŖ, KMS āĻāĻ¨āĻā§āĻ°āĻŋāĻĒāĻļāĻ¨, āĻ˛ā§āĻŦā§āĻ˛ āĻāĻŦāĻ āĻā§āĻ¯āĻžāĻ
- āĻ¸ā§āĻĢā§āĻ˛āĻŋāĻā§āĻ: āĻĢāĻžāĻāĻ˛ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ (parquet, csv, json, orc, delta), partition_by, clustered_by, buckets, incremental_strategy
āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛āĻā§āĻ˛āĻŋ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤:
- āĻĒā§āĻ¸ā§āĻāĻā§āĻ°āĻŋāĻ¸
- āĻ˛ā§āĻšāĻŋāĻ¤ āĻ¸āĻ°āĻŖ
- BigQuery- āĻ¤ā§
- āĻ¤ā§āĻˇāĻžāĻ°āĻāĻŖāĻž
- āĻĒā§āĻ°ā§āĻ¸ā§āĻā§ (āĻāĻāĻļāĻŋāĻāĻāĻžāĻŦā§)
- āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ (āĻāĻāĻļāĻŋāĻ)
- āĻŽāĻžāĻāĻā§āĻ°ā§āĻ¸āĻĢāĻ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° (āĻāĻŽāĻŋāĻāĻ¨āĻŋāĻāĻŋ āĻ ā§āĻ¯āĻžāĻĄāĻžāĻĒā§āĻāĻžāĻ°)
āĻāĻŽāĻžāĻĻā§āĻ° āĻŽāĻĄā§āĻ˛ āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°āĻž āĻ¯āĻžāĻ:
- āĻāĻ° āĻĢāĻŋāĻ˛āĻŋāĻ āĻāĻ¨āĻā§āĻ°āĻŋāĻŽā§āĻ¨ā§āĻāĻžāĻ˛ āĻāĻ°āĻž āĻ¯āĻžāĻ (āĻŦā§āĻĻā§āĻ§āĻŋāĻŽā§āĻ˛āĻ)
- āĻ°ā§āĻĄāĻļāĻŋāĻĢā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻāĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻāĻŦāĻ āĻŦāĻžāĻāĻžāĻ āĻā§ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨
-- ĐĐžĐŊŅиĐŗŅŅĐ°ŅиŅ ĐŧОдĐĩĐģи:
-- ĐĐŊĐēŅĐĩĐŧĐĩĐŊŅĐ°ĐģŅĐŊĐžĐĩ ĐŊĐ°ĐŋĐžĐģĐŊĐĩĐŊиĐĩ, ŅĐŊиĐēĐ°ĐģŅĐŊŅĐš ĐēĐģŅŅ Đ´ĐģŅ ОйĐŊОвĐģĐĩĐŊиŅ СаĐŋиŅĐĩĐš (unique_key)
-- ĐĐģŅŅ ŅĐĩĐŗĐŧĐĩĐŊŅĐ°Ņии (dist), ĐēĐģŅŅ ŅĐžŅŅиŅОвĐēи (sort)
{{
config(
materialized='incremental',
unique_key='order_id',
dist="customer_id",
sort="order_date"
)
}}
{% set payment_methods = ['credit_card', 'coupon', 'bank_transfer', 'gift_card'] %}
with orders as (
select * from {{ ref('stg_orders') }}
where 1=1
{% if is_incremental() -%}
-- ĐŅĐžŅ ŅиĐģŅŅŅ ĐąŅĐ´ĐĩŅ ĐŋŅиĐŧĐĩĐŊĐĩĐŊ ŅĐžĐģŅĐēĐž Đ´ĐģŅ иĐŊĐēŅĐĩĐŧĐĩĐŊŅĐ°ĐģŅĐŊĐžĐŗĐž СаĐŋŅŅĐēĐ°
and order_date >= (select max(order_date) from {{ this }})
{%- endif %}
),
order_payments as (
select * from {{ ref('order_payments') }}
),
final as (
select
orders.order_id,
orders.customer_id,
orders.order_date,
orders.status,
{% for payment_method in payment_methods -%}
order_payments.{{payment_method}}_amount,
{% endfor -%}
order_payments.total_amount as amount
from orders
left join order_payments using (order_id)
)
select * from final
āĻŽāĻĄā§āĻ˛ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻā§āĻ°āĻžāĻĢ
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻāĻžāĻāĨ¤ āĻāĻāĻŋāĻ āĻĄāĻŋāĻāĻāĻŋ (āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻ¤ āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻā§āĻ˛āĻŋāĻ āĻā§āĻ°āĻžāĻĢ - āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻ¤ āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻā§āĻ˛āĻŋāĻ āĻā§āĻ°āĻžāĻĢ)āĨ¤
āĻĄāĻŋāĻŦāĻŋāĻāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻā§āĻā§āĻ āĻŽāĻĄā§āĻ˛ā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻā§āĻ°āĻžāĻĢ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§, āĻ āĻĨāĻŦāĻž āĻŦāĻ°āĻ āĻ°ā§āĻĢ() āĻŽāĻĄā§āĻ˛ā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŽāĻĄā§āĻ˛ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ˛āĻŋāĻā§āĻ āĻāĻ°ā§āĨ¤ āĻāĻāĻāĻŋ āĻā§āĻ°āĻžāĻĢ āĻĨāĻžāĻāĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻŋāĻ¨āĻŋāĻ¸āĻā§āĻ˛āĻŋ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ:
- āĻ¸āĻ āĻŋāĻ āĻā§āĻ°āĻŽ āĻŽāĻĄā§āĻ˛ āĻāĻ˛āĻŽāĻžāĻ¨
- āĻļā§āĻā§āĻ¸ āĻāĻ āĻ¨ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛āĻāĻ°āĻŖ
- āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻāĻžāĻ°ā§ āĻ¸āĻžāĻŦāĻā§āĻ°āĻžāĻĢ āĻāĻ˛āĻā§ā§ˇ
āĻā§āĻ°āĻžāĻĢ āĻāĻŋāĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨ āĻāĻĻāĻžāĻšāĻ°āĻŖ:
āĻā§āĻ°āĻžāĻĢā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¨ā§āĻĄ āĻāĻāĻāĻŋ āĻŽāĻĄā§āĻ˛, āĻā§āĻ°āĻžāĻĢā§āĻ° āĻĒā§āĻ°āĻžāĻ¨ā§āĻ¤āĻā§āĻ˛āĻŋ āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻļāĻ¨ āĻ°ā§āĻĢ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤
āĻĄā§āĻāĻž āĻā§āĻŖāĻŽāĻžāĻ¨ āĻāĻŦāĻ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨
āĻ¨āĻŋāĻā§āĻ°āĻžāĻ āĻŽāĻĄā§āĻ˛āĻā§āĻ˛āĻŋ āĻāĻ āĻ¨ā§āĻ° āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ, DBT āĻāĻĒāĻ¨āĻžāĻā§ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻā§āĻ¤ āĻĄā§āĻāĻž āĻ¸ā§āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻ āĻ¨ā§āĻŽāĻžāĻ¨ (āĻ āĻ¨ā§āĻŽāĻžāĻ¨) āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ, āĻ¯ā§āĻŽāĻ¨:
- āĻ¨āĻžāĻ˛ āĻ¨āĻž
- āĻ āĻ¨āĻ¨ā§āĻ¯
- āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°āĻŋāĻāĻŋ - āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°āĻŋāĻāĻŋ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ āĻ°ā§āĻĄāĻžāĻ° āĻā§āĻŦāĻŋāĻ˛ā§ āĻā§āĻ°āĻžāĻšāĻ_āĻāĻāĻĄāĻŋ āĻā§āĻ°āĻžāĻšāĻāĻĻā§āĻ° āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻāĻĄāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻŋāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧ)
- āĻŦā§āĻ§ āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻŋāĻ˛ā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻžā§ˇ
āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻā§āĻ° āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻā§āĻ˛āĻŋ (āĻāĻžāĻ¸ā§āĻāĻŽ āĻĄā§āĻāĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž) āĻ¯ā§āĻ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ, āĻ¯ā§āĻŽāĻ¨, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻ āĻĻāĻŋāĻ¨, āĻāĻ āĻ¸āĻĒā§āĻ¤āĻžāĻš, āĻāĻ āĻŽāĻžāĻ¸ āĻāĻā§āĻ° āĻ¸ā§āĻāĻāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ°āĻžāĻāĻ¸ā§āĻŦā§āĻ° % āĻŦāĻŋāĻā§āĻ¯ā§āĻ¤āĻŋāĨ¤ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻā§āĻ¯āĻŧā§āĻ°āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĒā§āĻ°āĻŖāĻ¯āĻŧāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻā§āĻ¨ āĻ āĻ¨ā§āĻŽāĻžāĻ¨ āĻāĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻšāĻ¯āĻŧā§ āĻāĻ āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻāĻāĻžāĻŦā§, āĻ āĻŦāĻžāĻā§āĻāĻŋāĻ¤ āĻŦāĻŋāĻā§āĻ¯ā§āĻ¤āĻŋ āĻāĻŦāĻ āĻĄā§āĻāĻžāĻ¤ā§ āĻ¤ā§āĻ°ā§āĻāĻŋāĻā§āĻ˛āĻŋ āĻā§āĻĻāĻžāĻŽā§āĻ° āĻ¸ā§āĻā§āĻ°āĻĢā§āĻ°āĻ¨ā§āĻā§ āĻ§āĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ā§āĻ° āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§āĻā§āĻˇāĻŋāĻ¤ā§, āĻĄāĻŋāĻŦāĻŋāĻāĻŋ āĻŽāĻĄā§āĻ˛ āĻāĻŦāĻ āĻāĻŽāĻ¨āĻāĻŋ āĻ ā§āĻ¯āĻžāĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻ āĻ˛ā§āĻā§āĻ˛ā§ āĻŽā§āĻāĻžāĻĄā§āĻāĻž āĻāĻŦāĻ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ¯ā§āĻ, āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻāĻŦāĻ āĻŦāĻŋāĻ¤āĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°ā§āĨ¤
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻ¸ā§āĻ¤āĻ°ā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻŦāĻ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻāĻāĻ°āĻāĻŽ āĻĻā§āĻāĻžāĻā§āĻā§:
- name: fct_orders
description: This table has basic information about orders, as well as some derived facts based on payments
columns:
- name: order_id
tests:
- unique # ĐŋŅОвĐĩŅĐēĐ° ĐŊĐ° ŅĐŊиĐēĐ°ĐģŅĐŊĐžŅŅŅ СĐŊĐ°ŅĐĩĐŊиК
- not_null # ĐŋŅОвĐĩŅĐēĐ° ĐŊĐ° ĐŊĐ°ĐģиŅиĐĩ null
description: This is a unique identifier for an order
- name: customer_id
description: Foreign key to the customers table
tests:
- not_null
- relationships: # ĐŋŅОвĐĩŅĐēĐ° ŅŅŅĐģĐžŅĐŊОК ŅĐĩĐģĐžŅŅĐŊĐžŅŅи
to: ref('dim_customers')
field: customer_id
- name: order_date
description: Date (UTC) that the order was placed
- name: status
description: '{{ doc("orders_status") }}'
tests:
- accepted_values: # ĐŋŅОвĐĩŅĐēĐ° ĐŊĐ° Đ´ĐžĐŋŅŅŅиĐŧŅĐĩ СĐŊĐ°ŅĐĩĐŊиŅ
values: ['placed', 'shipped', 'completed', 'return_pending', 'returned']
āĻāĻŦāĻ āĻāĻāĻžāĻ¨ā§ āĻāĻ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨āĻāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻā§ āĻā§āĻŽāĻ¨ āĻĻā§āĻāĻžāĻā§āĻā§:
āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§ āĻāĻŦāĻ āĻŽāĻĄāĻŋāĻāĻ˛
DBT-āĻāĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻ āĻšāĻāĻ¯āĻŧāĻž āĻ¨āĻ¯āĻŧ, āĻŦāĻ°āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻ¤āĻžāĻĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻāĻ āĻŽāĻĄāĻŋāĻāĻ˛āĻā§āĻ˛āĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻļāĻā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§ āĻāĻŦāĻ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯-āĻ¸āĻŽā§āĻĻā§āĻ§ āĻāĻĒāĻžāĻ¯āĻŧ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°āĻžāĨ¤
āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§ āĻšāĻ˛ āĻāĻ āĻ¨ āĻāĻŦāĻ āĻ āĻāĻŋāĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻ° āĻ¸āĻāĻā§āĻ°āĻš āĻ¯āĻžāĻā§ āĻŽāĻĄā§āĻ˛ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĢāĻžāĻāĻļāĻ¨ āĻŦāĻ˛āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§ āĻāĻĒāĻ¨āĻžāĻā§ DRY (āĻ¨āĻŋāĻā§āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻž) āĻāĻā§āĻāĻŋāĻ¨āĻŋāĻ¯āĻŧāĻžāĻ°āĻŋāĻ āĻ¨ā§āĻ¤āĻŋ āĻ āĻ¨ā§āĻ¸āĻžāĻ°ā§ āĻŽāĻĄā§āĻ˛ āĻāĻŦāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ SQL āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧāĨ¤
āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§ āĻāĻĻāĻžāĻšāĻ°āĻŖ:
{% macro rename_category(column_name) %}
case
when {{ column_name }} ilike '%osx%' then 'osx'
when {{ column_name }} ilike '%android%' then 'android'
when {{ column_name }} ilike '%ios%' then 'ios'
else 'other'
end as renamed_product
{% endmacro %}
āĻāĻŦāĻ āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°:
{% set column_name = 'product' %}
select
product,
{{ rename_category(column_name) }} -- вŅСОв ĐŧĐ°ĐēŅĐžŅĐ°
from my_table
āĻĄāĻŋāĻŦāĻŋāĻāĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ° āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ¸ā§ āĻ¯āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻĒā§āĻĨāĻ āĻŽāĻĄāĻŋāĻāĻ˛ āĻāĻŦāĻ āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻŦāĻ āĻĒā§āĻ¨āĻāĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧāĨ¤
āĻāĻ° āĻ āĻ°ā§āĻĨ āĻšāĻ˛ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻŦāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻ¯ā§āĻŽāĻ¨:
dbt_utils : āĻ¤āĻžāĻ°āĻŋāĻ/āĻ¸āĻŽāĻ¯āĻŧ, āĻ¸āĻžāĻ°ā§āĻā§āĻ āĻā§, āĻ¸ā§āĻāĻŋāĻŽāĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž, āĻĒāĻŋāĻāĻ/āĻāĻ¨āĻĒāĻŋāĻāĻ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°ā§āĻ¨- āĻ¯ā§āĻŽāĻ¨ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻļā§āĻā§āĻ¸ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻ
Snowplow иāĻĄā§āĻ°āĻž - āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ
āĻ˛ā§āĻšāĻŋāĻ¤ āĻ¸āĻ°āĻŖ āĻ˛āĻāĻŋāĻ - DBT āĻāĻžāĻ āĻ˛āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŽāĻĄāĻŋāĻāĻ˛
āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻāĻžāĻ¨ā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§
āĻāĻŽāĻ¨āĻāĻŋ āĻāĻ°ā§ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻŋ āĻāĻ°āĻ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻāĻŦāĻ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻŦ āĻ¯āĻž āĻāĻŽāĻŋ āĻāĻŦāĻ āĻĻāĻ˛ āĻĄā§āĻāĻž āĻā§āĻĻāĻžāĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ
āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨ āĻāĻ¨āĻāĻžāĻ¯āĻŧāĻ°āĻ¨āĻŽā§āĻ¨ā§āĻā§āĻ° āĻŦāĻŋāĻā§āĻā§āĻĻ DEV - TEST - PROD
āĻāĻŽāĻ¨āĻāĻŋ āĻāĻāĻ DWH āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ (āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸ā§āĻāĻŋāĻŽā§āĻ° āĻ āĻ§ā§āĻ¨ā§)āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ āĻāĻŋāĻŦā§āĻ¯āĻā§āĻ¤āĻŋ āĻ¸āĻš:
with source as (
select * from {{ source('salesforce', 'users') }}
where 1=1
{%- if target.name in ['dev', 'test', 'ci'] -%}
where timestamp >= dateadd(day, -3, current_date)
{%- endif -%}
)
āĻāĻ āĻā§āĻĄāĻāĻŋ āĻāĻā§āĻˇāĻ°āĻŋāĻāĻāĻžāĻŦā§ āĻŦāĻ˛ā§: āĻĒāĻ°āĻŋāĻŦā§āĻļā§āĻ° āĻāĻ¨ā§āĻ¯ dev, test, ci āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ¤ 3 āĻĻāĻŋāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĄā§āĻāĻž āĻ¨āĻŋāĻ¨ āĻāĻŦāĻ āĻāĻ° āĻŦā§āĻļāĻŋ āĻ¨āĻ¯āĻŧāĨ¤ āĻ āĻ°ā§āĻĨāĻžā§, āĻāĻ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻĻā§āĻĄāĻŧāĻžāĻ¨ā§ āĻ āĻ¨ā§āĻ āĻĻā§āĻ°ā§āĻ¤ āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻŽ āĻ¸āĻŽā§āĻĒāĻĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§āĨ¤ āĻĒāĻ°āĻŋāĻŦā§āĻļā§āĻ° āĻāĻĒāĻ° āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻšāĻ˛ā§ āĻļāĻā§āĻā§ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻļāĻ°ā§āĻ¤ āĻāĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻšāĻŦā§.
āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻāĻ˛āĻžāĻŽ āĻāĻ¨āĻā§āĻĄāĻŋāĻ āĻ¸āĻš āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻāĻ°āĻŖ
Redshift āĻšāĻ˛ āĻāĻāĻāĻŋ āĻāĻ˛āĻžāĻŽāĻžāĻ° DBMS āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒā§āĻĨāĻ āĻāĻ˛āĻžāĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĄā§āĻāĻž āĻāĻŽā§āĻĒā§āĻ°ā§āĻļāĻ¨ āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻ¸āĻ°ā§āĻŦā§āĻ¤ā§āĻ¤āĻŽ āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽāĻā§āĻ˛āĻŋāĻ° āĻĒāĻāĻ¨ā§āĻĻ 20-50% āĻĻā§āĻŦāĻžāĻ°āĻž āĻĻāĻāĻ˛āĻā§āĻ¤ āĻĄāĻŋāĻ¸ā§āĻā§āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ āĻšā§āĻ°āĻžāĻ¸ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§
āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§ āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ°:
{{ compress_table(schema, table,
drop_backup=False,
comprows=none|Integer,
sort_style=none|compound|interleaved,
sort_keys=none|List<String>,
dist_style=none|all|even,
dist_key=none|String) }}
āĻŽāĻĄā§āĻ˛ āĻ°āĻžāĻ¨ āĻ˛āĻāĻŋāĻ
āĻŽāĻĄā§āĻ˛āĻāĻŋāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻŋ āĻšā§āĻāĻā§āĻ˛āĻŋ (āĻšā§āĻ) āĻā§āĻ˛āĻŋāĻ¯āĻŧā§ āĻ°āĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯āĻž āĻ˛āĻā§āĻā§āĻ° āĻāĻā§ āĻŦāĻž āĻŽāĻĄā§āĻ˛āĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§āĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻŦā§:
pre-hook: "{{ logging.log_model_start_event() }}"
post-hook: "{{ logging.log_model_end_event() }}"
āĻ˛āĻāĻŋāĻ āĻŽāĻĄāĻŋāĻāĻ˛ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻ¸āĻžāĻ°āĻŖā§āĻ¤ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻŽā§āĻāĻžāĻĄā§āĻāĻž āĻ˛āĻŋāĻāĻ¤ā§ āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻŦā§, āĻ¯ā§ āĻ āĻ¨ā§āĻ¸āĻžāĻ°ā§ āĻāĻĒāĻ¨āĻŋ āĻĒāĻ°ā§ āĻ āĻĄāĻŋāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨ āĻāĻŦāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋ (āĻŦāĻžāĻāĻ˛āĻ¨ā§āĻ) āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨āĨ¤
āĻ˛ā§āĻāĻžāĻ°ā§ āĻ˛āĻāĻŋāĻ āĻĄā§āĻāĻžāĻ¤ā§ āĻĄā§āĻ¯āĻžāĻļāĻŦā§āĻ°ā§āĻĄāĻāĻŋ āĻā§āĻŽāĻ¨ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¤āĻž āĻāĻāĻžāĻ¨ā§:
āĻ¸ā§āĻā§āĻ°ā§āĻ āĻ āĻā§āĻŽā§āĻļāĻ¨
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻ¸ā§āĻā§āĻ°ā§āĻā§āĻ° āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻžāĻ° āĻāĻŋāĻā§ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨, āĻ¯ā§āĻŽāĻ¨ UDF (āĻāĻāĻāĻžāĻ° āĻĄāĻŋāĻĢāĻžāĻāĻ¨ā§āĻĄ āĻĢāĻžāĻāĻļāĻ¨), āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻ āĻĢāĻžāĻāĻļāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ, āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ, āĻāĻŦāĻ āĻ¨āĻ¤ā§āĻ¨ āĻ°āĻŋāĻ˛āĻŋāĻā§āĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻ°ā§āĻ˛āĻāĻāĻ DBT-āĻ¤ā§ āĻāĻ°āĻž āĻā§āĻŦāĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻāĨ¤
āĻāĻŽāĻ°āĻž āĻĒāĻžāĻāĻĨāĻ¨ āĻāĻāĻĄāĻŋāĻāĻĢ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ āĻšā§āĻ¯āĻžāĻļ āĻŽāĻžāĻ¨, āĻŽā§āĻ˛ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻĄā§āĻŽā§āĻ¨, āĻŦāĻŋāĻāĻŽāĻžāĻ¸ā§āĻ āĻĄāĻŋāĻā§āĻĄāĻŋāĻ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻ¤ā§āĨ¤
āĻāĻāĻāĻŋ āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¯āĻž āĻ¯ā§āĻā§āĻ¨ā§ āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻāĻāĻāĻŋ UDF āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ (dev, test, prod):
{% macro create_udf() -%}
{% set sql %}
CREATE OR REPLACE FUNCTION {{ target.schema }}.f_sha256(mes "varchar")
RETURNS varchar
LANGUAGE plpythonu
STABLE
AS $$
import hashlib
return hashlib.sha256(mes).hexdigest()
$$
;
{% endset %}
{% set table = run_query(sql) %}
{%- endmacro %}
āĻšā§āĻāĻ˛āĻŋāĻ¤ā§ āĻāĻŽāĻ°āĻž Amazon Redshift āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ āĻ¯āĻž PostgreSQL āĻāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§āĨ¤ āĻ°ā§āĻĄāĻļāĻŋāĻĢā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤āĻāĻžāĻŦā§ āĻā§āĻŦāĻŋāĻ˛ā§ āĻĒāĻ°āĻŋāĻ¸āĻāĻā§āĻ¯āĻžāĻ¨ āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°āĻž āĻāĻŦāĻ āĻĄāĻŋāĻ¸ā§āĻā§āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ āĻāĻžāĻ˛āĻŋ āĻāĻ°āĻž āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ - āĻ¯āĻĨāĻžāĻā§āĻ°āĻŽā§ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻŦāĻ āĻā§āĻ¯āĻžāĻā§āĻ¯āĻŧāĻžāĻŽ āĻāĻŽāĻžāĻ¨ā§āĻĄāĨ¤
āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, redshift_maintenance āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§ āĻĨā§āĻā§ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¤āĻŋ āĻ°āĻžāĻ¤ā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ:
{% macro redshift_maintenance() %}
{% set vacuumable_tables=run_query(vacuumable_tables_sql) %}
{% for row in vacuumable_tables %}
{% set message_prefix=loop.index ~ " of " ~ loop.length %}
{%- set relation_to_vacuum = adapter.get_relation(
database=row['table_database'],
schema=row['table_schema'],
identifier=row['table_name']
) -%}
{% do run_query("commit") %}
{% if relation_to_vacuum %}
{% set start=modules.datetime.datetime.now() %}
{{ dbt_utils.log_info(message_prefix ~ " Vacuuming " ~ relation_to_vacuum) }}
{% do run_query("VACUUM " ~ relation_to_vacuum ~ " BOOST") %}
{{ dbt_utils.log_info(message_prefix ~ " Analyzing " ~ relation_to_vacuum) }}
{% do run_query("ANALYZE " ~ relation_to_vacuum) %}
{% set end=modules.datetime.datetime.now() %}
{% set total_seconds = (end - start).total_seconds() | round(2) %}
{{ dbt_utils.log_info(message_prefix ~ " Finished " ~ relation_to_vacuum ~ " in " ~ total_seconds ~ "s") }}
{% else %}
{{ dbt_utils.log_info(message_prefix ~ ' Skipping relation "' ~ row.values() | join ('"."') ~ '" as it does not exist') }}
{% endif %}
{% endfor %}
{% endmacro %}
āĻĄāĻŋāĻŦāĻŋāĻāĻŋ āĻā§āĻ˛āĻžāĻāĻĄ
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž (āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻŋāĻ¤ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž) āĻšāĻŋāĻ¸āĻžāĻŦā§ DBT āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦāĨ¤ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤:
- āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻāĻŦāĻ āĻŽāĻĄā§āĻ˛ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¯āĻŧā§āĻŦ IDE
- āĻāĻžāĻā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻŦāĻ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§ āĻ¸ā§āĻāĻŋāĻ
- āĻ˛āĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¸āĻšāĻ āĻāĻŦāĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸
- āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻ¸āĻš āĻāĻ¯āĻŧā§āĻŦ āĻ¸āĻžāĻāĻ
- āĻāĻžāĻ¨ā§āĻā§āĻāĻŋāĻ āĻ¸āĻŋāĻāĻ (āĻāĻ¨ā§āĻāĻŋāĻ¨āĻŋāĻāĻ¯āĻŧāĻžāĻ¸ āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨)
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
DWH āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻž āĻāĻŦāĻ āĻ¸ā§āĻŦāĻ¨ āĻāĻ°āĻž āĻ¸ā§āĻŽā§āĻĻāĻŋ āĻĒāĻžāĻ¨ āĻāĻ°āĻžāĻ° āĻŽāĻ¤ā§āĻ āĻŽāĻ¨ā§āĻ°āĻŽ āĻāĻŦāĻ āĻ¸ā§āĻŦāĻžāĻ¸ā§āĻĨā§āĻ¯āĻāĻ° āĻšāĻ¯āĻŧā§ āĻāĻ ā§āĨ¤ āĻĄāĻŋāĻŦāĻŋāĻāĻŋ āĻāĻŋāĻ¨āĻāĻž, āĻāĻžāĻ¸ā§āĻāĻŽ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ (āĻŽāĻĄāĻŋāĻāĻ˛), āĻāĻŽā§āĻĒāĻžāĻāĻ˛āĻžāĻ°, āĻāĻā§āĻāĻŋāĻ¨ (āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ) āĻāĻŦāĻ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ° āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ āĻŋāĻ¤āĨ¤ āĻāĻ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§, āĻāĻĒāĻ¨āĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻĄā§āĻāĻž āĻā§āĻĻāĻžāĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻžāĻā§āĻ° āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĒāĻžāĻ¨ā§ˇ āĻāĻ DWH-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ° āĻā§āĻ¯āĻŧā§ āĻāĻžāĻ˛ āĻāĻĒāĻžāĻ¯āĻŧ āĻ¨ā§āĻāĨ¤
DBT āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°āĻž āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸āĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ āĻĒā§āĻ°āĻŖāĻ¯āĻŧāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§:
- āĻā§āĻĄ, GUI āĻ¨āĻ¯āĻŧ, āĻāĻāĻŋāĻ˛ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖāĻžāĻ¤ā§āĻŽāĻ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻĒā§āĻ°āĻāĻžāĻļā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻ°ā§āĻŦā§āĻ¤ā§āĻ¤āĻŽ āĻŦāĻŋāĻŽā§āĻ°ā§āĻ¤āĻ¤āĻž
- āĻĄā§āĻāĻž āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°āĻž āĻ¸āĻĢāĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻā§āĻāĻŋāĻ¨āĻŋāĻ¯āĻŧāĻžāĻ°āĻŋāĻ (āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻā§āĻāĻŋāĻ¨āĻŋāĻ¯āĻŧāĻžāĻ°āĻŋāĻ) āĻāĻ° āĻ¸āĻ°ā§āĻŦā§āĻ¤ā§āĻ¤āĻŽ āĻ āĻ¨ā§āĻļā§āĻ˛āĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻŽāĻžāĻ¨āĻŋāĻ¯āĻŧā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤
- āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧā§āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻŽāĻžāĻ˛ā§āĻāĻ¨āĻžāĻŽā§āĻ˛āĻ āĻĄā§āĻāĻž āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻ
- āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻ¸āĻ°āĻā§āĻāĻžāĻŽ āĻ¨āĻ¯āĻŧ, āĻā§āĻĄāĻāĻŋāĻ āĻā§āĻ°āĻŽāĻŦāĻ°ā§āĻ§āĻŽāĻžāĻ¨āĻāĻžāĻŦā§ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧā§āĻ° āĻ¸āĻŽā§āĻĒāĻ¤ā§āĻ¤āĻŋ āĻšāĻ¯āĻŧā§ āĻāĻ āĻŦā§
āĻāĻ āĻŽā§āĻ˛ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸āĻā§āĻ˛āĻŋ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻĒāĻŖā§āĻ¯ā§āĻ° āĻāĻ¨ā§āĻŽ āĻĻāĻŋāĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻāĻ 850 āĻāĻŋāĻ°āĻ āĻŦā§āĻļāĻŋ āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻž āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ āĻ¨ā§āĻ āĻāĻ¤ā§āĻ¤ā§āĻāĻ¨āĻžāĻĒā§āĻ°ā§āĻŖ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ā§āĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĨ¤
āĻ¯āĻžāĻ°āĻž āĻāĻā§āĻ°āĻšā§ āĻ¤āĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻāĻāĻŋ āĻāĻ¨ā§āĻŽā§āĻā§āĻ¤ āĻĒāĻžāĻ ā§āĻ° āĻāĻāĻāĻŋ āĻāĻŋāĻĄāĻŋāĻ āĻ°ā§āĻāĻ°ā§āĻĄāĻŋāĻ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻāĻŽāĻŋ āĻāĻ¯āĻŧā§āĻ āĻŽāĻžāĻ¸ āĻāĻā§ OTUS-āĻāĻ° āĻāĻāĻāĻŋ āĻāĻ¨ā§āĻŽā§āĻā§āĻ¤ āĻĒāĻžāĻ ā§āĻ° āĻ
āĻāĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°ā§āĻāĻŋ -
DBT āĻāĻŦāĻ āĻĄā§āĻāĻž āĻā§āĻĻāĻžāĻŽāĻā§āĻ˛āĻŋ āĻāĻžāĻĄāĻŧāĻžāĻ, OTUS āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽā§ āĻĄā§āĻāĻž āĻāĻā§āĻāĻŋāĻ¨āĻŋāĻ¯āĻŧāĻžāĻ° āĻā§āĻ°ā§āĻ¸ā§āĻ° āĻ āĻāĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§, āĻāĻŽāĻžāĻ° āĻ¸āĻšāĻāĻ°ā§āĻŽā§āĻ°āĻž āĻāĻŦāĻ āĻāĻŽāĻŋ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻžāĻ¸āĻā§āĻāĻŋāĻ āĻāĻŦāĻ āĻāĻ§ā§āĻ¨āĻŋāĻ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻā§āĻ˛āĻŋāĻ° āĻāĻĒāĻ° āĻā§āĻ˛āĻžāĻ¸ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻŋ:
- āĻŦāĻŋāĻ āĻĄā§āĻāĻž āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°āĻžāĻ˛ āĻ§āĻžāĻ°āĻŖāĻž
- āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻāĻŦāĻ āĻ¸ā§āĻĒāĻžāĻ°ā§āĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻŋāĻāĻ¯āĻŧā§āĻ° āĻ¸āĻžāĻĨā§ āĻ āĻ¨ā§āĻļā§āĻ˛āĻ¨ āĻāĻ°ā§āĻ¨
- āĻĄā§āĻāĻž āĻāĻ¤ā§āĻ¸ āĻ˛ā§āĻĄ āĻāĻ°āĻžāĻ° āĻāĻĒāĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻ¸āĻ°āĻā§āĻāĻžāĻŽāĻā§āĻ˛āĻŋ āĻļā§āĻāĻžā§ˇ
- DWH-āĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖāĻžāĻ¤ā§āĻŽāĻ āĻ¸ā§āĻā§āĻ°āĻĢā§āĻ°āĻ¨ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž
- NoSQL āĻ§āĻžāĻ°āĻŖāĻž: HBase, Cassandra, ElasticSearch
- āĻŽāĻ¨āĻŋāĻāĻ°āĻŋāĻ āĻāĻŦāĻ āĻ āĻ°ā§āĻā§āĻ¸ā§āĻā§āĻ°ā§āĻļāĻ¨ āĻ¸āĻāĻāĻ āĻ¨ā§āĻ° āĻ¨ā§āĻ¤āĻŋ
- āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ: āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻžāĻ° āĻ āĻ§ā§āĻ¨ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĻāĻā§āĻˇāĻ¤āĻž āĻāĻāĻ¸āĻžāĻĨā§ āĻ°āĻžāĻāĻž
āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸:
āĻĄāĻŋāĻŦāĻŋāĻāĻŋ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ - āĻ āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨āĻĄāĻŋāĻŦāĻŋāĻāĻŋ āĻāĻ¸āĻ˛ā§ āĻāĻŋ? â DBT āĻ˛ā§āĻāĻāĻĻā§āĻ° āĻāĻāĻāĻ¨ā§āĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°ā§āĻ¨āĻ ā§āĻ¯āĻžāĻŽāĻžāĻāĻ¨ āĻ°ā§āĻĄāĻļāĻŋāĻĢā§āĻ āĻ¸ā§āĻā§āĻ°ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĄā§āĻāĻž āĻŦāĻŋāĻ˛ā§āĻĄ āĻā§āĻ˛ â YouTube, OTUS āĻāĻĒā§āĻ¨ āĻ˛ā§āĻ¸āĻ¨ āĻ°ā§āĻāĻ°ā§āĻĄāĻŋāĻGreenplum āĻĒāĻ°āĻŋāĻāĻŋāĻ¤āĻŋ â āĻ¨āĻŋāĻāĻāĻ¤āĻŽ āĻā§āĻ˛āĻž āĻĒāĻžāĻ āĻšāĻ˛ 15 āĻŽā§, 2020āĻĄā§āĻāĻž āĻāĻā§āĻāĻŋāĻ¨āĻŋāĻ¯āĻŧāĻžāĻ°āĻŋāĻ āĻā§āĻ°ā§āĻ¸ âāĻāĻā§āĻ¸āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻĒāĻā§āĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻš āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ - āĻĄā§āĻāĻž āĻāĻŦāĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĻ° āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ āĻĻā§āĻā§āĻ¨āĻāĻāĻž āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¯āĻŧ â āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĻ° āĻŦāĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻŦāĻ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ā§āĻ° āĻĒā§āĻ°āĻāĻžāĻŦdbtCloud āĻāĻ° āĻ¸āĻžāĻĨā§ āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻāĻŦāĻ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻŦāĻŋāĻ˛ā§āĻĄ āĻā§āĻ¸ā§āĻāĻŋāĻ â DBT āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ CI āĻ¤ā§āĻ°āĻŋāĻ° āĻ¨ā§āĻ¤āĻŋDBT āĻāĻŋāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻāĻ°āĻž â āĻ āĻ¨ā§āĻļā§āĻ˛āĻ¨, āĻ¸ā§āĻŦ-āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ§āĻžāĻĒā§ āĻ§āĻžāĻĒā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻžāĻŦāĻ˛ā§jaffle shop - Github DBT āĻāĻŋāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛ â Github, āĻāĻŋāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻĄ
āĻāĻ¤ā§āĻ¸: www.habr.com