డేటా బిల్డ్ టూల్ లేదా డేటా వేర్‌హౌస్ మరియు స్మూతీ మధ్య సాధారణం

డేటా బిల్డ్ టూల్ లేదా డేటా వేర్‌హౌస్ మరియు స్మూతీ మధ్య సాధారణం
ఆదర్శవంతమైన డేటా వేర్‌హౌస్ ఏ సూత్రాలపై నిర్మించబడింది?

బాయిలర్‌ప్లేట్ కోడ్ లేనప్పుడు వ్యాపార విలువ మరియు విశ్లేషణలపై దృష్టి పెట్టండి. DWHని కోడ్‌బేస్‌గా నిర్వహించడం: సంస్కరణ, సమీక్ష, ఆటోమేటెడ్ టెస్టింగ్ మరియు CI. మాడ్యులర్, ఎక్స్‌టెన్సిబుల్, ఓపెన్ సోర్స్ మరియు కమ్యూనిటీ. వినియోగదారు-స్నేహపూర్వక డాక్యుమెంటేషన్ మరియు డిపెండెన్సీ విజువలైజేషన్ (డేటా లినేజ్).

వీటన్నింటి గురించి మరియు బిగ్ డేటా & అనలిటిక్స్ ఎకోసిస్టమ్‌లో DBT పాత్ర గురించి మరింత - పిల్లికి స్వాగతం.

Всем привет

ఆర్టెమీ కోజిర్ టచ్‌లో ఉన్నారు. నేను 5 సంవత్సరాలకు పైగా డేటా గిడ్డంగులతో పని చేస్తున్నాను, ETL/ELTని నిర్మించడంతోపాటు డేటా అనలిటిక్స్ మరియు విజువలైజేషన్. నేను ప్రస్తుతం పని చేస్తున్నాను వీలీ, నేను OTUSలో ఒక కోర్సును బోధిస్తాను డేటా ఇంజనీర్, మరియు ఈ రోజు నేను ప్రారంభాన్ని ఊహించి వ్రాసిన ఒక కథనాన్ని మీతో పంచుకోవాలనుకుంటున్నాను కోర్సు కోసం కొత్త నమోదు.

చిన్న సమీక్ష

DBT ఫ్రేమ్‌వర్క్ అనేది ELT (ఎక్స్‌ట్రాక్ట్ - ట్రాన్స్‌ఫార్మ్ - లోడ్) ఎక్రోనింలోని T గురించి ఉంటుంది.

BigQuery, Redshift, Snowflake వంటి ఉత్పాదక మరియు స్కేలబుల్ విశ్లేషణాత్మక డేటాబేస్‌ల ఆగమనంతో, డేటా వేర్‌హౌస్ వెలుపల పరివర్తనలు చేయడంలో ఎటువంటి ప్రయోజనం లేదు. 

DBT మూలాధారాల నుండి డేటాను డౌన్‌లోడ్ చేయదు, కానీ ఇప్పటికే స్టోరేజ్‌లో (అంతర్గత లేదా బాహ్య నిల్వలో) లోడ్ చేయబడిన డేటాతో పని చేయడానికి గొప్ప అవకాశాలను అందిస్తుంది.

డేటా బిల్డ్ టూల్ లేదా డేటా వేర్‌హౌస్ మరియు స్మూతీ మధ్య సాధారణం
DBT యొక్క ముఖ్య ఉద్దేశ్యం కోడ్‌ని తీసుకోవడం, దానిని SQLలోకి కంపైల్ చేయడం, రిపోజిటరీలో సరైన క్రమంలో ఆదేశాలను అమలు చేయడం.

DBT ప్రాజెక్ట్ నిర్మాణం

ప్రాజెక్ట్ కేవలం 2 రకాల డైరెక్టరీలు మరియు ఫైల్‌లను కలిగి ఉంటుంది:

  • మోడల్ (.sql) - SELECT ప్రశ్న ద్వారా వ్యక్తీకరించబడిన పరివర్తన యూనిట్
  • కాన్ఫిగరేషన్ ఫైల్ (.yml) - పారామితులు, సెట్టింగ్‌లు, పరీక్షలు, డాక్యుమెంటేషన్

