ڈیٹا بلڈ ٹول یا ڈیٹا ویئر ہاؤس اور اسموتھی کے درمیان کیا مشترک ہے۔

ڈیٹا بلڈ ٹول یا ڈیٹا ویئر ہاؤس اور اسموتھی کے درمیان کیا مشترک ہے۔
ایک مثالی ڈیٹا گودام کن اصولوں پر بنایا گیا ہے؟

بوائلر پلیٹ کوڈ کی عدم موجودگی میں کاروباری قدر اور تجزیات پر توجہ دیں۔ کوڈ بیس کے طور پر DWH کا انتظام: ورژن بنانا، جائزہ لینا، خودکار ٹیسٹنگ اور CI۔ ماڈیولر، قابل توسیع، اوپن سورس اور کمیونٹی۔ صارف دوست دستاویزات اور انحصار کا تصور (ڈیٹا لائنیج)۔

اس سب کے بارے میں اور بگ ڈیٹا اور تجزیات کے ماحولیاتی نظام میں ڈی بی ٹی کے کردار کے بارے میں مزید - بلی میں خوش آمدید۔

ہر کوئی خوش

Artemy Kozyr رابطے میں ہے۔ 5 سال سے زیادہ عرصے سے میں ڈیٹا گوداموں کے ساتھ کام کر رہا ہوں، ETL/ELT کی تعمیر کے ساتھ ساتھ ڈیٹا اینالیٹکس اور ویژولائزیشن کر رہا ہوں۔ میں اس وقت کام کر رہا ہوں۔ وہیلیمیں OTUS میں ایک کورس پر پڑھاتا ہوں۔ ڈیٹا انجینئر۔، اور آج میں آپ کے ساتھ ایک مضمون شیئر کرنا چاہتا ہوں جو میں نے آغاز کی توقع میں لکھا تھا۔ کورس کے لیے نیا داخلہ.

مختصر جائزہ

DBT فریم ورک ELT (Extract - Transform - Load) مخفف میں T کے بارے میں ہے۔

BigQuery، Redshift، Snowflake جیسے پیداواری اور قابل توسیع تجزیاتی ڈیٹا بیس کی آمد کے ساتھ، ڈیٹا ویئر ہاؤس سے باہر تبدیلیاں کرنے کا کوئی فائدہ نہیں تھا۔ 

DBT ذرائع سے ڈیٹا ڈاؤن لوڈ نہیں کرتا ہے، لیکن اس ڈیٹا کے ساتھ کام کرنے کے بہترین مواقع فراہم کرتا ہے جو پہلے ہی اسٹوریج (اندرونی یا بیرونی اسٹوریج میں) میں لوڈ ہو چکا ہے۔

ڈیٹا بلڈ ٹول یا ڈیٹا ویئر ہاؤس اور اسموتھی کے درمیان کیا مشترک ہے۔
ڈی بی ٹی کا بنیادی مقصد کوڈ کو لینا، اسے ایس کیو ایل میں مرتب کرنا، ریپوزٹری میں صحیح ترتیب میں کمانڈز پر عمل درآمد کرنا ہے۔

ڈی بی ٹی پروجیکٹ کا ڈھانچہ

پروجیکٹ صرف 2 اقسام کی ڈائریکٹریز اور فائلوں پر مشتمل ہے:

  • ماڈل (.sql) - تبدیلی کی اکائی جسے SELECT استفسار کے ذریعے ظاہر کیا جاتا ہے۔
  • کنفیگریشن فائل (.yml) - پیرامیٹرز، سیٹنگز، ٹیسٹ، دستاویزات

بنیادی سطح پر، کام کی تشکیل اس طرح کی جاتی ہے:

  • صارف کسی بھی آسان IDE میں ماڈل کوڈ تیار کرتا ہے۔
  • CLI کا استعمال کرتے ہوئے، ماڈلز لانچ کیے جاتے ہیں، DBT ماڈل کوڈ کو SQL میں مرتب کرتا ہے۔
  • مرتب کردہ ایس کیو ایل کوڈ کو ایک دی گئی ترتیب (گراف) میں سٹوریج میں عمل میں لایا جاتا ہے۔

یہاں یہ ہے کہ سی ایل آئی سے چل رہا ہے ایسا لگتا ہے:

ڈیٹا بلڈ ٹول یا ڈیٹا ویئر ہاؤس اور اسموتھی کے درمیان کیا مشترک ہے۔

سب کچھ SELECT ہے۔

یہ ڈیٹا بلڈ ٹول فریم ورک کی ایک قاتل خصوصیت ہے۔ دوسرے لفظوں میں، DBT اسٹور میں آپ کے سوالات کو عملی جامہ پہنانے سے وابستہ تمام کوڈ کا خلاصہ کرتا ہے (CREATE, INSERT, UPDATE, DELETE ALTER, GRANT, ... کمانڈز سے تغیرات)۔

کسی بھی ماڈل میں ایک 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 (Common Table Expressions) - کوڈ کو منظم کرنے اور سمجھنے کے لیے جس میں بہت ساری تبدیلیاں اور کاروباری منطق شامل ہے

دوسرا: ماڈل کوڈ SQL اور زبان کا مرکب ہے۔ Jinja (ٹیمپلیٹنگ زبان)۔

مثال لوپ کا استعمال کرتی ہے۔ لیے اظہار میں بیان کردہ ادائیگی کے ہر طریقہ کے لیے رقم پیدا کرنے کے لیے مقرر. فنکشن بھی استعمال ہوتا ہے۔ ریفری - کوڈ کے اندر دوسرے ماڈلز کا حوالہ دینے کی صلاحیت:

  • تالیف کے دوران ریفری سٹوریج میں ٹیبل یا ویو کے ٹارگٹ پوائنٹر میں تبدیل ہو جائے گا۔
  • ریفری آپ کو ماڈل انحصاری گراف بنانے کی اجازت دیتا ہے۔

بالکل Jinja ڈی بی ٹی میں تقریباً لامحدود امکانات کا اضافہ کرتا ہے۔ سب سے زیادہ استعمال ہونے والے ہیں:

  • If / else بیانات - شاخ کے بیانات
  • لوپس کے لیے
  • متغیرات
  • میکرو - میکرو بنانا

میٹریلائزیشن: ٹیبل، ویو، انکریمنٹل

میٹریلائزیشن کی حکمت عملی ایک نقطہ نظر ہے جس کے مطابق ماڈل ڈیٹا کا نتیجہ سٹوریج میں محفوظ کیا جائے گا۔

بنیادی اصطلاحات میں یہ ہے:

  • ٹیبل - اسٹوریج میں فزیکل ٹیبل
  • ویو - ویو، سٹوریج میں ورچوئل ٹیبل

مادّہ سازی کی مزید پیچیدہ حکمت عملییں بھی ہیں:

  • انکریمنٹل - انکریمنٹل لوڈنگ (بڑے حقائق کی میزوں کی)؛ نئی لائنیں شامل کی جاتی ہیں، تبدیل شدہ لائنوں کو اپ ڈیٹ کیا جاتا ہے، حذف شدہ لائنوں کو صاف کیا جاتا ہے۔ 
  • Ephemeral - ماڈل براہ راست نہیں بنتا، لیکن دوسرے ماڈلز میں CTE کے طور پر حصہ لیتا ہے۔
  • کوئی دوسری حکمت عملی جو آپ خود شامل کر سکتے ہیں۔

مادّہ کاری کی حکمت عملیوں کے علاوہ، مخصوص سٹوریجز کے لیے اصلاح کے مواقع موجود ہیں، مثال کے طور پر:

  • میں Snowflake: عارضی میزیں، رویے کو ضم کرنا، ٹیبل کلسٹرنگ، گرانٹس کاپی کرنا، محفوظ نظارے
  • Redshift: ڈسٹکی، سورٹکی (انٹرلیویڈ، کمپاؤنڈ)، لیٹ بائنڈنگ ویوز
  • بگ سوال: ٹیبل کی تقسیم اور کلسٹرنگ، رویے کو ضم کرنا، KMS خفیہ کاری، لیبلز اور ٹیگز
  • چنگاری: فائل کی شکل (پارکیٹ، سی ایس وی، json، orc، ڈیلٹا)، partition_by، clustered_by، buckets، incremental_strategy

