āĻĄā§‡āĻŸāĻž āĻŦāĻŋāĻ˛ā§āĻĄ āĻŸā§āĻ˛ āĻŦāĻž āĻĄā§‡āĻŸāĻž āĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ°āĻšāĻžāĻ‰āĻ¸ āĻāĻŦāĻ‚ āĻ¸ā§āĻŽā§āĻĻāĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ•ā§€ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ

āĻĄā§‡āĻŸāĻž āĻŦāĻŋāĻ˛ā§āĻĄ āĻŸā§āĻ˛ āĻŦāĻž āĻĄā§‡āĻŸāĻž āĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ°āĻšāĻžāĻ‰āĻ¸ āĻāĻŦāĻ‚ āĻ¸ā§āĻŽā§āĻĻāĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ•ā§€ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ
āĻ•ā§‹āĻ¨ āĻ¨ā§€āĻ¤āĻŋāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ†āĻĻāĻ°ā§āĻļ āĻĄā§‡āĻŸāĻž āĻ—ā§āĻĻāĻžāĻŽ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ?

āĻŦāĻ¯āĻŧāĻ˛āĻžāĻ°āĻĒā§āĻ˛ā§‡āĻŸ āĻ•ā§‹āĻĄā§‡āĻ° āĻ…āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧāĻŋāĻ• āĻŽā§‚āĻ˛ā§āĻ¯ āĻāĻŦāĻ‚ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖā§‡āĻ° āĻ‰āĻĒāĻ° āĻĢā§‹āĻ•āĻžāĻ¸ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ•ā§‹āĻĄāĻŦā§‡āĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ DWH āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž: āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ, āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§‹āĻšāĻ¨āĻž, āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻāĻŦāĻ‚ CIāĨ¤ āĻŽāĻĄā§āĻ˛āĻžāĻ°āĻŋāĻŸāĻŋ, āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻ¸āĻŋāĻŦāĻŋāĻ˛āĻŋāĻŸāĻŋ, āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻāĻŦāĻ‚ āĻ•āĻŽāĻŋāĻ‰āĻ¨āĻŋāĻŸāĻŋāĨ¤ āĻŦāĻ¨ā§āĻ§ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¤āĻž āĻ­āĻŋāĻœā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœā§‡āĻļāĻ¨ (āĻĄā§‡āĻŸāĻž āĻ˛āĻžāĻ‡āĻ¨ā§‡āĻœ)āĨ¤

āĻāĻ‡ āĻ¸āĻŦ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻ°āĻ“ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻ­āĻžāĻŦā§‡ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ— āĻĄā§‡āĻŸāĻž āĻāĻŦāĻ‚ āĻ…ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻŋāĻŸāĻŋāĻ•ā§āĻ¸ āĻ‡āĻ•ā§‹āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ DBT-āĻāĻ° āĻ­ā§‚āĻŽāĻŋāĻ•āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ - āĻ•ā§āĻ¯āĻžāĻŸā§‡āĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻ¸ā§āĻŦāĻžāĻ—āĻ¤āĻŽāĨ¤

āĻ¸āĻŦāĻžāĻ‡ āĻšā§āĻ¯āĻžāĻ˛ā§‹

