لوگوی سایت
پشتیبانی
لود داده

لود با تبدیل (Transform)

در این صفحه با نحوه لود و تبدیل داده‌ها در انبار داده داده‌لند از طریق موتور Transform و زمان‌بندی اجرا آشنا می‌شوید.

در لود با تبدیل (Transform)، داده‌ها از سایر جداول انبار داده از طریق کوئری‌های SQL خوانده شده و پس از اعمال تبدیل‌ها و محاسبات، در جدول مقصد لود می‌شوند. این روش در دو سناریوی کلیدی کاربرد دارد:

  • پیاده‌سازی فرآیند ELT: تبدیل داده‌های خام از جداول استیجینگ (Staging) به جداول تحلیلی وقایع (Fact) و وصف (Dimension) انجام می‌پذیرد (مراجعه به مقایسه ETL و ELT).
  • ساخت جداول لایه طلا (Gold): ایجاد جداول تجمیعی (Aggregated) یا نماهای ۳۶۰ درجه برای افزایش سرعت لود داشبوردها و گزارش‌ها صورت می‌گیرد.

دسترسی

این بخش در صفحه مدیریت دیتاست با کلیک روی جدول موردنظر (دارای دسترسی مدیریت) و ورود به بخش تنظیمات لود داده در دسترس قرار می‌گیرد.


اصل Single Writer

داده‌لند جهت تضمین سلامت و یکپارچگی داده‌ها از اصل نویسنده واحد (Single Writer) پیروی می‌کند؛ بر این اساس در هر جدول فقط یک روش ورود داده می‌تواند فعال باشد:

  • لود مستقیم (API): داده‌ها منحصراً از سامانه‌های خارجی از طریق اندپوینت‌ها در جدول درج می‌شوند.
  • لود با تبدیل (Transform): ورودی‌های مستقیم خارجی مسدود می‌شوند و داده‌ها صرفاً از طریق اجرای کوئری تبدیل داخلی در جدول نوشته می‌شوند.

پشتیبانی انواع دیتاست

وضعیت پشتیبانی انواع دیتاست از روش‌های ورود داده به شرح زیر است:

نوع دیتاستلود مستقیم (API)لود با تبدیل (Transform)
جدول وقایع، وصف و آزاد✅✅
جدول استیجینگ✅❌
جدول آماده✅✅
تبدیل آماده❌✅
ماژول کلاینت✅ (جدول رویدادها با SDK لندر)✅ (جدول لاگ فعالیت روزانه کاربر)

تنظیمات زمان‌بندی

پس از درج کوئری تبدیل (یک دستور استاندارد SELECT)، شیوه اجرای فرآیند تعیین می‌گردد:

  • حالت دستی: فرآیند با درخواست مستقیم کاربر و بدون وابستگی به واترمارک اجرا می‌شود.
  • حالت خودکار: فرآیند طبق زمان‌بندی مشخص و بر مبنای واترمارک به صورت افزایشی اجرا می‌گردد.

پارامترهای قابل تنظیم در حالت خودکار شامل موارد زیر است:

عنوان تنظیممقادیر انتخابیتوضیحات
فرکانس اجرابازه، روزانه، هفتگی، ماهانهدوره‌بندی اجرای زمان‌بندی‌شده را تعیین می‌کند.
فاصله زمانی اجرا۵، ۱۵ و ۳۰ دقیقه یا ۱، ۲، ۳، ۶ و ۱۲ ساعتفواصل زمانی ثابت بین هر اجرا را در فرکانس «بازه» مشخص می‌سازد.
بازه مجاز اجرادو محدوده ساعتی از 00:00 تا 23:59ساعات مجاز اجرا در طول شبانه‌روز را در فرکانس «بازه» محدود می‌کند.
ساعت اجرا (روزانه)بازه‌های ۳۰ دقیقه‌ای از 00:00 تا 23:30زمان دقیق اجرای روزانه را بر اساس افق زمانی ایران (Asia/Tehran) مشخص می‌نماید.
روز و ساعت (هفتگی)روزهای هفته + ساعت (00:00 تا 23:00)روز و ساعت مشخص اجرای فرآیند در هفته را تعیین می‌کند.
روز و ساعت (ماهانه)روز ماه (۱ تا ۳۰) + ساعت اجراروز و ساعت اجرای ماهانه را مشخص می‌سازد (در صورت نبود روز در ماه، اجرا رد می‌شود).
نشانگر پردازش (Watermark)تاریخ و زمان دقیقنقطه شروع استخراج بر اساس ستون record_time است و پس از هر اجرای موفق آپدیت می‌گردد.
بازه Lookback۵، ۱۰، ۳۰ یا ۶۰ دقیقهواترمارک را جهت پوشش داده‌های دیررس (Late Data) به عقب برمی‌گرداند.
در تبدیل‌های آماده، تنظیمات زمان‌بندی از پیش مشخص است و کوئری تبدیل بر مبنای تنظیمات رابط کاربری به صورت خودکار تولید و اجرا می‌گردد.

قوانین کوئری تبدیل

اعتبارسنجی کوئری تبدیل بر اساس نوع اجرا متفاوت است:

الزامات کوئریخودکاردستیتوضیحات
انحصار به دستور SELECT✅✅کوئری منحصراً شامل یک دستور SELECT است و اجرای دستورات تغییر داده یا ساختار (DML/DDL) مجاز نمی‌باشد.
تطابق با ستون‌های مقصد✅✅کلیه ستون‌های اجباری جدول مقصد باید با نام و نوع داده سازگار در خروجی کوئری وجود داشته باشند.
الزام ستون record_time✅❌جهت مدیریت واترمارک در حالت خودکار الزامی است؛ اما در حالت دستی نیازی به حضور آن نیست.
ممنوعیت فیلتر روی record_time✅❌اعمال فیلتر زمانی روی این ستون در حالت خودکار مجاز نیست؛ زیرا سیستم شروط واترمارک و Lookback را اعمال می‌کند.
سقف مجاز زمان اجرای کوئری تبدیل در هر دو حالت دستی و خودکار برابر با ۳۰ ثانیه است.

لود افزایشی (Incremental)

در اجرای خودکار، داده‌ها بر مبنای مقدار Watermark و Lookback به صورت افزایشی استخراج و لود می‌گردند. چنانچه حجم ردیف‌ها از سقف مجاز هر درخواست (۱۰ مگابایت) فراتر رود، سیستم خروجی را به چند دسته (Multi-Batch) تفکیک کرده و هر دسته را به شکل مجزا اعتبارسنجی و لود می‌نماید.

پس از اجرای کوئری تبدیل و پیش از انجام لود نهایی، سیستم بررسی می‌کند که آیا در میان ردیف‌های حاصل، رکوردی با مقدار ستون record_time بزرگ‌تر از واترمارک فعلی وجود دارد یا خیر:

  • در صورت وجود حداقل یک ردیف با زمانی بزرگ‌تر از واترمارک (record_time > Watermark)، عملیات لود در جدول مقصد اجرا می‌گردد و واترمارک آپدیت می‌شود.
  • در صورت نبود ردیف جدیدتر، کل فرآیند لود لغو می‌شود. این سازوکار مانع از آن می‌گردد که با وجود بازه Lookback و عدم تغییر داده در مبدأ، ردیف‌های تکراری لود شوند و مقدار record_time جدول مقصد پیوسته تغییر یابد؛ زیرا این جدول ممکن است خود مبدأ فرآیندهای پایین‌دستی (مانند سایر تبدیل‌ها یا فرآیند توزیع داده Reverse ETL) باشد.
جهت لود اولیه داده‌های انبوه تاریخی، پیشنهاد می‌شود ابتدا کوئری را با اعمال فیلترهای زمانی به شکل دستی (Manual) اجرا نمایید و پس از پردازش داده‌های گذشته، زمان‌بندی را روی حالت خودکار (Auto) قرار دهید.

مدیریت خطاها

خطاهای اجرای تبدیل به دو دسته تفکیک می‌شوند:

نوع خطاسناریوهارفتار سیستم
خطاهای مسدودکنندهخطای سینتکس کوئری، مغایرت ساختار با مقصد، رد شدن ردیف‌ها در اعتبارسنجی یا اتمام اعتبار فضااجرای خودکار بلافاصله متوقف (Paused) می‌شود و مقدار واترمارک تغییر نمی‌کند.
خطاهای گذرا و سیستمیقطعی موقت ارتباط یا خطاهای موقت سرورسیستم تا ۳ مرتبه تلاش مجدد انجام می‌دهد و در صورت تداوم خطا، زمان‌بندی متوقف می‌گردد.

گزارش اجرای تبدیل

تاریخچه اجراهای تبدیل هر جدول تا ۹۰ روز یا سقف ۵۰۰ اجرای اخیر در جدول سیستمی dl_trans_runs ذخیره می‌شود و هم در تب «گزارش اجرای تبدیل» و هم از طریق نگارش کوئری SQL در دسترس است:

نام ستونعنوان در رابط کاربریتوضیحات
run_timeزمان اجرازمان دقیق شروع اجرا را ثبت می‌کند.
run_idشناسه اجراشناسه یکتای سیستم برای هر اجرا را نمایش می‌دهد.
tableجدولنام جدول مقصد در انبار داده را مشخص می‌سازد.
triggerنوع اجرانوع اجرای دستی (manual) یا خودکار (auto) را نشان می‌دهد.
triggered_byاجراکنندهایمیل کاربر در اجرای دستی یا مقدار «سیستم» در اجرای خودکار را نمایش می‌دهد.
statusوضعیتنتیجه موفق یا ناموفق بودن فرآیند را مشخص می‌کند.
loaded_rowsتعداد ردیف‌های لودمجموع ردیف‌های ثبت‌شده با موفقیت در جدول مقصد را نشان می‌دهد.
batches_sentدسته‌های موفقتعداد دسته‌های داده تایید و درج‌شده را گزارش می‌دهد.
batches_failedدسته‌های ناموفقتعداد دسته‌های داده ردشده در اعتبارسنجی را نمایش می‌دهد.
processing_costهزینه پردازشمیزان اعتبار پردازش کسرشده بابت اجرای تبدیل را ثبت می‌نماید.
run_watermarkنشانگر اجرامقدار واترمارک را در زمان آغاز اجرای فرآیند نشان می‌دهد.
errorخطاشرح خطای رخ‌داده در اجراهای ناموفق را نمایش می‌دهد.
queryکوئری اجرامتن کامل دستور SQL اجراشده را جهت پایش و رفع خطا ثبت می‌کند.