ویرگول
ورودثبت نام
حامد عزیزی
حامد عزیزیسلام! من حامد هستم حدود 15 ساله که کد نویسی میکنم بیشتر به عنوان مهندس داده خیلی دوست دارم اگر دانشی دارم اونو به زبان فارسی هم به اشتراک بگذارم با شما
حامد عزیزی
حامد عزیزی
خواندن ۵ دقیقه·۱ سال پیش

DBT توی مهندسی داده به چه درد میخوره

من بعد از اینکه این چند تا پست روی توی لینکدین خودم راجع به دی بی تی گذاشتم گفتم خوبه بیام یکم راجع بهش بگم اینجا.

ابزار ساده و کاربردی برای تیم‌های داده

شاید اسمش رو شنیده باشید: Data Build Tool، یا همون DBT، ابزاری که می‌تونه کار با داده‌ها رو خیلی راحت‌تر کنه.چند سالی هست که بسیاری از تیم های داده ای که من توش کار میکنم و میکردم باهاش کار میکنن، اگه تو حوزه‌ای مثل بانکداری کار می‌کنید و مدام باید داده‌ها رو از سیستم‌های مختلف جمع‌آوری و آماده تحلیل کنید، DBT دقیقا همون چیزیه که لازم دارید.

دی بی تی چی هست؟

یه ابزار خیلی کاربردی که کارش تبدیل داده‌ها در انبار داده‌هاست. اما فرقش اینه که تمرکزش فقط روی بخش "Transform" هست، یعنی همون جایی که داده‌ها رو تمیز و آماده می‌کنیم. به زبان ساده، شما داده‌ها رو از منابع مختلف می‌گیرید و DBT کمک می‌کنه اونا رو مرتب کنید تا بشه راحت‌تر استفاده کرد.
خیلی ساده می شه توش داده ها رو با پایتون ترنسفورم کرد روشون فانکشن نوشت که مثلا داده ها این شکلی بشن بعد از ترنسقورم اما برای من قابلیت تست دی بی تی از همه خفن تره.

تست داده ها

من مواردی که میشه توی دی بی تی براش تست نوشت رو با یه مثال اوردم. فقط قبل از اینکه بخونید تصور کنید با ابزار ای تی ال خودتون جقدر امکان داره که بشه به راحتی این شرایط رو پیاده سازی کرد.

  • وجود مقادیر غیر NULL: شماره حساب مشتری (AccountNumber) نباید NULL باشد.
  • یکتایی مقادیر در یک ستون: شماره تراکنش (TransactionID) باید یکتا باشد.
  • درستی مقادیر بر اساس محدوده خاص: مبلغ واریزی (DepositAmount) باید بین 0 تا 1,000,000 باشد.
  • مقدارهای مشخص از لیستی خاص: وضعیت تراکنش (TransactionStatus) فقط باید یکی از مقادیر "Pending", "Completed", یا "Failed" باشد.
  • روابط بین جداول: هر CustomerID در جدول تراکنش‌ها باید در جدول مشتریان وجود داشته باشد.
  • تست شروط سفارشی: سود تسهیلات (InterestRate) نباید از 25% تجاوز کند.
  • تست کیفیت داده‌ها با سنجش داده‌های تاریخی: تعداد تراکنش‌های روزانه نباید نسبت به هفته قبل کاهش شدید داشته باشد.
  • سازگاری داده‌ها با Schema: ستون تاریخ تراکنش‌ها (TransactionDate) باید فرمت YYYY-MM-DD داشته باشد.
  • مطابقت داده‌ها با Regex: شماره کارت اعتباری باید با الگوی 16 رقمی مطابقت داشته باشد.
  • تناسب ستون‌های مرتبط: مجموع مبالغ تراکنش‌ها در جدول تراکنش‌ها باید با مانده حساب مشتری در جدول حساب‌ها هماهنگ باشد.
  • روندها یا تغییرات غیرعادی در داده‌ها: برداشت‌های نقدی بیش از 100,000 در روز برای یک مشتری به عنوان مورد غیرعادی ثبت شود.

ایجاد data lineage

یکی ترجمه فارسیشو برای من بنویسه لطفا :) این قابلیت به شکل خودکار وقتی شما در حال توسعه پکیج خودتون هستین ایجاد میشه و نیاز نیست کار خاصی براش بکنید به چه درد میخوره برای من بیشتر توی جلسات به کار آمده وقتی میخوام با دولوپرهای دیگه یا ذینفع ها صبحبت کنم اما توی بانکداری اینجا هم یک الزام هست که بدونیم دیتایی که به دست ما رسیده از کجا آمده و کجاها ممکنه تغییر کرده باشه.


ویژگی‌های جالب DBT

  • مدل‌سازی ساده: تو DBT، هر چیزی یه مدل هست که با SQL نوشته می‌شه. اینطوری همه چیز شفاف و قابل فهمه. مثلا تو یه بانک، می‌تونید یه مدل برای تراکنش‌های مشتری‌ها بسازید که نشون بده کدوم تراکنش‌ها مشکوک به تقلب هستن.
WITH suspicious_transactions AS ( SELECT transaction_id, account_id, amount, transaction_date FROM transactions WHERE amount > 10000 -- فرض کنید تراکنش‌های بالای 10 هزار دلار مشکوک هستند ) SELECT * FROM suspicious_transactions;
  • وابستگی‌ها رو مدیریت می‌کنه: فرض کنید دارید گزارش‌های مختلفی از تراکنش‌ها، موجودی حساب‌ها و پرداخت‌ها آماده می‌کنید. DBT خودش ترتیب اجرا رو مشخص می‌کنه و لازم نیست نگران باشیم که کدوم داده‌ها اول باید آماده بشن.
models: my_project: accounts: materialized: table transactions: depends_on: - accounts
  • تست کیفیت داده: می‌تونید تست بذارید که مطمئن بشید داده‌هاتون درست و کامل هستن. مثلاً اگه موجودی حساب‌ها منفی شد، DBT سریع بهتون هشدار می‌ده.
tests: - name: positive_balance condition: &quotbalance >= 0&quot
  • همکاری تیمی راحت: با Git هماهنگ می‌شه، یعنی هر کسی تو تیم می‌تونه تغییرات رو ببینه و روی همون نسخه کار کنیم.

چرا DBT به درد می‌خوره؟

تصور کنید تو بخش داده‌های یه بانک بزرگ کار می‌کنید. باید داده‌های مربوط به تراکنش‌ها، تسهیلات و مشتری‌ها رو مرتب کنید. با DBT، می‌تونید یه پایپلاین درست کنید که هر روز این کارها رو اتوماتیک انجام بده. به جای اینکه وقتتون رو روی کارهای دستی بذارید، می‌تونید روی تحلیل داده‌ها تمرکز کنید. برای مثال، می‌تونید از داده‌های آماده شده، گزارشی از تعداد تراکنش‌های هر شعبه تهیه کنید.

SELECT branch_id, COUNT(*) AS transaction_count FROM transactions GROUP BY branch_id;

چه کسانی از DBT استفاده می‌کنن؟

هر کسی که با داده‌ها سروکار داره! از تحلیلگران داده گرفته تا مهندسین داده. مخصوصاً اگه انبار داده‌هاتون توی ابزارهایی مثل Snowflake یا BigQuery باشه، DBT عالی جواب می‌ده.

مشکلاتی که من باهاش داشتم

یکی از مشکلاتی که داره اینه شما منبع و مقصد داده هایی که دارین روش کار تغییر انجام میدین می بایست یک دیتابیس باشه یعنی شما نمی تونید دیتا رو از دیتابیس اراکل بخونید و بیایید توی اسنوفلیک بریزین در واقع دی بی تی یک تولز فقط برای ترنسفورم و تست روی داده هاست. شما می تونید توی هر تولز ای تی ال خودتون مثل ایرفلو یا دیتافکتوری داده هاتونو لود کنید و با دی بی تی اونو ترنسفورم کنید.

منبع برای شروع کار

من خودم اول مقداری مستندات خودشو از اینجا خوندم ولی حوصلمو بعد یه مدت سر برد رفتم سراغ آموزش و چندتایی دانلود کردم و به نظرم این آموزش از همه بهتر آمد.

جمع‌بندی

دی بی تی یه ابزار ساده ولی قدرتمنده که می‌تونه زندگی تیم‌های داده رو راحت‌تر کنه. تو بانکداری یا هر صنعت دیگه‌ای که نیاز به مدیریت حجم زیادی از داده هست، DBT کمک می‌کنه همه چیز مرتب و آماده باشه. با قابلیت‌هایی مثل تست داده‌ها، مدیریت وابستگی‌ها و ادغام با Git، DBT یکی از بهترین ابزارها برای تیم‌های داده محسوب می‌شه. اگه هنوز امتحانش نکردید، پیشنهاد می‌کنم همین امروز یه نگاهی بهش بندازید!


مهندسی دادهData Engineerکارت اعتباری
۱
۰
حامد عزیزی
حامد عزیزی
سلام! من حامد هستم حدود 15 ساله که کد نویسی میکنم بیشتر به عنوان مهندس داده خیلی دوست دارم اگر دانشی دارم اونو به زبان فارسی هم به اشتراک بگذارم با شما
شاید از این پست‌ها خوشتان بیاید