ప్రాథమిక స్థాయిలో, పని క్రింది విధంగా నిర్మించబడింది:

  • వినియోగదారు ఏదైనా అనుకూలమైన IDEలో మోడల్ కోడ్‌ని సిద్ధం చేస్తారు
  • CLIని ఉపయోగించి, మోడల్‌లు ప్రారంభించబడ్డాయి, DBT మోడల్ కోడ్‌ను SQLలోకి కంపైల్ చేస్తుంది
  • కంపైల్ చేయబడిన SQL కోడ్ స్టోరేజ్‌లో ఇచ్చిన సీక్వెన్స్‌లో (గ్రాఫ్) అమలు చేయబడుతుంది.

CLI నుండి రన్నింగ్ ఎలా ఉంటుందో ఇక్కడ ఉంది:

డేటా బిల్డ్ టూల్ లేదా డేటా వేర్‌హౌస్ మరియు స్మూతీ మధ్య సాధారణం

అంతా SELECT

ఇది డేటా బిల్డ్ టూల్ ఫ్రేమ్‌వర్క్ యొక్క కిల్లర్ ఫీచర్. మరో మాటలో చెప్పాలంటే, స్టోర్‌లో మీ ప్రశ్నలను మెటీరియలైజ్ చేయడంతో అనుబంధించబడిన అన్ని కోడ్‌లను DBT సంగ్రహిస్తుంది (క్రియేట్, ఇన్సర్ట్, అప్‌డేట్, డిలీట్ ఆల్టర్, గ్రాంట్, ... ఆదేశాల నుండి వైవిధ్యాలు).

ఏదైనా మోడల్‌లో ఒక 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 మరియు భాష యొక్క మిశ్రమం జింజ (టెంప్లేటింగ్ భాష).

ఉదాహరణ లూప్‌ని ఉపయోగిస్తుంది కోసం వ్యక్తీకరణలో పేర్కొన్న ప్రతి చెల్లింపు పద్ధతి కోసం మొత్తాన్ని రూపొందించడానికి సెట్. ఫంక్షన్ కూడా ఉపయోగించబడుతుంది ref - కోడ్‌లో ఇతర మోడళ్లను సూచించే సామర్థ్యం:

  • సంకలనం సమయంలో ref స్టోరేజ్‌లో టేబుల్ లేదా వీక్షణకు టార్గెట్ పాయింటర్‌గా మార్చబడుతుంది
  • ref మోడల్ డిపెండెన్సీ గ్రాఫ్‌ను రూపొందించడానికి మిమ్మల్ని అనుమతిస్తుంది

ఇది ఉంది జింజ DBTకి దాదాపు అపరిమిత అవకాశాలను జోడిస్తుంది. అత్యంత సాధారణంగా ఉపయోగించేవి:

  • ఒకవేళ / వేరే స్టేట్‌మెంట్‌లు - శాఖ ప్రకటనలు
  • లూప్‌ల కోసం
  • వేరియబుల్స్
  • స్థూల - మాక్రోలను సృష్టించడం

మెటీరియలైజేషన్: టేబుల్, వ్యూ, ఇంక్రిమెంటల్

మెటీరియలైజేషన్ స్ట్రాటజీ అనేది ఒక విధానం, దీని ప్రకారం మోడల్ డేటా యొక్క సెట్ స్టోరేజ్‌లో నిల్వ చేయబడుతుంది.

ప్రాథమిక పరంగా ఇది:

  • పట్టిక - నిల్వలో భౌతిక పట్టిక
  • వీక్షణ - వీక్షణ, నిల్వలో వర్చువల్ పట్టిక

