ליקספיקס – גוגל אנליטיקס, גוגל תג מנג'ר ואופטימיזציה

משתמשים ב-BigQuery עם Looker Studio? הטעות הזו עלולה לעלות לכם הרבה כסף

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

אני כותב ״היה״, כי ב-10 לנובמבר 2022 גוגל הטילו פצצה כשהחילו כל מיני מגבלות שממש מקשות על בניית הדוחות.

כתבתי על זה פוסט בזמנו, אבל בגדול אסביר שלוקר סטודיו משתמש ב-API של גוגל אנליטיקס 4 כדי להביא את הדאטה, וגוגל פשוט החילו מגבלות על השימוש ב-API שממש מקשה על כל התהליך.

הרבה אנשים אמרו אז ״מה הבעיה. נביא את הדאטה עם BigQuery״.

BigQuery הוא דאטה בייס שיכול להתחבר בחינם לגוגל אנליטיקס 4, ואז כל הדאטה שמגיע לאנליטיקס שלכם מיוצא (מלשון export) באופן אוטומטי לטבלאות שמאפשרות לכם לגשת לדאטה בצורתו הגולמית (כלומר לפני עיבוד ובלי מגבלות).

מה שהרבה לא יודעים זה ששימוש לא נכון בביג קוורי עם לוקר סטודיו יכול לעלות לכם הרבה מאוד כסף.

ואני אתן דוגמא

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

ביוניברסל אנליטיקס הדוח הזה קיים באופן מובנה, והלקוח שלי רצה שאצור לו את הדוח הזה בגוגל אנליטיקס 4

ככה נראה הדוח ביוניברסל אנליטיקס

ובכן, מיד פניתי ל-BigQuery, ויצרתי לו את השאילתה הבאה, שיצרה את אותו הדוח בדיוק:

המטרה שלי היתה להשתמש בביג קוורי כדי להציג את הדאטה, באמצעות custom query:

הבעיה היתה – שהשאילתה הזו, שהרצתי על 30 יום אחרונים בלבד, עלתה 16GB!

 

מה הבעיה עם זה?

שהחיבור של גוגל אנליטיקס ל-BigQuery הוא אמנם חינמי, אבל יש לכם רק 1TB חינמיים בכל חודש לתשאל את המערכת.

אם תעשו חישוב פשוט – מספיק שהלקוח שלי יפתח את הדוח פעם אחת ביום, ובכל פעם הוא ישחק קצת עם התאריכים (כאשר כל משחק כזה מריץ שאילתה חדשה לחלוטין לביג קוורי) – ודיי מהר הוא יסיים את המכסה של ה-1TB החינמיים.

אז אמנם כל טרהבייט עולה דולרים ספורים, אבל תחשבו שאתם יוצרים דשבורד שלם שכולו מורכב משאילתות ל-BigQuery (כדי להמנע מהמגבלות החדשות של לוקר סטודיו), וכל דוח כזה מריץ שאילתה על הרבה דאטה ותקופה לא קצרה, ותגלו שאפשר להגיע פה להרבה מאוד טרהבייטים, שיכולים להסתכם במאות דולרים בחודש.

וחוצמזה, אם אפשר לעשות את זה בצורה יותר חסכונית אז למה לא?

הפתרון – scheduled query

כשמשתמשים ב-custom query בלוקר סטודיו, אתם מתשאלים בכל פעם את הדאטה הגולמי שלכם. כלומר הטבלה הענקית שמכילה את כללל העמודות, עבור כללל האיוונטים (השורות בטבלה).

לאור העובדה שברוב הפעמים אתם לא צריכים לפחות 80% מהדאטה – זה ממש מיותר.

במקום זה, מה שאפשר לעשות זה ליצור טבלה קטנה יותר שתכיל רק את המידע הרלוונטי, לגרום לכך שהיא תתעדכן בכל יום, ואז בכל פעם שאתם מריצים את ה-custom query שלכם – הוא יתשאל רק את הטבלה הקטנה ולא את הטבלה הענקית.

כדי לעשות את זה, אני פשוט לוחץ על schedule ואז create new scheduled query:

שימו לב שלא בחרתי תאריך ספציפי, אלא רשמתי

ואז

שזה אומר 30 יום אחרונים.