درج ذیل سٹوریجز فی الحال تعاون یافتہ ہیں:

  • پوسٹگریس
  • Redshift
  • بگ سوال
  • میں Snowflake
  • پریسٹو (جزوی طور پر)
  • چنگاری (جزوی طور پر)
  • مائیکروسافٹ ایس کیو ایل سرور (کمیونٹی اڈاپٹر)

آئیے اپنے ماڈل کو بہتر بنائیں:

  • آئیے اس کی فلنگ کو انکریمنٹل بنائیں
  • آئیے Redshift کے لیے سیگمنٹیشن اور چھانٹنے والی کلیدیں شامل کریں۔

-- Конфигурация модели: 
-- Инкрементальное наполнение, уникальный ключ для обновления записей (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 (ڈائریکٹڈ Acyclic گراف) کے نام سے بھی جانا جاتا ہے۔

DBT تمام پراجیکٹ ماڈلز کی کنفیگریشن کی بنیاد پر ایک گراف بناتا ہے، یا اس کے بجائے، ماڈلز کے اندر دوسرے ماڈلز سے ref() لنکس۔ گراف کا ہونا آپ کو درج ذیل کام کرنے کی اجازت دیتا ہے:

  • ماڈلز کو صحیح ترتیب میں چلانا
  • اسٹور فرنٹ کی تشکیل کا متوازی ہونا
  • صوابدیدی ذیلی گراف چلانا 

گراف ویژولائزیشن کی مثال:

ڈیٹا بلڈ ٹول یا ڈیٹا ویئر ہاؤس اور اسموتھی کے درمیان کیا مشترک ہے۔
گراف کا ہر نوڈ ایک ماڈل ہے؛ گراف کے کناروں کو ایکسپریشن ریف کے ذریعہ متعین کیا گیا ہے۔

ڈیٹا کوالٹی اور دستاویزات

خود ماڈلز بنانے کے علاوہ، DBT آپ کو نتیجے میں ڈیٹا سیٹ کے بارے میں متعدد مفروضوں کی جانچ کرنے کی اجازت دیتا ہے، جیسے:

  • کالعدم نہیں۔
  • منفرد
  • حوالہ سالمیت - حوالہ جاتی سالمیت (مثال کے طور پر، آرڈر ٹیبل میں کسٹمر_آئی ڈی کسٹمرز ٹیبل میں آئی ڈی کے مساوی ہے)
  • قابل قبول اقدار کی فہرست سے مماثل

آپ کے اپنے ٹیسٹ (کسٹم ڈیٹا ٹیسٹ) شامل کرنا ممکن ہے، جیسے، مثال کے طور پر، ایک دن، ایک ہفتہ، ایک ماہ پہلے کے اشارے کے ساتھ محصول کا % انحراف۔ SQL استفسار کے طور پر وضع کردہ کوئی بھی مفروضہ ایک امتحان بن سکتا ہے۔

اس طرح، آپ ویئر ہاؤس کی کھڑکیوں میں ڈیٹا میں ناپسندیدہ انحرافات اور غلطیوں کو پکڑ سکتے ہیں۔

دستاویزات کے لحاظ سے، ڈی بی ٹی ماڈل اور یہاں تک کہ انتساب کی سطحوں پر میٹا ڈیٹا اور تبصروں کو شامل کرنے، ورژن بنانے اور تقسیم کرنے کا طریقہ کار فراہم کرتا ہے۔ 

کنفیگریشن فائل کی سطح پر ٹیسٹ اور دستاویزات شامل کرنے کی طرح یہ ہے:

 - 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']

اور یہاں یہ ہے کہ یہ دستاویزات تیار کردہ ویب سائٹ پر کیسی دکھتی ہیں:

ڈیٹا بلڈ ٹول یا ڈیٹا ویئر ہاؤس اور اسموتھی کے درمیان کیا مشترک ہے۔

میکرو اور ماڈیولز

ڈی بی ٹی کا مقصد ایس کیو ایل اسکرپٹس کا ایک سیٹ بننا نہیں ہے، بلکہ صارفین کو ان کی اپنی تبدیلیاں بنانے اور ان ماڈیولز کو تقسیم کرنے کے لیے ایک طاقتور اور خصوصیت سے بھرپور ذرائع فراہم کرنا ہے۔

میکرو تعمیرات اور اظہارات کے سیٹ ہیں جنہیں ماڈلز کے اندر فنکشنز کہا جا سکتا ہے۔ میکرو آپ کو ماڈلز اور پروجیکٹس کے درمیان ڈی آر وائی (اپنے آپ کو نہ دہرائیں) انجینئرنگ کے اصول کے مطابق 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: تاریخ/وقت، سروگیٹ کیز، سکیما ٹیسٹ، پیوٹ/انپیوٹ اور دیگر کے ساتھ کام کرنا
  • خدمات کے لیے تیار شوکیس ٹیمپلیٹس جیسے Snowplow и پٹی 
  • مخصوص ڈیٹا اسٹورز کے لیے لائبریریاں، جیسے Redshift 
  • لاگنگ 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 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() }}"