āĻ†āĻ°ā§āĻŸā§‡āĻŽāĻŋ āĻ•ā§‹āĻœāĻŋāĻ° āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ—ā§‡ āĻ†āĻ›ā§‡āĻ¨āĨ¤ 5 āĻŦāĻ›āĻ°ā§‡āĻ°āĻ“ āĻŦā§‡āĻļāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻ§āĻ°ā§‡ āĻ†āĻŽāĻŋ āĻĄā§‡āĻŸāĻž āĻ—ā§āĻĻāĻžāĻŽāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ›āĻŋ, ETL/ELT āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ›āĻŋ, āĻ¸ā§‡āĻ‡āĻ¸āĻžāĻĨā§‡ āĻĄā§‡āĻŸāĻž āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻāĻŦāĻ‚ āĻ­āĻŋāĻœā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœā§‡āĻļāĻ¨āĨ¤ āĻ†āĻŽāĻŋ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ›āĻŋ āĻšā§āĻ‡āĻ˛āĻŋ, āĻ†āĻŽāĻŋ āĻ•ā§‹āĻ°ā§āĻ¸ā§‡ OTUS āĻ āĻĒāĻĄāĻŧāĻžāĻ‡ āĻĄā§‡āĻŸāĻž āĻ‡āĻžā§āĻœāĻŋāĻ¨āĻŋāĻ¯āĻŧāĻžāĻ°, āĻāĻŦāĻ‚ āĻ†āĻœ āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻļā§‡āĻ¯āĻŧāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¯āĻž āĻ†āĻŽāĻŋ āĻ˛āĻžā§āĻšā§‡āĻ° āĻĒā§āĻ°āĻžāĻ•ā§āĻ•āĻžāĻ˛ā§‡ āĻ˛āĻŋāĻ–ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ āĻ•ā§‹āĻ°ā§āĻ¸ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻ¤ā§āĻ¨ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ­ā§āĻ•ā§āĻ¤āĻŋ.

āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤āĻ¸āĻžāĻ°

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 āĻāĻŦāĻ‚ āĻ­āĻžāĻˇāĻžāĻ° āĻŽāĻŋāĻļā§āĻ°āĻŖ Jinja (āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸāĻŋāĻ‚ āĻ­āĻžāĻˇāĻž)āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻāĻ•āĻŸāĻŋ āĻ˛ā§āĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻļāĻ¨ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ…āĻ°ā§āĻĨāĻĒā§āĻ°āĻĻāĻžāĻ¨ā§‡āĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻ¸ā§‡āĻŸ. āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋāĻ“ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¸ā§āĻ¤ā§āĻ° - āĻ•ā§‹āĻĄā§‡āĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŽāĻĄā§‡āĻ˛ā§‡ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž:

  • āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ¸āĻŽāĻ¯āĻŧā§‡ āĻ¸ā§āĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻŸāĻžāĻ°ā§āĻ—ā§‡āĻŸ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ°ā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻŦāĻž āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœā§‡āĻ° āĻ­āĻŋāĻ‰āĻ¤ā§‡
  • āĻ¸ā§āĻ¤ā§āĻ° āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŽāĻĄā§‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¤āĻž āĻ—ā§āĻ°āĻžāĻĢ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ

āĻāĻŸāĻž āĻ›āĻŋāĻ˛ Jinja DBT-āĻ¤ā§‡ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸ā§€āĻŽāĻžāĻšā§€āĻ¨ āĻ¸āĻŽā§āĻ­āĻžāĻŦāĻ¨āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĨ¤ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻŦā§‡āĻļāĻŋ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ:

  • 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% āĻĻā§āĻŦāĻžāĻ°āĻž āĻĻāĻ–āĻ˛āĻ•ā§ƒāĻ¤ āĻĄāĻŋāĻ¸ā§āĻ•ā§‡āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ āĻšā§āĻ°āĻžāĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻŽā§āĻ¯āĻžāĻ•ā§āĻ°ā§‹ redshift.compress_table ANALYZE āĻ•āĻŽā§āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻŦā§‡, āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻ•āĻ˛āĻžāĻŽ āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ, āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸ā§‡āĻ—āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ (dist_key) āĻāĻŦāĻ‚ āĻŦāĻžāĻ›āĻžāĻ‡ (sort_key) āĻ•ā§€ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŦā§‡, āĻāĻ¤ā§‡ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻŦā§‡ āĻāĻŦāĻ‚, āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ˛ā§‡, āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻŦā§‡āĨ¤

āĻŽā§āĻ¯āĻžāĻ•ā§āĻ°ā§‹ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ°:

{{ 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
  • āĻŽāĻ¨āĻŋāĻŸāĻ°āĻŋāĻ‚ āĻāĻŦāĻ‚ āĻ…āĻ°ā§āĻ•ā§‡āĻ¸ā§āĻŸā§āĻ°ā§‡āĻļāĻ¨ āĻ¸āĻ‚āĻ—āĻ āĻ¨ā§‡āĻ° āĻ¨ā§€āĻ¤āĻŋ 
  • āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ: āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻžāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĻāĻ•ā§āĻˇāĻ¤āĻž āĻāĻ•āĻ¸āĻžāĻĨā§‡ āĻ°āĻžāĻ–āĻž

āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸:

  1. āĻĄāĻŋāĻŦāĻŋāĻŸāĻŋ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ - āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨
  2. āĻĄāĻŋāĻŦāĻŋāĻŸāĻŋ āĻ†āĻ¸āĻ˛ā§‡ āĻ•āĻŋ? — DBT āĻ˛ā§‡āĻ–āĻ•āĻĻā§‡āĻ° āĻāĻ•āĻœāĻ¨ā§‡āĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°ā§āĻ¨ 
  3. āĻ…ā§āĻ¯āĻžāĻŽāĻžāĻœāĻ¨ āĻ°ā§‡āĻĄāĻļāĻŋāĻĢā§āĻŸ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĄā§‡āĻŸāĻž āĻŦāĻŋāĻ˛ā§āĻĄ āĻŸā§āĻ˛ — YouTube, OTUS āĻ“āĻĒā§‡āĻ¨ āĻ˛ā§‡āĻ¸āĻ¨ āĻ°ā§‡āĻ•āĻ°ā§āĻĄāĻŋāĻ‚
  4. Greenplum āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤āĻŋ — āĻ¨āĻŋāĻ•āĻŸāĻ¤āĻŽ āĻ–ā§‹āĻ˛āĻž āĻĒāĻžāĻ  āĻšāĻ˛ 15 āĻŽā§‡, 2020
  5. āĻĄā§‡āĻŸāĻž āĻ‡āĻžā§āĻœāĻŋāĻ¨āĻŋāĻ¯āĻŧāĻžāĻ°āĻŋāĻ‚ āĻ•ā§‹āĻ°ā§āĻ¸ —āĻ“āĻŸā§āĻ¸
  6. āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻĒāĻ•ā§āĻ• āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻš āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ - āĻĄā§‡āĻŸāĻž āĻāĻŦāĻ‚ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖā§‡āĻ° āĻ­āĻŦāĻŋāĻˇā§āĻ¯āĻ¤ āĻĻā§‡āĻ–ā§āĻ¨
  7. āĻāĻŸāĻž āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¯āĻŧ — āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖā§‡āĻ° āĻŦāĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻŦāĻ‚ āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸ā§‡āĻ° āĻĒā§āĻ°āĻ­āĻžāĻŦ
  8. dbtCloud āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻŦāĻŋāĻ˛ā§āĻĄ āĻŸā§‡āĻ¸ā§āĻŸāĻŋāĻ‚ — DBT āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ CI āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻ¨ā§€āĻ¤āĻŋ
  9. DBT āĻŸāĻŋāĻ‰āĻŸā§‹āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻž — āĻ…āĻ¨ā§āĻļā§€āĻ˛āĻ¨, āĻ¸ā§āĻŦ-āĻ…āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ§āĻžāĻĒā§‡ āĻ§āĻžāĻĒā§‡ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€
  10. jaffle shop - Github DBT āĻŸāĻŋāĻ‰āĻŸā§‹āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛ — Github, āĻŸāĻŋāĻ‰āĻŸā§‹āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§‹āĻĄ

āĻ•ā§‹āĻ°ā§āĻ¸ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻ°āĻ“ āĻœāĻžāĻ¨ā§āĻ¨.

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