[הערה למתקדמים:

הטבלה של היום ואתמול נמצאות ב-events_intraday עד שהן עוברות עיבוד ורק אז עוברות ל-events, ולכן אם רוצים ממש להיות על הצד הבטוח עדיף להשתמש ב-

ואז זה יתשאל גם את events וגם את events_intraday.

סוף הערה למתקדמים/]

עכשיו יפתח לי המסך הזה בצד:

  1. השם של השאילתה שלכם.
  2. מתי השאילתה המתוזמנת תרוץ, כולל באיזו תדירות (אצלי כל יום), באיזו שעה (שימו לב לאזור הזמן), מתי התזמון יתחיל ומתי יסתיים.
  3. איפה הטבלה החדשה תשב. סמנו את הצ׳קבוקס Set a destination table, ואז תחת Dataset תתחילו לכתוב את השם של ה-dataset שלכם, ותחת table id קראו לטבלה בשם כלשהוא.
  4. כאן תוכלו לבחור האם השאילתה החדשה תדרוס את הטבלה הקיימת, או רק תוסיף עליה. אני בחרתי overwrite כדי שאם נכנס מידע חדש – הוא יכנס לטבלה.

זהו. עכשיו לחצו save והשאילתה שלכם תופיע כאן:

אחרי שהשאילתה שלכם תרוץ, תוכלו למצוא את הטבלה החדשה תחת ה-dataset שלכם, ואתם יכולים לראות שהטבלה החדשה מכילה רק את השדות הספורים שבחרנו:

כמו כן, אם תלחצו על details תוכלו לראות שהטבלה שוקלת רק 463 מגה:

וזאת לעומת הטבלה המקורית, ששוקלת 700 מגה ליום אחד של נתונים:

ובחזרה ללוקר סטודיו:

עכשיו יש לנו 2 אפשרויות להביא את הדאטה ללוקר סטודיו.

אפשרות 1 – לבחור את כל את הטבלה החדשה שיצרנו

אחרי שבחרתי את הטבלה החדשה, הלכתי ל-Personal History כדי לראות כמה השאילתה ״עלתה לנו״, ואני יכול לראות את זה:

וככה זה נראה בלוקר סטודיו:

הוספתי כמובן אפשרות לבחירת תאריכים, ובכל פעם שאני משנה תאריך – זה משתמש בדאטה הקיים שהורד כאשר חיברתי את הטבלה, ולא מריץ שאילתה חדשה ל-BigQuery:

כמובן שצריך לזכור שאם אני בוחר תאריכים מלפני 30 הימים האחרונים – הדוח לא יציג כלום, מכיוון שהטבלה שלנו ב-BigQuery מכילה בכל פעם את 30 הימים האחרונים בלבד.

אתם יכולים לשנות את זה כמובן, אבל זה אומר שהשאילתה הבסיסית שלכם תצרוך יותר דאטה.

אפשרות שניה – להריץ custom sql על הטבלה החדשה

פשוט נעשה SELECT * מהטבלה החדשה, רק שהפעם נצטרך להכניס את הפרמטרים @DS_START_DATE ו-@DS_END_DATE כדי שהתאריכון שלנו יעבוד, אחרת זה סתם יקח את הטבלה כמו שהיא ולא ישנה כלום גם אם נשנה תאריכים:

הערה חשובה לסיום

בדוגמאות שהבאתי פה התייחסתי לדוח אחד בלבד.

אמנם הוא היה כבד, אבל הטבלה שלי הכילה 4 עמודות בלבד חוץ מהתאריך, שזה כמובן כלום.

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

זה כמובן ישפיע על הדרך שבה תרצו להביא את הדאטה ללוקר סטודיו – אם להביא את כל הטבלה או להשתמש ב-custom sql.

דבר נוסף שחשוב לציין זה שהשאילתה המתוזמנת שלכם תרוץ בתדירות שהגדרתם לה ותצרוך ג׳יגה בייטים, גם אם בפועל אף אחד לא נכנס לדוחות.

לכן כדאי לעשות לזה אופטימיזציה מדי פעם ולהוריד דברים שאף אחד לא משתמש בהם.

במקרה שלי זה כ-15 ג׳יגה ליום. לא הרבה – אבל חבל שירוץ סתם אם אף אחד לא משתמש.