שליטה ב-Query Folding ב-Power BI: העבירו את העבודה למקור הנתונים
By Mirko Peters ·
כשעובדים עם Power BI, מעט דברים מתסכלים יותר מלראות רענון נתונים שנמשך נצח, או גרוע מכך, נכשל לגמרי כי נגמרו המשאבים…
Automatically translated with AI from the original post. Read the English original
כשעובדים עם Power BI, מעט דברים מתסכלים יותר מלראות רענון נתונים שנמשך נצח, או גרוע מכך, נכשל לגמרי כי נגמרו המשאבים. אם אתם שואבים מיליוני שורות ממסד נתונים SQL מרוחק, ממחסן נתונים ארגוני או משירות ענן, אופן הטיפול בטרנספורמציות חשוב מאוד. כל שלב שאתם מבצעים ב-Power Query יכול להתבצע ביעילות על ידי שרת החזק שמארח את הנתונים, או בעצלתיים על ידי המחשב המקומי שלכם או על ידי מנוע הזיכרון של שירות Power BI. כאן נכנס לתמונה הקסם של query folding.
בפוסט הזה נצלול לעומק ל-query folding, נבחן כיצד הוא מייעל טרנספורמציות של נתונים, נציג טכניקות מעשיות שיבטיחו שהשלבים שלכם יתקפלו כראוי, נסקור מלכודות נפוצות ששוברות את שרשרת הקיפול, ונראה איך אפשר לשפר משמעותית את יעילות הרענון של הדוחות. בואו נחזיר את העבודה לאן ששייכת: מקור הנתונים.
מבוא ל-Query Folding
בבסיסו, query folding הוא המנגנון שבאמצעותו Power Query מתרגם את שלבי הטרנספורמציה שאתם בונים בממשק המשתמש לשפת שאילתות מקורית, בדרך כלל SQL, ושולח את השאילתה הזו בחזרה למסד הנתונים המקורי לביצוע. במקום להוריד כל שורה, טבלה ועמודה לתוך הזיכרון של Power BI ואז לסנן, לקבץ או לחבר אותם באופן מקומי, Power BI מבקש ממסד הנתונים המקורי לבצע את רוב העבודה הכבדה.
חשבו על זה כמו הזמנת מצרכים. אם אתם הולכים למחסן ענק, אוספים כל פריט בחנות, מביאים אותם לשולחן המטבח שלכם, ואז זורקים 90% מהם כי הם פגי תוקף או לא מה שביקשתם, אתם מבזבזים זמן ואנרגיה עצומים. זה מה שקורה בלי query folding. כשה-query folding פעיל, אתם נותנים לפקיד במחסן רשימה מסוימת: "תנו לי רק את התפוחים שמשקלם מעל ליברה, מקובצים לפי צבע". הפקיד מבצע את המיון במחסן ומגיש לכם קופסה קטנה שמכילה רק את מה שביקשתם. המטבח שלכם נשאר נקי, ואתם מסיימים לבשל הרבה יותר מהר.
כיצד Query Folding מייעל טרנספורמציות של נתונים
Query folding הוא אבן היסוד של ארכיטקטורת Power BI מדרגית. כשהוא פועל כראוי, הוא מצמצם למינימום את העברת הנתונים ברשת, מפחית משמעותית את צריכת הזיכרון בשלב הרענון ומאיץ את תהליך הפיתוח שלכם.
כשאתם מיישמים טרנספורמציות כמו סינון שורות, הסרת עמודות, מיון או ביצוע צבירות בסיסיות מוקדם ברצף השלבים המיושמים ב-Power Query, הקונקטור הרלוונטי בודק אם מקור הנתונים יכול לבצע את הפעולה באופן מקורי. אם כן, השלבים האלה עטופים בשאילתה אחת ומותאמת מאוד שנשלחת למקור. מנוע מסד הנתונים מבצע אותה מול אינדקסים קיימים, כלומר הוא יכול לעבור על מיליוני שורות תוך אלפיות שנייה.
לעומת זאת, אם query folding נשבר, Power BI נאלץ למשוך את כל מערך הנתונים הלא-דחוס והלא-מסונן דרך הרשת אל מנוע ההערכה של Power Query (מנוע ה-mashup). ברגע שהנתונים נמצאים מקומית, Power BI מיישם את המסננים והטרנספורמציות שלכם באמצעות מעבד הזיכרון והזיכרון המקומיים. במערכי נתונים ארגוניים גדולים, זו מתכון בטוח לתקלות timeout בשער הנתונים, שגיאות חוסר זיכרון ועדכוני דוחות איטיים.
טכניקות מעשיות להבטחת קיפול תקין של השלבים
לא כל שלבי Power Query שווים, ולא כל מקורות הנתונים תומכים ב-query folding. מסדי נתונים יחסיים כמו SQL Server, Oracle ו-PostgreSQL בעלי יכולות קיפול מתקדמות, ואילו קבצים שטוחים כמו CSV או חוברות Excel אינם מתקפלים באותו אופן, משום שאין להם מעבד שאילתות מקורי.
כדי לוודא שהשלבים שלכם מתקפלים בהצלחה, עליכם לבנות את השלבים המיושמים בסדר מסוים ולהיות מודעים לפונקציות שבהן אתם משתמשים. להלן טכניקות מעשיות שישמרו על קיפול השאילתות שלכם:
- סננו מוקדם: תמיד החילו את מסנני השורות שלכם (למשל, שמירה רק על שלוש השנים האחרונות של נתונים או סינון לפי סטטוס פעיל) קרוב ככל האפשר לתחילת השלבים המיושמים. ככל שתצמצמו את מערך הנתונים מוקדם יותר, כך תרגום ה-SQL שייווצר בהמשך יהיה יעיל יותר.
- הסרת עמודות מיותרות מוקדם: הסרת עמודות שאינן בשימוש בשלב מוקדם של התהליך מונעתממקור הנתונים לבזבז משאבים על סריאליזציה והעברה של נתונים שאינכם צריכים.
- הבנת הטרנספורמציות הנתמכות: פעולות כגון הסרת עמודות, שינוי שם של עמודות, מיזוג טבלאות (בתנאים מסוימים), הוספה לטבלה קיימת, ועמודות מותנות בסיסיות בדרך כלל נקלטות היטב ב-folding. נוסחאות מותאמות אישית מורכבות, מניפולציות טקסט הכוללות חיפושי אינדקס, ועמודות מותאמות אישית הדורשות תכנות כבד, שוברות לעיתים קרובות את שרשרת ה-folding.
- בדיקת האפשרות View Native Query: לחצו לחיצה ימנית על כל שלב מיושם בעורך Power Query. אם האפשרות "View Native Query" זמינה ולחיצה, מזל טוב, השאילתה מבצעת folding בהצלחה עד לשלב הזה. אם האפשרות אפורה, ה-folding נשבר בשלב הזה או באחד השלבים שקדמו לו.
מלכודות נפוצות ששוברות Query Folding
אחד ההיבטים המסובכים ביותר של query folding הוא שהוא שביר. שלב טרנספורמציה אחד שנראה תמים, אך ממוקם בסדר שגוי, עלול לנתק לחלוטין את שרשרת ה-folding, וכתוצאה מכך כל השלבים שאחריו ירוצו באופן מקומי, גם אם מסד הנתונים מסוגל לטפל בהם לחלוטין.
בואו נבחן כמה מהטעויות הנפוצות ביותר ששוברות query folding:
- הוספת SQL מקורי ואז טרנספורמציה: אם תכתבו שאילתת SQL מקורית בתחילת שלב מקור הנתונים, Power Query מתייחסת לקבוצת התוצאות כאל קופסה שחורה. טרנספורמציות שייתווספו לאחר מכן דרך ממשק Power Query בדרך כלל לא יבוצעו באמצעות folding, מכיוון ש-Power Query אינו יכול להזריק בצורה אמינה שלבי ממשק לתוך בלוק SQL מותאם אישית.
- המרות סוגי נתונים מוקדמות מדי או בסדר שגוי: שינוי סוגי נתונים הוא הכרחי, אך ביצועו לפני סינון או לפני פעולות שמתנגשות עם כללי הטיפוסים של מסד הנתונים עלול לשבור את ה-folding. לדוגמה, המרת עמודה מספרית לטקסט ולאחר מכן ניסיון לבצע עליה סינון טווח מספרי עלולה למנוע ממסד הנתונים לבצע אופטימיזציה לשאילתה.
- הוספת עמודות אינדקס או שימוש במספרי שורות: פונקציות שמסתמכות על מיקום שורות, כגון "Add Index Column" או פעולות שמתייחסות לשורות סמוכות לפי אינדקס מוחלט, דורשות טעינה של מערך הנתונים כולו לזיכרון כדי לקבוע את המיקומים. פעולה כזו עוצרת את ה-query folding באופן מיידי.
- שילוב מקורות נתונים: אם תמזגו טבלה ממסד נתונים SQL עם טבלה מקובץ Excel, ה-query folding ייעצר בנקודת החיבור בין שני המקורות, מכיוון ש-Excel אינו יכול לעבד שאילתות SQL באופן מקומי.
שיפור יעילות הרענון ב-Power
כשתשלטו ב-query folding, ההשפעות יורגשו בכל ארכיטקטורת הנתונים שלכם. זמני רענון של דוחות שפעם נמשכו שעות יכולים לרדת לדקות, ואף לשניות. היעילות הזו לא רק חוסכת משאבי מחשוב בשערי הכניסה לענן או בשרתים, אלא גם מאפשרת למפתחים לחזור על עבודתם מהר יותר.
כדי למקסם את יעילות הרענון, שלבו את query folding עם שיטות עבודה מומלצות נוספות במודלים של נתונים. לדוגמה, ודאו שלטבלאות מסד הנתונים שלכם יש אינדקסים מתאימים בעמודות שאתם מסננים או מצטרפים לפיהן לעיתים קרובות. אם לטבלאות ה-SQL שלכם אין אינדקסים, גם שאילתה שעברה folding תגרום למנוע מסד הנתונים לבצע סריקות טבלה יקרות. בנוסף, שלבו את query folding עם מודל נתונים נקי בסכמת star, הסרת עמודות מיותרות, והטמעת מדיניות רענון incremental עבור מערכי נתונים היסטוריים גדולים.
ניטור ופתרון בעיות בשאילתות Power BI
אי אפשר לתקן את מה שלא מודדים. כשמתמודדים עם רעננים איטיים או כשלי שאילתות בלתי צפויים, צריך גישה שיטתית לאיתור מקור הצוואר בקבוק. התחילו בשימוש בכלי Power Query Diagnostics בתוך Power BI Desktop. התכונה הזו מאפשרת לעקוב אחר זמני הביצוע שלב אחר שלב, ומראה בדיוק כמה זמן נמשכת כל טרנספורמציה והאם הנתונים נשלפים מרחוק או מעובדים מקומית.
יתר על כן, עקבו אחר יומני ה-gateway וכלי ה-profiling של מסד הנתונים (כגון SQL Server Profiler או Extended Events) כדי לראות את השאילתות המדויקות שנשלחות מ-Power BI למקור הנתונים. אם תראו הצהרות SELECT ענקיות ששולפות טבלאות גולמיות ולא מסוננות, במקום שאילתות ממוקדות עם מוסכמות WHERE ו-GROUP BY, תדעו מיד שה-query folding נכשל באחד השלבים המיושמים.
לקבלת הסבר מקיף על סדר הביצוע, על המלכודות התפעוליות ועל תהליכי אופטימיזציה מתקדמים, מומלץ להאזין לפרק הפודקאסט הקשור ולקרוא את ההערות בנושא Power Query Folding and Execution Order in Power BI. הבנת סדר הפעולות העומד בבסיס התהליך תעניק לכם את הביטחון לבנות מודלים יציבים ומהירים מאוד, בכל פעם מחדש.
סיכום
שליטה ב-query folding היא אחת המיומנויות בעלות ההשפעה הגדולה ביותר שמפתח Power BI יכול לרכוש. כאשר מעבירים את עומס החישוב ממחשב המקומי או משירות Power BI אל המנועים החזקים והממוטבים של מקורות הנתונים, מסירים צווארי בקבוק בביצועים, מפחיתים עומס רשת ומבטיחים שהרענון של הדוחות יתבצע בצורה חלקה ואמינה. באמצעות תכנון מודע של סדר השלבים, בדיקה קבועה של השאילתות המקוריות והימנעות ממלכודות נפוצות כמו אינדוקס מוקדם או שילוב של מקורות לא תואמים, תוכלו לממש את מלוא הפוטנציאל של סביבת ה-BI שלכם.
כדי להרחיב על הנושאים האלה ולשמוע פירוט מלא על האופן שבו סדר ביצוע השאילתות משפיע על ביצועי סביבת העבודה שלכם, האזינו לפרק המלא בפודקאסט Power Query Folding and Execution Order in Power BI. התחילו ליישם את האסטרטגיות האלה כבר היום, וצפו בביצועי הדוחות שלכם משתפרים לטובה!