מהו DBTdata build tool?

הכלי DBT data build tool  נוצר על מנת לנהל את הטרנספורמציות המתבצעות באמצעות SQL בדרך הדומה לניהול כתיבת קוד.
DBT data build tool מאפשר לייצר Tables  ו views בבסיס נתונים בהתבסס על שאילתות select.

מצורף וידאו המכיל מצגת אודות DBT data build tool:  Play Video

הרעיון הוא שניתן לבצע את רוב פעולות ה T באמצעות DBT data build tool. ה T (Transformation)
מתוך תהליך ה ELT ( Extract Load transfer ) באמצעות SQL (חיבור טבלאות, חישובים, חיתוכים, פרסור ועוד)
כך שבמידה וכל הנתונים הנדרשים לביצוע ה T נמצאים בסכימה כגון: staging.
ניתן יהיה לכתוב שאילתת Select המבצעת מניפולציות על הנתונים ומיישמת את התוצר לכדי טבלה בסכימה כגון: DWH.

בנוסף הכלי מאפשר להוסיף שלבי בדיקות קוד (Test) וכן לייצר תלות (Ref) בין הרצת שאילתת ETL לאחרת.
כך שנוצר לנו Workflow. הכלי מגיע עם שפת Jinja שמאפשרת לעבות את הפתרון בדמות פונקציות, לולאות, משתנים ועוד.

השימוש ב DBT data build tool:

כפי שציינתי כאשר אנו עושים שימוש ב ELT, אנו מעבירים את הנתונים באופן גולמי מהמקור ישירות ליעד
כדי לבצע טרנספורמציות אנו זקוקים לכלי שיאפשר לנו בקרה וביצוע של הפעולות בשפת SQL.
ניתן כמובן לבצע את הטרנספורמציה גם בשפה כגון: Python
אך מכיוון שנתונים נמצאים כבר בבסיס הנתונים היעד הרי שיש יתרון לשימוש ב SQL.

הDBT data build tool מאפשר לנו לבצע את כל הדרישות הנ"ל וכן שליטה בתהליך, בקרה,
בדיקות ועוד, באופן הדומה לכתיבת קוד ופיתוח מודרני.

האתגר:

למה אנחנו צריכים את זה אם יש לנו כלי ETL כגון: SSIS, Pentaho Talend, informatica, ?
כיוון שעולם אינטגרצית הנתונים עובר שינוי בחלק מעולמות התוכן.
זה נכון שבעולם המסורתי קרי תעשיה, לוגיסטיקה, ריטייל וכדומה
לא השתנה הרבה אך ארגונים שעוברים לענן ועושים שימוש בבסיסי נתונים MPP
כגון: Snowflake, redshift, Bigquery  ואחרים עוברים מ ETL ל ELT. (יוסבר עוד מעט).
התוצאה של המהלך היא שהנתונים הגולמיים "נוחתים" ביעד אך על מנת להכין אותם
למבנה מתאים לאנליטיקה יש צורך לבצע טרספורציות תוך כדי שליטה על התהליך, לוגים, אתרעות.

 

ההבדל בין ETL ל ELT:

המטרה של שניהם:

משיכת מידע ממקורות שונים כגון בסיסי נתונים רלציוניים, קבצים שונים, API וכו'.
במטרה להביא אותם ליעד משותף במבנה שיאפשר ביצוע אנליטיקה באופן פשוט.
מטרה נוספת לסנכרן בין מקורות מידע באופן אוטומטי ויעיל.

ב ETL : אנו קודם מבצעים Extract כלומר גזירה של הנתונים מהמקור
תוך כדי התהליך אננו מבצעים טרנספורמציות (Transform)
כגון: מיון, חישובים, סינון, איחוד מקורות מידע ועוד ולאחר מכן מעבירים את הנתונים ליעד (Load)

ב ELT : אנו מבצעים את ה Extract ולאחריו ישירות את ה Load במבנה המקורי,
רק לאחר מכן בבסיס הנתונים המבצע טרנספורמציות (T) בדרך כלל באמצעות SQL.