మరింత క్లిష్టమైన భౌతికీకరణ వ్యూహాలు కూడా ఉన్నాయి:

  • ఇంక్రిమెంటల్ - ఇంక్రిమెంటల్ లోడింగ్ (పెద్ద వాస్తవ పట్టికలు); కొత్త పంక్తులు జోడించబడ్డాయి, మార్చబడిన పంక్తులు నవీకరించబడ్డాయి, తొలగించబడిన పంక్తులు క్లియర్ చేయబడతాయి 
  • ఎఫెమెరల్ - మోడల్ నేరుగా కార్యరూపం దాల్చదు, కానీ ఇతర మోడళ్లలో CTEగా పాల్గొంటుంది
  • ఏదైనా ఇతర వ్యూహాలను మీరే జోడించుకోవచ్చు

మెటీరియలైజేషన్ వ్యూహాలతో పాటు, నిర్దిష్ట నిల్వల కోసం ఆప్టిమైజేషన్ కోసం అవకాశాలు ఉన్నాయి, ఉదాహరణకు:

  • స్నోఫ్లేక్: తాత్కాలిక పట్టికలు, విలీన ప్రవర్తన, టేబుల్ క్లస్టరింగ్, గ్రాంట్‌లను కాపీ చేయడం, సురక్షిత వీక్షణలు
  • రెడ్షిప్ట్: డిస్ట్‌కీ, సార్ట్‌కీ (ఇంటర్‌లీవ్డ్, కాంపౌండ్), లేట్ బైండింగ్ వీక్షణలు
  • BigQuery: టేబుల్ విభజన & క్లస్టరింగ్, ప్రవర్తనను విలీనం చేయండి, KMS ఎన్‌క్రిప్షన్, లేబుల్‌లు & ట్యాగ్‌లు
  • నిప్పురవ్వ: ఫైల్ ఫార్మాట్ (parquet, csv, json, orc, delta), partition_by, clustered_by, buckets, incremental_strategy

కింది నిల్వలకు ప్రస్తుతం మద్దతు ఉంది:

  • పోస్ట్‌గ్రెస్
  • రెడ్షిప్ట్
  • BigQuery
  • స్నోఫ్లేక్
  • ప్రెస్టో (పాక్షికంగా)
  • స్పార్క్ (పాక్షికంగా)
  • మైక్రోసాఫ్ట్ SQL సర్వర్ (కమ్యూనిటీ అడాప్టర్)

మన నమూనాను మెరుగుపరుద్దాం:

  • దాని పూరకాన్ని ఇంక్రిమెంటల్ (పెరుగుదల) చేద్దాం
  • రెడ్‌షిఫ్ట్ కోసం సెగ్మెంటేషన్ మరియు సార్టింగ్ కీలను జోడిద్దాం

-- Конфигурация модели: 
-- Инкрементальное наполнение, уникальный ключ для обновления записей (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

మోడల్ డిపెండెన్సీ గ్రాఫ్

ఇది కూడా ఆశ్రిత చెట్టు. దీనిని DAG (డైరెక్ట్ ఎసిక్లిక్ గ్రాఫ్) అని కూడా అంటారు.

DBT అన్ని ప్రాజెక్ట్ మోడల్‌ల కాన్ఫిగరేషన్ ఆధారంగా గ్రాఫ్‌ను నిర్మిస్తుంది లేదా మోడల్‌లలోని ఇతర మోడళ్లకు ref() లింక్‌లు. గ్రాఫ్ కలిగి ఉండటం వలన మీరు ఈ క్రింది పనులను చేయవచ్చు:

  • సరైన క్రమంలో నమూనాలను అమలు చేయడం
  • దుకాణం ముందరి నిర్మాణం యొక్క సమాంతరీకరణ
  • ఏకపక్ష సబ్‌గ్రాఫ్‌ని అమలు చేస్తోంది 

గ్రాఫ్ విజువలైజేషన్ ఉదాహరణ:

డేటా బిల్డ్ టూల్ లేదా డేటా వేర్‌హౌస్ మరియు స్మూతీ మధ్య సాధారణం
గ్రాఫ్ యొక్క ప్రతి నోడ్ ఒక మోడల్; గ్రాఫ్ యొక్క అంచులు వ్యక్తీకరణ ref ద్వారా పేర్కొనబడతాయి.

డేటా నాణ్యత మరియు డాక్యుమెంటేషన్

మోడల్‌లను స్వయంగా రూపొందించడంతో పాటు, DBT ఫలితంగా డేటా సెట్ గురించి అనేక అంచనాలను పరీక్షించడానికి మిమ్మల్ని అనుమతిస్తుంది, అవి:

  • శూన్యం కాదు
  • ప్రత్యేక
  • సూచన సమగ్రత - రెఫరెన్షియల్ సమగ్రత (ఉదాహరణకు, ఆర్డర్‌ల పట్టికలోని కస్టమర్_ఐడి కస్టమర్‌ల పట్టికలోని ఐడికి అనుగుణంగా ఉంటుంది)
  • ఆమోదయోగ్యమైన విలువల జాబితాతో సరిపోలుతోంది

మీ స్వంత పరీక్షలను (అనుకూల డేటా పరీక్షలు) జోడించడం సాధ్యమవుతుంది, ఉదాహరణకు, ఒక రోజు, ఒక వారం, ఒక నెల క్రితం నుండి సూచికలతో రాబడి యొక్క % విచలనం. SQL ప్రశ్నగా రూపొందించబడిన ఏదైనా ఊహ పరీక్షగా మారవచ్చు.

ఈ విధంగా, మీరు వేర్‌హౌస్ విండోస్‌లోని డేటాలో అవాంఛిత విచలనాలు మరియు లోపాలను పట్టుకోవచ్చు.

డాక్యుమెంటేషన్ పరంగా, 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 యొక్క ఉద్దేశ్యం SQL స్క్రిప్ట్‌ల సమితిగా మారడం కాదు, కానీ వినియోగదారులకు వారి స్వంత రూపాంతరాలను రూపొందించడానికి మరియు ఈ మాడ్యూళ్లను పంపిణీ చేయడానికి శక్తివంతమైన మరియు ఫీచర్-రిచ్ మార్గాలను అందించడం.

మాక్రోలు నిర్మాణాలు మరియు వ్యక్తీకరణల సెట్‌లు, వీటిని మోడల్‌లలోని ఫంక్షన్‌లుగా పిలుస్తారు. DRY (Don't Repeat Yourself) ఇంజనీరింగ్ సూత్రానికి అనుగుణంగా మోడల్‌లు మరియు ప్రాజెక్ట్‌ల మధ్య 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 ప్యాకేజీ మేనేజర్‌తో వస్తుంది, ఇది వినియోగదారులను వ్యక్తిగత మాడ్యూల్‌లు మరియు మాక్రోలను ప్రచురించడానికి మరియు మళ్లీ ఉపయోగించేందుకు అనుమతిస్తుంది.

దీనర్థం లైబ్రరీలను లోడ్ చేయడం మరియు ఉపయోగించగలగడం:

  • dbt_utils: తేదీ/సమయం, సర్రోగేట్ కీలు, స్కీమా పరీక్షలు, పివోట్/అన్‌పివోట్ మరియు ఇతరులతో పని చేయడం
  • వంటి సేవల కోసం రెడీమేడ్ షోకేస్ టెంప్లేట్‌లు స్నోప్లో и గీత 
  • నిర్దిష్ట డేటా స్టోర్‌ల కోసం లైబ్రరీలు, ఉదా. రెడ్షిప్ట్ 
  • లాగింగ్ — DBT ఆపరేషన్ లాగింగ్ కోసం మాడ్యూల్

ప్యాకేజీల పూర్తి జాబితాను ఇక్కడ చూడవచ్చు 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 రోజులు మాత్రమే డేటా తీసుకోండి మరియు ఇకపై లేదు. అంటే, ఈ పరిసరాలలో అమలు చేయడం చాలా వేగంగా ఉంటుంది మరియు తక్కువ వనరులు అవసరమవుతాయి. పర్యావరణంపై నడుస్తున్నప్పుడు ఉత్పత్తి ఫిల్టర్ పరిస్థితి విస్మరించబడుతుంది.

ప్రత్యామ్నాయ కాలమ్ ఎన్‌కోడింగ్‌తో మెటీరియలైజేషన్

రెడ్‌షిఫ్ట్ అనేది ప్రతి ఒక్క నిలువు వరుస కోసం డేటా కంప్రెషన్ అల్గారిథమ్‌లను సెట్ చేయడానికి మిమ్మల్ని అనుమతించే స్తంభాల DBMS. సరైన అల్గారిథమ్‌లను ఎంచుకోవడం వలన డిస్క్ స్థలాన్ని 20-50% తగ్గించవచ్చు.

స్థూల redshift.compress_table ANALYZE COMPRESSION ఆదేశాన్ని అమలు చేస్తుంది, సిఫార్సు చేయబడిన నిలువు వరుస ఎన్‌కోడింగ్ అల్గారిథమ్‌లు, పేర్కొన్న సెగ్మెంటేషన్ కీలు (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) UDFని సృష్టించే స్థూల ఉదాహరణ:

{% 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 క్లౌడ్

DBTని సేవగా (మేనేజ్డ్ సర్వీస్) ఉపయోగించడం సాధ్యమవుతుంది. చేర్చబడినవి:

  • ప్రాజెక్ట్‌లు మరియు మోడల్‌లను అభివృద్ధి చేయడానికి వెబ్ IDE
  • జాబ్ కాన్ఫిగరేషన్ మరియు షెడ్యూలింగ్
  • లాగ్‌లకు సులభమైన మరియు అనుకూలమైన యాక్సెస్
  • మీ ప్రాజెక్ట్ యొక్క డాక్యుమెంటేషన్‌తో కూడిన వెబ్‌సైట్
  • కనెక్టింగ్ CI (నిరంతర ఇంటిగ్రేషన్)

డేటా బిల్డ్ టూల్ లేదా డేటా వేర్‌హౌస్ మరియు స్మూతీ మధ్య సాధారణం

తీర్మానం

DWHని సిద్ధం చేయడం మరియు తీసుకోవడం స్మూతీని తాగినంత ఆనందదాయకంగా మరియు ప్రయోజనకరంగా మారుతుంది. DBTలో జింజా, వినియోగదారు పొడిగింపులు (మాడ్యూల్స్), కంపైలర్, ఎగ్జిక్యూటర్ మరియు ప్యాకేజీ మేనేజర్ ఉంటాయి. ఈ ఎలిమెంట్‌లను కలిపి ఉంచడం ద్వారా మీరు మీ డేటా వేర్‌హౌస్ కోసం పూర్తి పని వాతావరణాన్ని పొందుతారు. ఈ రోజు DWHలో పరివర్తనను నిర్వహించడానికి ఇంతకంటే మెరుగైన మార్గం లేదు.

డేటా బిల్డ్ టూల్ లేదా డేటా వేర్‌హౌస్ మరియు స్మూతీ మధ్య సాధారణం

DBT డెవలపర్లు అనుసరించే నమ్మకాలు ఈ క్రింది విధంగా రూపొందించబడ్డాయి:

  • సంక్లిష్ట విశ్లేషణాత్మక తర్కాన్ని వ్యక్తీకరించడానికి కోడ్ GUI కాదు, ఉత్తమమైన సంగ్రహణ
  • డేటాతో పని చేయడం సాఫ్ట్‌వేర్ ఇంజినీరింగ్ (సాఫ్ట్‌వేర్ ఇంజినీరింగ్)లో ఉత్తమ అభ్యాసాలను స్వీకరించాలి.

  • క్లిష్టమైన డేటా ఇన్‌ఫ్రాస్ట్రక్చర్‌ను వినియోగదారు సంఘం ఓపెన్ సోర్స్ సాఫ్ట్‌వేర్‌గా నియంత్రించాలి
  • విశ్లేషణ సాధనాలు మాత్రమే కాకుండా, కోడ్ కూడా ఓపెన్ సోర్స్ కమ్యూనిటీ యొక్క ఆస్తిగా మారుతుంది

ఈ ప్రధాన నమ్మకాలు నేడు 850కి పైగా కంపెనీలు ఉపయోగించే ఒక ఉత్పత్తిని సృష్టించాయి మరియు అవి భవిష్యత్తులో సృష్టించబడే అనేక ఉత్తేజకరమైన పొడిగింపులకు ఆధారం.

ఆసక్తి ఉన్నవారి కోసం, OTUSలో ఓపెన్ లెసన్‌లో భాగంగా కొన్ని నెలల క్రితం నేను ఇచ్చిన ఓపెన్ లెసన్ వీడియో ఉంది - Amazon Redshift నిల్వ కోసం డేటా బిల్డ్ టూల్.

DBT మరియు డేటా వేర్‌హౌసింగ్‌తో పాటు, OTUS ప్లాట్‌ఫారమ్‌లోని డేటా ఇంజనీర్ కోర్సులో భాగంగా, నా సహోద్యోగులు మరియు నేను అనేక ఇతర సంబంధిత మరియు ఆధునిక అంశాలపై తరగతులను బోధిస్తాము:

  • బిగ్ డేటా అప్లికేషన్స్ కోసం ఆర్కిటెక్చరల్ కాన్సెప్ట్స్
  • స్పార్క్ మరియు స్పార్క్ స్ట్రీమింగ్‌తో ప్రాక్టీస్ చేయండి
  • డేటా మూలాలను లోడ్ చేయడానికి పద్ధతులు మరియు సాధనాలను అన్వేషించడం
  • DWHలో విశ్లేషణాత్మక షోకేస్‌లను నిర్మించడం
  • NoSQL భావనలు: HBase, Cassandra, ElasticSearch
  • పర్యవేక్షణ మరియు ఆర్కెస్ట్రేషన్ సూత్రాలు 
  • చివరి ప్రాజెక్ట్: మెంటరింగ్ సపోర్ట్ కింద అన్ని నైపుణ్యాలను కలిపి ఉంచడం

సూచనలు:

  1. DBT డాక్యుమెంటేషన్ - పరిచయం - అధికారిక డాక్యుమెంటేషన్
  2. సరిగ్గా, dbt అంటే ఏమిటి? — DBT రచయితలలో ఒకరి సమీక్ష కథనం 
  3. Amazon Redshift నిల్వ కోసం డేటా బిల్డ్ టూల్ — YouTube, OTUS ఓపెన్ లెసన్ రికార్డింగ్
  4. గ్రీన్‌ప్లమ్ గురించి తెలుసుకోవడం — తదుపరి ఓపెన్ పాఠం మే 15, 2020
  5. డేటా ఇంజనీరింగ్ కోర్సు - ఓటస్
  6. పరిపక్వ విశ్లేషణల వర్క్‌ఫ్లోను రూపొందించడం — డేటా మరియు అనలిటిక్స్ యొక్క భవిష్యత్తుపై ఒక లుక్
  7. ఇది ఓపెన్ సోర్స్ అనలిటిక్స్ కోసం సమయం - విశ్లేషణల పరిణామం మరియు ఓపెన్ సోర్స్ ప్రభావం
  8. dbtCloudతో నిరంతర ఇంటిగ్రేషన్ మరియు ఆటోమేటెడ్ బిల్డ్ టెస్టింగ్ - DBTని ఉపయోగించి CI నిర్మించే సూత్రాలు
  9. DBT ట్యుటోరియల్‌తో ప్రారంభించడం - ప్రాక్టీస్, స్వతంత్ర పని కోసం దశల వారీ సూచనలు
  10. జాఫిల్ షాప్ - గితుబ్ డిబిటి ట్యుటోరియల్ - గితుబ్, ఎడ్యుకేషనల్ ప్రాజెక్ట్ కోడ్

కోర్సు గురించి మరింత తెలుసుకోండి.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి