Data Build Tool அல்லது Data Warehouse மற்றும் Smoothie இடையே பொதுவானது

Data Build Tool அல்லது Data Warehouse மற்றும் Smoothie இடையே பொதுவானது
எந்தக் கொள்கைகளின் அடிப்படையில் ஒரு சிறந்த தரவுக் கிடங்கு கட்டப்பட்டுள்ளது?

கொதிகலன் குறியீடு இல்லாத நிலையில் வணிக மதிப்பு மற்றும் பகுப்பாய்வுகளில் கவனம் செலுத்துங்கள். DWH ஐ ஒரு கோட்பேஸாக நிர்வகித்தல்: பதிப்பு, மதிப்பாய்வு, தானியங்கு சோதனை மற்றும் CI. மட்டு, நீட்டிக்கக்கூடிய, திறந்த மூல மற்றும் சமூகம். பயனர் நட்பு ஆவணங்கள் மற்றும் சார்பு காட்சிப்படுத்தல் (தரவு வரிசை).

இவை அனைத்தையும் பற்றி மேலும் பிக் டேட்டா & அனலிட்டிக்ஸ் சுற்றுச்சூழல் அமைப்பில் டிபிடியின் பங்கு பற்றி - பூனைக்கு வரவேற்கிறோம்.

அனைவருக்கும் வணக்கம்

ஆர்டெமி கோசிர் தொடர்பில் உள்ளார். 5 ஆண்டுகளுக்கும் மேலாக நான் தரவுக் கிடங்குகள், ETL/ELT ஐ உருவாக்குதல், அத்துடன் தரவு பகுப்பாய்வு மற்றும் காட்சிப்படுத்தல் ஆகியவற்றுடன் பணிபுரிந்து வருகிறேன். நான் தற்போது பணிபுரிந்து வருகிறேன் Wheely, நான் OTUS இல் ஒரு பாடத்திட்டத்தில் கற்பிக்கிறேன் தரவு பொறியாளர், மற்றும் இன்று நான் தொடக்கத்தை எதிர்பார்த்து எழுதிய ஒரு கட்டுரையை உங்களுடன் பகிர்ந்து கொள்ள விரும்புகிறேன் படிப்புக்கான புதிய சேர்க்கை.

கதைச்சுருக்கம்

DBT கட்டமைப்பானது ELT (எக்ஸ்ட்ராக்ட் - டிரான்ஸ்ஃபார்ம் - லோட்) சுருக்கத்தில் உள்ள T ஐப் பற்றியது.

BigQuery, Redshift, Snowflake போன்ற உற்பத்தி மற்றும் அளவிடக்கூடிய பகுப்பாய்வு தரவுத்தளங்களின் வருகையுடன், தரவுக் கிடங்கிற்கு வெளியே மாற்றங்களைச் செய்வதில் எந்தப் பயனும் இல்லை. 

DBT ஆனது ஆதாரங்களில் இருந்து தரவைப் பதிவிறக்காது, ஆனால் ஏற்கனவே சேமிப்பகத்தில் (உள் அல்லது வெளிப்புற சேமிப்பகத்தில்) ஏற்றப்பட்ட தரவுகளுடன் பணிபுரிவதற்கான சிறந்த வாய்ப்புகளை வழங்குகிறது.

Data Build Tool அல்லது Data Warehouse மற்றும் Smoothie இடையே பொதுவானது
டிபிடியின் முக்கிய நோக்கம் குறியீட்டை எடுத்து, அதை SQL இல் தொகுத்து, களஞ்சியத்தில் சரியான வரிசையில் கட்டளைகளை இயக்குவது.

DBT திட்ட அமைப்பு

திட்டமானது 2 வகையான கோப்பகங்கள் மற்றும் கோப்புகளை மட்டுமே கொண்டுள்ளது:

  • மாதிரி (.sql) - SELECT வினவல் மூலம் வெளிப்படுத்தப்படும் உருமாற்றத்தின் அலகு
  • கட்டமைப்பு கோப்பு (.yml) - அளவுருக்கள், அமைப்புகள், சோதனைகள், ஆவணங்கள்

ஒரு அடிப்படை மட்டத்தில், வேலை பின்வருமாறு கட்டமைக்கப்பட்டுள்ளது:

  • பயனர் எந்த வசதியான IDE இல் மாதிரிக் குறியீட்டைத் தயாரிக்கிறார்
  • CLI ஐப் பயன்படுத்தி, மாதிரிகள் தொடங்கப்படுகின்றன, DBT மாதிரிக் குறியீட்டை SQL இல் தொகுக்கிறது
  • தொகுக்கப்பட்ட SQL குறியீடு ஒரு குறிப்பிட்ட வரிசையில் (வரைபடம்) சேமிப்பகத்தில் செயல்படுத்தப்படுகிறது.

