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

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

WITH suspicious_transactions AS ( SELECT transaction_id, account_id, amount, transaction_date FROM transactions WHERE amount > 10000 -- فرض کنید تراکنشهای بالای 10 هزار دلار مشکوک هستند ) SELECT * FROM suspicious_transactions;
models: my_project: accounts: materialized: table transactions: depends_on: - accounts
tests: - name: positive_balance condition: "balance >= 0"
تصور کنید تو بخش دادههای یه بانک بزرگ کار میکنید. باید دادههای مربوط به تراکنشها، تسهیلات و مشتریها رو مرتب کنید. با DBT، میتونید یه پایپلاین درست کنید که هر روز این کارها رو اتوماتیک انجام بده. به جای اینکه وقتتون رو روی کارهای دستی بذارید، میتونید روی تحلیل دادهها تمرکز کنید. برای مثال، میتونید از دادههای آماده شده، گزارشی از تعداد تراکنشهای هر شعبه تهیه کنید.
SELECT branch_id, COUNT(*) AS transaction_count FROM transactions GROUP BY branch_id;
هر کسی که با دادهها سروکار داره! از تحلیلگران داده گرفته تا مهندسین داده. مخصوصاً اگه انبار دادههاتون توی ابزارهایی مثل Snowflake یا BigQuery باشه، DBT عالی جواب میده.
یکی از مشکلاتی که داره اینه شما منبع و مقصد داده هایی که دارین روش کار تغییر انجام میدین می بایست یک دیتابیس باشه یعنی شما نمی تونید دیتا رو از دیتابیس اراکل بخونید و بیایید توی اسنوفلیک بریزین در واقع دی بی تی یک تولز فقط برای ترنسفورم و تست روی داده هاست. شما می تونید توی هر تولز ای تی ال خودتون مثل ایرفلو یا دیتافکتوری داده هاتونو لود کنید و با دی بی تی اونو ترنسفورم کنید.
من خودم اول مقداری مستندات خودشو از اینجا خوندم ولی حوصلمو بعد یه مدت سر برد رفتم سراغ آموزش و چندتایی دانلود کردم و به نظرم این آموزش از همه بهتر آمد.
دی بی تی یه ابزار ساده ولی قدرتمنده که میتونه زندگی تیمهای داده رو راحتتر کنه. تو بانکداری یا هر صنعت دیگهای که نیاز به مدیریت حجم زیادی از داده هست، DBT کمک میکنه همه چیز مرتب و آماده باشه. با قابلیتهایی مثل تست دادهها، مدیریت وابستگیها و ادغام با Git، DBT یکی از بهترین ابزارها برای تیمهای داده محسوب میشه. اگه هنوز امتحانش نکردید، پیشنهاد میکنم همین امروز یه نگاهی بهش بندازید!