لاگنگ ماڈیول آپ کو تمام ضروری میٹا ڈیٹا کو ایک علیحدہ جدول میں ریکارڈ کرنے کی اجازت دے گا، جسے بعد میں آڈٹ اور رکاوٹوں کا تجزیہ کرنے کے لیے استعمال کیا جا سکتا ہے۔

Looker میں لاگنگ ڈیٹا کی بنیاد پر ڈیش بورڈ ایسا لگتا ہے:

ڈیٹا بلڈ ٹول یا ڈیٹا ویئر ہاؤس اور اسموتھی کے درمیان کیا مشترک ہے۔

سٹوریج کی بحالی کی آٹومیشن

اگر آپ استعمال شدہ ریپوزٹری کی فعالیت کی کچھ توسیعات استعمال کرتے ہیں، جیسے UDF (یوزر ڈیفائنڈ فنکشنز)، تو ان فنکشنز کی ورژننگ، ایکسیس کنٹرول، اور نئی ریلیزز کی خودکار رولنگ DBT میں کرنا بہت آسان ہے۔

ہم ہیشز، ای میل ڈومینز، اور بٹ ماسک ڈی کوڈنگ کا حساب لگانے کے لیے Python میں 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 %}

Wheely میں ہم 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 (مسلسل انٹیگریشن)

ڈیٹا بلڈ ٹول یا ڈیٹا ویئر ہاؤس اور اسموتھی کے درمیان کیا مشترک ہے۔

حاصل يہ ہوا

ڈی ڈبلیو ایچ کو تیار کرنا اور استعمال کرنا اتنا ہی خوشگوار اور فائدہ مند ہو جاتا ہے جتنا کہ اسموتھی پینا۔ DBT جنجا، یوزر ایکسٹینشنز (ماڈیولز)، ایک کمپائلر، ایک ایگزیکیوٹر، اور ایک پیکیج مینیجر پر مشتمل ہوتا ہے۔ ان عناصر کو اکٹھا کرنے سے آپ کو اپنے ڈیٹا ویئر ہاؤس کے لیے کام کرنے کا مکمل ماحول ملتا ہے۔ آج DWH کے اندر تبدیلی کا انتظام کرنے کا شاید ہی کوئی بہتر طریقہ ہو۔

ڈیٹا بلڈ ٹول یا ڈیٹا ویئر ہاؤس اور اسموتھی کے درمیان کیا مشترک ہے۔