כלים המבצעים את השלב של ה EL יכולים להיות ה "מסורתיים" כגון: SSIS, Pentaho ,Talend, informatica
אך גם כלי ה SAAS בענן כגון: Rivery, Fivetran, airbyte ועוד…

להרצאה על Rivery ככלי ELT לחץ כאן

כמו כן הרצאה ווידאו על ETL VS ELT לחץ כאן


הרכיבים של 
DBT והפונקציונליות:

מודולים:

מודול ‏הוא המרכיב החשוב ביותר ב DBT data build tool,
מודול הוא המקבילה של שאילתת SQL התוצר שלה ייושם לכדי אחד מהארבעה הבאים: materialization:

טבלה:
הפשוט ביותר, שאילתת SQL תייצר לנו טבלה ביעד,
במידה והטבלה אינה קיימת DBT data build tool ייצור אותו  באופן אוטומטי,
במידה והוא כבר קיים הטבלה תידרס ותבנה מחדש.

view:
שאילתא ה SQL תייצר לנו View חדש ביעד או ידרוס קיים

incremental:
השאילתה תעדכן או תוסיף נתונים חדשים לטבלה קיימת,
במידה והטבלה אינה קיימת DBT data build tool יצור טבלה חדשה עם הנתונים הראשוניים.

Ephemeral:
תוצר השאילתה ישמש בזמן הריצה עבור מודולים אחרים מעין טבלה בזיכרון

בדיקות של הקוד: לינק ל tests

DBT data build tool יכול לבצע בדיקות גם של המקור אך גם של היעד לאחר היווצרו.

לדוגמא: נוצרת טבלה של לקוחות, נוכל לוודא שהמפתח של הלקוח הוא חד חד ערכי ואינו ריק.
כמו כן אנו יכולים לבדוק האם יש לה שדה המסוים רפרנס לשדה בטבלה אחרת ואפילו לכתוב בדיקות משל עצמנו.

ל DBT data build tool יש תכונות נוספות כגון:

  1. שימוש במשתנים (variables )
  2. קביעה לאיזה סכימה תיכתב הטבלה (schema)
  3. קביעת מקורות (sources)
  4. בדיקת ריענון אחרון של המקור. (freshness)

נושאים מתקדמים ב DBT data build tool:

אפשר לכתוב בשפה ששמה Jinja. בעזרת שפה זו ניתן להרחיב את הפונקציונליות של DBT data build tool

macro:
קוד שניתן לקרוא לו תוך כדי ריצה של המודול או לפני הריצה או אחרי הריצה,
השימוש ב macro מאפשר קריאה לאותו הקוד מממודולים שונים, מעין function וכן לבצע פעולות מורכבות כגון: loops ועוד.

Hooks:
פונקציונליות זו מאפשרת לנו לבצע פעולות SQL, כולל פעולות מחיקה, יצירה, הרשאות וכו'.
לפני או אחרי ריצת DBT data build tool וכן לפני או אחרי כל מודול בפני עצמו.

תוספות: Packages
ל DBT data build tool יש תוספות רבות שניתן להוריד מהאינטרנט,
ב DBT data build tool זה נקרא Packages (לינק)


כיצד 
מתזמנים את ריצת DBT data build tool: scheduling

כיוון שבסופו של דבר ניתן להריץ אותו על ידי הרצת פקודה בשורת הפקודות,
אנו זקוקים לכלי שישלוט על התזמון ניתן להריץ אותו ב crontab תחת לינוקס אובונטו לדוגמא. כמו כן בעזרת jenkins, Airflow ו Prefect

בנוסף: DBT data build tool יצרו את DBT cloud המאפשר לנו להריץ את DBT data build tool ישירות מול ‏repository של GIT בתשלום

כמו כן כלי SAAS המשמשים ל EL כגון: ‏ ‏Fivetran ו Airbyte
וכן כלי ויזואליזציה BI שונים, אף הם מאפשרים הרצה ישירות – Holistics.io

עלינו:

אנו, Inflow, מומחים ביישום ETL | ELT | BI בכלים מגוונים וכמובן ב DBT data build tool – נשמח שתצרו קשר במידה
ואתם מעונינים בפיתרון ELT עם DBT.