CLI இலிருந்து இயங்குவது எப்படி இருக்கும் என்பது இங்கே:

Data Build Tool அல்லது Data Warehouse மற்றும் Smoothie இடையே பொதுவானது

எல்லாம் 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 ஆக பங்கேற்கிறது
  • வேறு எந்த உத்திகளையும் நீங்களே சேர்க்கலாம்

பொருள்மயமாக்கல் உத்திகளுக்கு கூடுதலாக, குறிப்பிட்ட சேமிப்பகங்களுக்கான தேர்வுமுறைக்கான வாய்ப்புகள் உள்ளன, எடுத்துக்காட்டாக:

  • ஸ்னோஃபிளாக்: நிலையற்ற அட்டவணைகள், பிணைப்பு நடத்தை, அட்டவணை கிளஸ்டரிங், மானியங்களை நகலெடுத்தல், பாதுகாப்பான காட்சிகள்
  • சிவப்புப் பெயர்ச்சி: Distkey, Sortkey (interleaved, compound), லேட் பைண்டிங் காட்சிகள்
  • BigQuery இல்: டேபிள் பார்டிஷனிங் & கிளஸ்டரிங், மெர்ஜ் பிஹேவிஷன், கேஎம்எஸ் என்க்ரிப்ஷன், லேபிள்கள் & குறிச்சொற்கள்
  • ஸ்பார்க்: கோப்பு வடிவம் (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 (Directed Acyclic Graph) என்றும் அழைக்கப்படுகிறது.

அனைத்து திட்ட மாதிரிகளின் உள்ளமைவின் அடிப்படையில் DBT ஒரு வரைபடத்தை உருவாக்குகிறது, அல்லது மற்ற மாதிரிகளுக்கு மாடல்களில் உள்ள இணைப்புகளை ref() செய்கிறது. வரைபடத்தை வைத்திருப்பது பின்வரும் விஷயங்களைச் செய்ய உங்களை அனுமதிக்கிறது:

  • சரியான வரிசையில் இயங்கும் மாதிரிகள்
  • கடையின் முகப்பு உருவாக்கத்தின் இணையாக
  • தன்னிச்சையான சப்கிராப்பை இயக்குகிறது 

வரைபட காட்சிப்படுத்தலின் எடுத்துக்காட்டு:

Data Build Tool அல்லது Data Warehouse மற்றும் Smoothie இடையே பொதுவானது
வரைபடத்தின் ஒவ்வொரு முனையும் ஒரு மாதிரி; வரைபடத்தின் விளிம்புகள் வெளிப்பாடு ref மூலம் குறிப்பிடப்படுகின்றன.

தரவு தரம் மற்றும் ஆவணப்படுத்தல்

மாதிரிகளைத் தாங்களே உருவாக்குவதுடன், DBT ஆனது, விளைந்த தரவுத் தொகுப்பைப் பற்றிய பல அனுமானங்களைச் சோதிக்க உங்களை அனுமதிக்கிறது.

  • பூஜ்யமாக இல்லை
  • தனித்த
  • குறிப்பு ஒருமைப்பாடு - குறிப்பு ஒருமைப்பாடு (உதாரணமாக, ஆர்டர்கள் அட்டவணையில் உள்ள customer_id வாடிக்கையாளர்கள் அட்டவணையில் உள்ள ஐடிக்கு ஒத்திருக்கிறது)
  • ஏற்றுக்கொள்ளக்கூடிய மதிப்புகளின் பட்டியலைப் பொருத்துதல்

எடுத்துக்காட்டாக, ஒரு நாள், ஒரு வாரம், ஒரு மாதத்திற்கு முந்தைய குறிகாட்டிகளுடன் வருவாயின் % விலகல் போன்ற உங்கள் சொந்த சோதனைகளைச் (தனிப்பயன் தரவு சோதனைகள்) சேர்க்க முடியும். ஒரு 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']

உருவாக்கப்பட்ட இணையதளத்தில் இந்த ஆவணங்கள் எப்படி இருக்கும் என்பது இங்கே:

Data Build Tool அல்லது Data Warehouse மற்றும் Smoothie இடையே பொதுவானது

மேக்ரோக்கள் மற்றும் தொகுதிகள்

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 ஹப்.

இன்னும் பல அம்சங்கள்

குழுவும் நானும் ஒரு தரவுக் கிடங்கை உருவாக்கப் பயன்படுத்தும் வேறு சில சுவாரஸ்யமான அம்சங்கள் மற்றும் செயலாக்கங்களை இங்கே விவரிக்கிறேன் Wheely.

இயக்க நேர சூழல்களை பிரித்தல் 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 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() }}"

பதிவுத் தொகுதியானது தேவையான அனைத்து மெட்டாடேட்டாவையும் ஒரு தனி அட்டவணையில் பதிவு செய்ய உங்களை அனுமதிக்கும், இது பின்னர் தணிக்கை மற்றும் இடையூறுகளை பகுப்பாய்வு செய்ய பயன்படுத்தப்படலாம்.

லுக்கரில் உள்ள லாக்கிங் தரவின் அடிப்படையில் டாஷ்போர்டு இப்படித்தான் இருக்கும்:

Data Build Tool அல்லது Data Warehouse மற்றும் Smoothie இடையே பொதுவானது

சேமிப்பக பராமரிப்பின் ஆட்டோமேஷன்

UDF (பயனர் வரையறுக்கப்பட்ட செயல்பாடுகள்) போன்ற பயன்படுத்தப்பட்ட களஞ்சியத்தின் செயல்பாட்டின் சில நீட்டிப்புகளைப் பயன்படுத்தினால், இந்த செயல்பாடுகளின் பதிப்பு, அணுகல் கட்டுப்பாடு மற்றும் புதிய வெளியீடுகளின் தானியங்கு வெளியீடு ஆகியவை DBT இல் செய்ய மிகவும் வசதியானது.

ஹாஷ்கள், மின்னஞ்சல் டொமைன்கள் மற்றும் பிட்மாஸ்க் டிகோடிங் ஆகியவற்றைக் கணக்கிட பைத்தானில் UDF ஐப் பயன்படுத்துகிறோம்.

எந்தவொரு செயல்படுத்தும் சூழலிலும் 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 %}

Whely இல் நாம் Amazon Redshift ஐப் பயன்படுத்துகிறோம், இது PostgreSQL ஐ அடிப்படையாகக் கொண்டது. Redshift க்கு, அட்டவணைகளில் புள்ளிவிபரங்களைத் தொடர்ந்து சேகரித்து, வட்டு இடத்தை விடுவிப்பது முக்கியம் - முறையே ANALYZE மற்றும் VACUUM கட்டளைகள்.

இதைச் செய்ய, 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 %}

டிபிடி கிளவுட்

டிபிடியை ஒரு சேவையாக (நிர்வகிக்கப்பட்ட சேவை) பயன்படுத்த முடியும். உள்ளடக்கியது:

  • திட்டங்கள் மற்றும் மாதிரிகளை உருவாக்குவதற்கான வலை IDE
  • வேலை கட்டமைப்பு மற்றும் திட்டமிடல்
  • பதிவுகளுக்கான எளிய மற்றும் வசதியான அணுகல்
  • உங்கள் திட்டத்தின் ஆவணங்களுடன் கூடிய இணையதளம்
  • இணைக்கும் CI (தொடர்ச்சியான ஒருங்கிணைப்பு)

Data Build Tool அல்லது Data Warehouse மற்றும் Smoothie இடையே பொதுவானது

முடிவுக்கு

DWH ஐ தயாரித்து உட்கொள்வது ஒரு ஸ்மூத்தியை குடிப்பது போல் சுவாரஸ்யமாகவும் பயனுள்ளதாகவும் மாறும். DBT ஆனது ஜின்ஜா, பயனர் நீட்டிப்புகள் (தொகுதிகள்), ஒரு கம்பைலர், ஒரு செயல்படுத்துபவர் மற்றும் ஒரு தொகுப்பு மேலாளர் ஆகியவற்றைக் கொண்டுள்ளது. இந்த கூறுகளை ஒன்றாக இணைப்பதன் மூலம், உங்கள் தரவுக் கிடங்கிற்கான முழுமையான பணிச்சூழலைப் பெறுவீர்கள். இன்று DWH க்குள் மாற்றத்தை நிர்வகிக்க சிறந்த வழி இல்லை.

Data Build Tool அல்லது Data Warehouse மற்றும் Smoothie இடையே பொதுவானது

DBT டெவலப்பர்களால் பின்பற்றப்படும் நம்பிக்கைகள் பின்வருமாறு வடிவமைக்கப்பட்டுள்ளன:

  • குறியீடு, GUI அல்ல, சிக்கலான பகுப்பாய்வு தர்க்கத்தை வெளிப்படுத்துவதற்கான சிறந்த சுருக்கமாகும்
  • தரவுகளுடன் பணிபுரிவது மென்பொருள் பொறியியலில் சிறந்த நடைமுறைகளை மாற்றியமைக்க வேண்டும் (மென்பொருள் பொறியியல்)

  • முக்கியமான தரவு உள்கட்டமைப்பு பயனர் சமூகத்தால் திறந்த மூல மென்பொருளாகக் கட்டுப்படுத்தப்பட வேண்டும்
  • பகுப்பாய்வுக் கருவிகள் மட்டுமல்ல, குறியீட்டும் பெருகிய முறையில் திறந்த மூல சமூகத்தின் சொத்தாக மாறும்

இந்த அடிப்படை நம்பிக்கைகள் இன்று 850 க்கும் மேற்பட்ட நிறுவனங்களால் பயன்படுத்தப்படும் ஒரு தயாரிப்பை உருவாக்கியுள்ளன, மேலும் அவை எதிர்காலத்தில் உருவாக்கப்படும் பல அற்புதமான நீட்டிப்புகளின் அடிப்படையை உருவாக்குகின்றன.

ஆர்வமுள்ளவர்களுக்கு, OTUS இல் திறந்த பாடத்தின் ஒரு பகுதியாக சில மாதங்களுக்கு முன்பு நான் வழங்கிய திறந்த பாடத்தின் வீடியோ உள்ளது - Amazon Redshift சேமிப்பகத்திற்கான தரவு உருவாக்க கருவி.

DBT மற்றும் Data Warehousing தவிர, OTUS இயங்குதளத்தில் டேட்டா இன்ஜினியர் பாடத்தின் ஒரு பகுதியாக, நானும் எனது சகாக்களும் பல தொடர்புடைய மற்றும் நவீன தலைப்புகளில் வகுப்புகளை கற்பிக்கிறோம்:

  • பெரிய தரவு பயன்பாடுகளுக்கான கட்டடக்கலை கருத்துக்கள்
  • ஸ்பார்க் மற்றும் ஸ்பார்க் ஸ்ட்ரீமிங் மூலம் பயிற்சி செய்யுங்கள்
  • தரவு மூலங்களை ஏற்றுவதற்கான முறைகள் மற்றும் கருவிகளை ஆராய்தல்
  • DWH இல் பகுப்பாய்வு காட்சிகளை உருவாக்குதல்
  • NoSQL கருத்துக்கள்: HBase, Cassandra, ElasticSearch
  • கண்காணிப்பு மற்றும் ஆர்கெஸ்ட்ரேஷனின் கோட்பாடுகள் 
  • இறுதி திட்டம்: வழிகாட்டுதல் ஆதரவின் கீழ் அனைத்து திறன்களையும் ஒன்றாக இணைத்தல்

மேற்கோள்கள்:

  1. DBT ஆவணங்கள் - அறிமுகம் - அதிகாரப்பூர்வ ஆவணங்கள்
  2. டிபிடி என்றால் என்ன? - DBT இன் ஆசிரியர்களில் ஒருவரின் விமர்சனக் கட்டுரை 
  3. Amazon Redshift சேமிப்பகத்திற்கான தரவு உருவாக்க கருவி - YouTube, OTUS திறந்த பாடத்தின் பதிவு
  4. க்ரீன்ப்ளம் பற்றி தெரிந்துகொள்ளுங்கள் — அடுத்த திறந்த பாடம் மே 15, 2020
  5. டேட்டா இன்ஜினியரிங் படிப்பு - OTUS
  6. முதிர்ந்த அனலிட்டிக்ஸ் பணிப்பாய்வுகளை உருவாக்குதல் — தரவு மற்றும் பகுப்பாய்வுகளின் எதிர்காலத்தைப் பற்றிய ஒரு பார்வை
  7. திறந்த மூல பகுப்பாய்வுக்கான நேரம் இது - பகுப்பாய்வுகளின் பரிணாமம் மற்றும் திறந்த மூலத்தின் தாக்கம்
  8. dbtCloud உடன் தொடர்ச்சியான ஒருங்கிணைப்பு மற்றும் தானியங்கு உருவாக்க சோதனை - DBT ஐப் பயன்படுத்தி CI உருவாக்குவதற்கான கோட்பாடுகள்
  9. DBT டுடோரியலுடன் தொடங்குதல் - பயிற்சி, சுயாதீன வேலைக்கான படிப்படியான வழிமுறைகள்
  10. Jaffle shop — Github DBT டுடோரியல் - கிதுப், கல்வித் திட்டக் குறியீடு

படிப்பைப் பற்றி மேலும் அறிக.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்