ڈی بی ٹی کے ڈویلپرز کی پیروی کے عقائد مندرجہ ذیل ہیں:

  • کوڈ، GUI نہیں، پیچیدہ تجزیاتی منطق کے اظہار کے لیے بہترین تجرید ہے۔
  • ڈیٹا کے ساتھ کام کرنے سے سافٹ ویئر انجینئرنگ (سافٹ ویئر انجینئرنگ) میں بہترین طریقوں کو اپنانا چاہیے۔

  • اہم ڈیٹا انفراسٹرکچر کو صارف کمیونٹی کے ذریعہ اوپن سورس سافٹ ویئر کے طور پر کنٹرول کیا جانا چاہئے۔
  • صرف تجزیاتی ٹولز ہی نہیں بلکہ کوڈ بھی تیزی سے اوپن سورس کمیونٹی کی ملکیت بن جائے گا۔

ان بنیادی عقائد نے ایک ایسی مصنوع کو جنم دیا ہے جو آج 850 سے زیادہ کمپنیاں استعمال کر رہی ہیں، اور یہ بہت سے دلچسپ ایکسٹینشنز کی بنیاد ہیں جو مستقبل میں تخلیق کی جائیں گی۔

دلچسپی رکھنے والوں کے لیے، ایک کھلے اسباق کی ایک ویڈیو ہے جو میں نے چند ماہ قبل OTUS میں ایک کھلے سبق کے حصے کے طور پر دیا تھا۔ ایمیزون ریڈ شفٹ اسٹوریج کے لیے ڈیٹا بلڈ ٹول.

DBT اور ڈیٹا ویئر ہاؤسنگ کے علاوہ، OTUS پلیٹ فارم پر ڈیٹا انجینئر کورس کے حصے کے طور پر، میں اور میرے ساتھی کئی دوسرے متعلقہ اور جدید موضوعات پر کلاسز پڑھاتے ہیں:

  • بگ ڈیٹا ایپلی کیشنز کے لیے تعمیراتی تصورات
  • اسپارک اور اسپارک اسٹریمنگ کے ساتھ مشق کریں۔
  • ڈیٹا کے ذرائع کو لوڈ کرنے کے طریقوں اور ٹولز کی تلاش
  • DWH میں تجزیاتی شوکیس بنانا
  • NoSQL تصورات: HBase، Cassandra، ElasticSearch
  • نگرانی اور آرکیسٹریشن کے اصول 
  • حتمی پروجیکٹ: رہنمائی کی مدد کے تحت تمام مہارتوں کو اکٹھا کرنا

حوالہ جات:

  1. DBT دستاویزات - تعارف - سرکاری دستاویزات
  2. کیا، بالکل، ڈی بی ٹی ہے؟ — DBT کے مصنفین میں سے ایک کے مضمون کا جائزہ لیں۔ 
  3. ایمیزون ریڈ شفٹ اسٹوریج کے لیے ڈیٹا بلڈ ٹول — یو ٹیوب، ایک OTUS کھلے سبق کی ریکارڈنگ
  4. گرین پلم کو جاننا — اگلا کھلا سبق 15 مئی 2020 ہے۔
  5. ڈیٹا انجینئرنگ کورس -اوٹس
  6. ایک بالغ تجزیاتی ورک فلو کی تعمیر - ڈیٹا اور تجزیات کے مستقبل پر ایک نظر
  7. یہ اوپن سورس تجزیات کا وقت ہے۔ - تجزیات کا ارتقاء اور اوپن سورس کا اثر
  8. dbtCloud کے ساتھ مسلسل انٹیگریشن اور خودکار بلڈ ٹیسٹنگ - DBT کا استعمال کرتے ہوئے CI بنانے کے اصول
  9. ڈی بی ٹی ٹیوٹوریل کے ساتھ شروع کرنا - مشق، آزاد کام کے لیے مرحلہ وار ہدایات
  10. جافل شاپ - گیتھب ڈی بی ٹی ٹیوٹوریل - گیتوب، تعلیمی پروجیکٹ کوڈ

کورس کے بارے میں مزید جانیں۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں