ייצוא נתונים מ-Firebase Crashlytics ל-BigQuery

אפשר לייצא את הנתונים מ-Firebase Crashlytics אל BigQuery כדי לבצע ניתוח נוסף. ‫BigQuery מאפשר לכם לנתח את הנתונים באמצעות SQL, לייצא אותם לספק ענן אחר ולהשתמש בהם להמחשה וליצירת מרכזי בקרה בהתאמה אישית באמצעות Google Data Studio.BigQuery

הפעלת הייצוא אל BigQuery

  1. במסוף Firebase, עוברים לדף Integrations.

  2. בכרטיס BigQuery, לוחצים על קישור.

  3. פועלים לפי ההוראות במסך כדי להפעיל את הייצוא אל BigQuery.

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

מה קורה כשמפעילים את האפשרות לייצוא?

  • בוחרים את המיקום של מערך הנתונים. אי אפשר לשנות את המיקום אחרי שיוצרים מערך הנתונים, אבל אפשר להעתיק את מערך הנתונים למיקום אחר או להעביר ידנית את מערך הנתונים למיקום אחר (ליצור אותו מחדש). מידע נוסף זמין במאמר שינוי המיקום של ייצוא קיים.

    המיקום הזה רלוונטי רק לנתונים שמיוצאים אל BigQuery, והוא לא משפיע על מיקום הנתונים שמאוחסנים לשימוש בלוח הבקרה של Crashlytics במסוף Firebase או ב-Android Studio.

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

  • מערכת Firebase מגדירה סנכרון יומי של הנתונים אל BigQuery.

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

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

  • ‫Firebase מייצא עותק של הנתונים הקיימים אל BigQuery. ההפצה הראשונית של נתונים לייצוא עשויה להימשך עד 48 שעות.

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

    • אפשר לתזמן באופן ידני מילוי חוסרים בנתונים בטבלת האצווה עד 30 הימים האחרונים או עד התאריך האחרון שבו הפעלתם את הייצוא אל BigQuery (התאריך המאוחר מביניהם).

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

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

כדי להשבית את הייצוא אל BigQuery, צריך לבטל את הקישור של הפרויקט במסוף Firebase.

אילו נתונים מיוצאים אל BigQuery?

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

לדוגמה, נתונים של אפליקציה ל-Android עם שם החבילה com.google.test יהיו בטבלה בשם com_google_test_ANDROID. טבלת החבילות הזו מתעדכנת פעם ביום. אם מפעילים Crashlytics ייצוא בסטרימינג אל BigQuery, אז Crashlytics הנתונים גם יועברו בסטרימינג בזמן אמת לטבלה בשם com_google_test_ANDROID_REALTIME.

כל שורה בטבלה מייצגת אירוע שהתרחש באפליקציה, כולל קריסות, שגיאות לא חמורות ומקרי ANR.

ייצוא בסטרימינג אל CrashlyticsBigQuery

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

BigQueryBigQuery

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

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

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

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

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

הפעלת ייצוא של סטרימינג ב-Crashlytics אל BigQuery

  1. במסוף Firebase, עוברים לדף Integrations.

  2. בכרטיס BigQuery, לוחצים על ניהול.

  3. מסמנים את התיבה Include streaming (הכללת סטרימינג).

הפעולה הזו מפעילה את הסטרימינג לכל האפליקציות המקושרות.

מה אפשר לעשות עם הנתונים המיוצאים?

ייצוא ל-BigQuery מכיל נתוני קריסה גולמיים, כולל סוג המכשיר, מערכת ההפעלה, חריגים (אפליקציות ל-Android) או שגיאות (אפליקציות של אפל) ויומנים של Crashlytics, וגם נתונים אחרים.

בהמשך הדף מפורט בדיוק אילו נתוני Crashlytics מיוצאים ומוצגת סכימת הטבלה שלהם.

שימוש בתבנית של Data Studio

כדי להפעיל נתונים בזמן אמת בתבנית Data Studio, פועלים לפי ההוראות במאמר הצגת נתונים מ-Crashlytics בתצוגה חזותית באמצעות Data Studio.

יצירת תצוגות

אפשר להפוך שאילתות לתצוגות באמצעות ממשק המשתמש של BigQuery. הוראות מפורטות זמינות במאמר יצירת תצוגות בתיעוד של BigQuery.

הרצת שאילתות

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

דוגמה 1: קריסות לפי יום

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

הנה דוגמה לשאילתה של אפליקציית Android. באפליקציית iOS, צריך להשתמש במזהה החבילה שלה וב-IOS (במקום שם החבילה ו-ANDROID).

SELECT
  COUNT(DISTINCT event_id) AS number_of_crashes,
  FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes
FROM
 `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
GROUP BY
  date_of_crashes
ORDER BY
  date_of_crashes DESC
LIMIT 30;

דוגמה 2: איתור קריסות נפוצות

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

הנה דוגמה לשאילתה של אפליקציית Android. באפליקציית iOS, צריך להשתמש במזהה החבילה שלה וב-IOS (במקום שם החבילה ו-ANDROID).

SELECT
  DISTINCT issue_id,
  COUNT(DISTINCT event_id) AS number_of_crashes,
  COUNT(DISTINCT installation_uuid) AS number_of_impacted_user,
  blame_frame.file,
  blame_frame.line
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(),INTERVAL 168 HOUR)
  AND event_timestamp < CURRENT_TIMESTAMP()
GROUP BY
  issue_id,
  blame_frame.file,
  blame_frame.line
ORDER BY
  number_of_crashes DESC
LIMIT 10;

דוגמה 3: 10 המכשירים המובילים שבהם האפליקציה קורסת

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

הנה דוגמה לשאילתה של אפליקציית Android. באפליקציית iOS, צריך להשתמש במזהה החבילה שלה וב-IOS (במקום שם החבילה ו-ANDROID).

SELECT
  device.model,
COUNT(DISTINCT event_id) AS number_of_crashes
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 168 HOUR)
  AND event_timestamp < CURRENT_TIMESTAMP()
GROUP BY
  device.model
ORDER BY
  number_of_crashes DESC
LIMIT 10;

דוגמה 4: סינון לפי מפתח מותאם אישית

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

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

Swift

Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");

Objective-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Java

Crashlytics.setInt("current_level", 3);

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

הנה דוגמה לשאילתה של אפליקציית Android. באפליקציית iOS, צריך להשתמש במזהה החבילה שלה וב-IOS (במקום שם החבילה ו-ANDROID).

SELECT
COUNT(DISTINCT event_id) AS num_of_crashes,
  value
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
UNNEST(custom_keys)
WHERE
  key = "current_level"
GROUP BY
  key,
  value
ORDER BY
  num_of_crashes DESC

דוגמה 5: חילוץ User ID

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

הנה דוגמה לשאילתה של אפליקציית Android. באפליקציית iOS, צריך להשתמש במזהה החבילה שלה וב-IOS (במקום שם החבילה ו-ANDROID).

SELECT *
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  user.id IN ("USER_ID_1", "USER_ID_2", "USER_ID_3")
ORDER BY
  user.id
 

דוגמה 6: חיפוש של כל המשתמשים שנתקלים בבעיה ספציפית של קריסה

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

הנה דוגמה לשאילתה של אפליקציית Android. באפליקציית iOS, צריך להשתמש במזהה החבילה שלה וב-IOS (במקום שם החבילה ו-ANDROID).

SELECT user.id as user_id
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  issue_id = "ISSUE_ID"
  AND application.display_version = "APP_VERSION"
  AND user.id != ""
ORDER BY
  user.id;

דוגמה 7: מספר המשתמשים שהושפעו מבעיית קריסה, בפירוט לפי מדינה

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

כדי לכתוב את השאילתה הזו, הצוות שלכם יצטרך לבצע את הפעולות הבאות:

  1. הפעלת ייצוא של נתוני Google Analytics אל BigQuery. מידע נוסף על ייצוא נתוני פרויקט ל-BigQuery

  2. מעדכנים את האפליקציה כדי להעביר מזהה משתמש גם אל Google Analytics SDK וגם אל Crashlytics SDK.

    Swift

    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    

    Objective-C

    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    

    Java

    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. כותבים שאילתה שמשתמשת בשדה מזהה המשתמש כדי לאחד אירועים במערך הנתונים Google Analytics עם קריסות במערך הנתונים Crashlytics.

    הנה דוגמה לשאילתה של אפליקציה ל-Android. באפליקציה ל-iOS, משתמשים במזהה החבילה שלה וב-IOS (במקום שם החבילה וב-ANDROID).

    SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted
    FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` c
    INNER JOIN  `PROJECT_ID.analytics_TABLE_NAME.events_*` a on c.user.id = a.user_id
    WHERE
      c.issue_id = "ISSUE_ID"
      AND a._TABLE_SUFFIX BETWEEN '20190101'
      AND '20200101'
    GROUP BY
      c.issue_id,
      a.geo.country,
      c.user.id

דוגמה 8: 5 הבעיות העיקריות שהיו היום עד עכשיו

Crashlytics

הנה דוגמה לשאילתה של אפליקציית Android. באפליקציית iOS, צריך להשתמש במזהה החבילה שלה וב-IOS (במקום שם החבילה ו-ANDROID).

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME`
WHERE
  DATE(event_timestamp) = CURRENT_DATE()
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;

דוגמה 9: 5 הבעיות העיקריות מאז תאריך מסוים, כולל היום

Crashlytics

אפשר גם לשלב את הטבלאות של נתוני האצווה ושל הנתונים בזמן אמת באמצעות שאילתת שילוב, כדי להוסיף מידע בזמן אמת לנתוני האצווה המהימנים. ‫event_id הוא מפתח ראשי, ולכן אפשר להשתמש ב-DISTINCT event_id כדי לבטל כפילויות של אירועים נפוצים משתי הטבלאות.

הנה דוגמה לשאילתה של אפליקציית Android. באפליקציית iOS, צריך להשתמש במזהה החבילה שלה וב-IOS (במקום שם החבילה ו-ANDROID).

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM (
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME`
  UNION ALL
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`)
WHERE
  event_timestamp >= "YYYY_MM_DD"
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;

הסבר על סכימת Crashlytics ב-BigQuery

כשמגדירים ייצוא נתונים מ-Firebase אל BigQuery, המערכת מייצאת אירועים מהזמן האחרון (קריסות, שגיאות לא קריטיות ואירועי ANR), כולל אירועים מיומיים לפני הקישור, עם אפשרות למילוי חוסרים (backfill) של עד 30 ימים.Crashlytics

מנקודה זו ואילך, עד שתשביתו את הייצוא, מערכת Firebase תייצא אירועים Crashlytics מדי יום. יכול להיות שיעברו כמה דקות עד שהנתונים יהיו זמינים ב-BigQuery אחרי כל ייצוא.

מערכי נתונים

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

טבלאות

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

לדוגמה, נתונים של אפליקציה ל-Android עם שם החבילה com.google.test יהיו בטבלה בשם com_google_test_ANDROID, ונתונים בזמן אמת (אם האפשרות הזו מופעלת) יהיו בטבלה בשם com_google_test_ANDROID_REALTIME.

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

שורות

כל שורה בטבלה מייצגת שגיאה שהאפליקציה נתקלה בה.

עמודות

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

העמודות בתוך הייצוא מפורטות בטבלה הזו:

שם השדה סוג הנתונים תיאור
platform מחרוזת הפלטפורמה של האפליקציה כפי שהיא רשומה בפרויקט Firebase (ערכים תקינים: IOS או ANDROID)
bundle_identifier מחרוזת המזהה הייחודי של האפליקציה כפי שנרשם בפרויקט Firebase (לדוגמה, com.google.gmail)
באפליקציות לפלטפורמת Apple, זהו מזהה החבילה של האפליקציה.
באפליקציות ל-Android, זהו שם החבילה של האפליקציה.
event_id מחרוזת המזהה הייחודי של האירוע
is_fatal בוליאני אם האפליקציה קרסה
error_type מחרוזת סוג השגיאה של האירוע (לדוגמה, FATAL, NON_FATAL, ANR וכו')
issue_id מחרוזת הבעיה שמשויכת לאירוע
variant_id מחרוזת הווריאציה של הבעיה שמשויכת לאירוע הזה
שימו לב: לא לכל האירועים משויכת וריאציה של בעיה.
event_timestamp חותמת זמן מתי האירוע התרחש
device רשומה המכשיר שבו התרחש האירוע
device.manufacturer מחרוזת יצרן המכשיר
device.model מחרוזת דגם המכשיר
device.architecture מחרוזת לדוגמה, X86_32,‏ X86_64,‏ ARMV7,‏ ARM64,‏ ARMV7S או ARMV7K
memory רשומה סטטוס הזיכרון של המכשיר
memory.used INT64 בייטים של זיכרון בשימוש
memory.free INT64 בייטים של זיכרון שנשארו
storage רשומה האחסון המתמיד של המכשיר
storage.used INT64 בייטים של נפח אחסון בשימוש
storage.free INT64 נפח האחסון הפנוי שנותר
operating_system רשומה פרטי מערכת ההפעלה במכשיר
operating_system.display_version מחרוזת גרסת מערכת ההפעלה במכשיר
operating_system.name מחרוזת השם של מערכת ההפעלה במכשיר
operating_system.modification_state מחרוזת האם המכשיר עבר שינוי (לדוגמה, אפליקציה שנפרצה היא MODIFIED ואפליקציה שעברה רוט היא UNMODIFIED)
operating_system.type מחרוזת (אפליקציות של אפל בלבד) סוג מערכת ההפעלה שפועלת במכשיר (לדוגמה, IOS,‏ MACOS וכו')
operating_system.device_type מחרוזת סוג המכשיר (לדוגמה, MOBILE,‏ TABLET,‏ TV וכו'); נקרא גם 'קטגוריית מכשיר'
application רשומה האפליקציה שיצרה את האירוע
application.build_version מחרוזת גרסת ה-build של האפליקציה
application.display_version מחרוזת
user רשומה (אופציונלי) מידע שנאסף על המשתמש באפליקציה
user.name מחרוזת (אופציונלי) שם המשתמש
user.email מחרוזת (אופציונלי) כתובת האימייל של המשתמש
user.id מחרוזת (אופציונלי) מזהה ספציפי לאפליקציה שמשויך למשתמש
custom_keys רשומה חוזרת צמדים של מפתח/ערך שמוגדרים על ידי המפתח
custom_keys.key מחרוזת מפתח שמוגדר על ידי המפתח
custom_keys.value מחרוזת ערך שמוגדר על ידי המפתח
installation_uuid מחרוזת מזהה שמציין התקנה ייחודית של אפליקציה במכשיר
crashlytics_sdk_versions מחרוזת גרסת ה-SDK ‏Crashlytics שיצרה את האירוע
app_orientation מחרוזת לדוגמה, PORTRAIT,‏ LANDSCAPE,‏ FACE_UP,‏ FACE_DOWN וכו'.
device_orientation מחרוזת לדוגמה, PORTRAIT,‏ LANDSCAPE,‏ FACE_UP,‏ FACE_DOWN וכו'.
process_state מחרוזת BACKGROUND או FOREGROUND
logs רשומה חוזרת הודעות ביומן עם חותמת זמן שנוצרו על ידי Crashlytics logger, אם הוא מופעל
logs.timestamp חותמת זמן מתי נוצר היומן
logs.message מחרוזת ההודעה שנרשמה ביומן
breadcrumbs רשומה חוזרת נתיבי ניווט עם חותמות זמן, אם האפשרות הזו מופעלתGoogle Analytics
breadcrumbs.timestamp חותמת זמן חותמת הזמן שמשויכת לפרט הדרך
breadcrumbs.name מחרוזת השם שמשויך לנתיב הניווט
breadcrumbs.params רשומה חוזרת פרמטרים שמשויכים לנתיב הניווט
breadcrumbs.params.key מחרוזת מפתח פרמטר שמשויך לנתיב הניווט
breadcrumbs.params.value מחרוזת ערך פרמטר שמשויך לנתיב הניווט
blame_frame רשומה המסגרת שזוהתה כגורם לקריסה או לשגיאה
blame_frame.line INT64 מספר השורה בקובץ של הפריימים
blame_frame.file מחרוזת שם קובץ המסגרת
blame_frame.symbol מחרוזת הסמל המיובש, או הסמל הגולמי אם אי אפשר לייבש אותו
blame_frame.offset INT64 ההיסט של הבייטים בתמונה הבינארית שמכילה את הקוד
לא מוגדר לחריגים של Java
blame_frame.address INT64 הכתובת בתמונה הבינארית שמכילה את הקוד
לא מוגדר עבור מסגרות Java
blame_frame.library מחרוזת השם המוצג של הספרייה שכוללת את הפריים
blame_frame.owner מחרוזת לדוגמה, DEVELOPER,‏ VENDOR,‏ RUNTIME,‏ PLATFORM או SYSTEM
blame_frame.blamed בוליאני האם Crashlytics קבע שהפריים הזה הוא הגורם לקריסה או לשגיאה
exceptions רשומה חוזרת (Android בלבד) חריגים שהתרחשו במהלך האירוע הזה. חריגים מקוננים מוצגים בסדר כרונולוגי הפוך, כלומר הרשומה האחרונה היא החריג הראשון שהופעל.
exceptions.type מחרוזת סוג החריגה (לדוגמה, java.lang.IllegalStateException)
exceptions.exception_message מחרוזת הודעה שמשויכת לחריג
exceptions.nested בוליאני הערך הוא True לכל החריגות שהופעלו, חוץ מהחריגה האחרונה (כלומר הרשומה הראשונה)
exceptions.title מחרוזת השם של השרשור
exceptions.subtitle מחרוזת כותרת המשנה של השרשור
exceptions.blamed בוליאני הערך True אם Crashlytics קובע שהחריגה אחראית לשגיאה או לקריסה
exceptions.frames רשומה חוזרת הפריימים שמשויכים לחריגה
exceptions.frames.line INT64 מספר השורה בקובץ של הפריימים
exceptions.frames.file מחרוזת שם קובץ המסגרת
exceptions.frames.symbol מחרוזת הסמל המיובש, או הסמל הגולמי אם אי אפשר לייבש אותו
exceptions.frames.offset INT64 ההיסט של הבייטים בתמונה הבינארית שמכילה את הקוד
לא מוגדר לחריגים של Java
exceptions.frames.address INT64 הכתובת בתמונה הבינארית שמכילה את הקוד
לא מוגדר עבור מסגרות Java
exceptions.frames.library מחרוזת השם המוצג של הספרייה שכוללת את הפריים
exceptions.frames.owner מחרוזת לדוגמה, DEVELOPER,‏ VENDOR,‏ RUNTIME,‏ PLATFORM או SYSTEM
exceptions.frames.blamed בוליאני האם Crashlytics קבע שהפריים הזה הוא הגורם לקריסה או לשגיאה
error רשומה חוזרת (אפליקציות של Apple בלבד) שגיאות לא קריטיות
error.queue_name מחרוזת התור שבו השרשור פעל
error.code INT64 קוד השגיאה שמשויך ל-NSError המותאם אישית של האפליקציה שנרשם ביומן
error.title מחרוזת השם של השרשור
error.subtitle מחרוזת כותרת המשנה של השרשור
error.blamed בוליאני האם Crashlytics קבע שהפריים הזה הוא הגורם לשגיאה
error.frames רשומה חוזרת הפריימים של ה-stacktrace
error.frames.line INT64 מספר השורה בקובץ של הפריימים
error.frames.file מחרוזת שם קובץ המסגרת
error.frames.symbol מחרוזת הסמל המיובש, או הסמל הגולמי אם אי אפשר לייבש אותו
error.frames.offset INT64 ההיסט של הבייט בתמונה הבינארית שמכילה את הקוד
error.frames.address INT64 הכתובת בתמונה הבינארית שמכילה את הקוד
error.frames.library מחרוזת השם המוצג של הספרייה שכוללת את הפריים
error.frames.owner מחרוזת לדוגמה, DEVELOPER,‏ VENDOR,‏ RUNTIME,‏ PLATFORM או SYSTEM
error.frames.blamed בוליאני האם Crashlytics קבע שהפריים הזה הוא הגורם לשגיאה
threads רשומה חוזרת השרשורים שהיו קיימים בזמן האירוע
threads.crashed בוליאני האם השרשור קרס
threads.thread_name מחרוזת שם השרשור
threads.queue_name מחרוזת (אפליקציות של אפל בלבד) התור שבו השרשור פעל
threads.signal_name מחרוזת שם האות שגרמה לקריסת האפליקציה, מופיע רק בשרשורים מקוריים שקרסו
threads.signal_code מחרוזת הקוד של האות שגרם לקריסת האפליקציה. מופיע רק בשרשורים מקוריים שקרסו
threads.crash_address INT64 הכתובת של האות שגרם לקריסת האפליקציה. הכתובת הזו מופיעה רק בשרשורים מקוריים שקרסו
threads.code INT64 (אפליקציות של אפל בלבד) קוד השגיאה של NSError מותאם אישית שנרשם ביומן של האפליקציה
threads.title מחרוזת השם של השרשור
threads.subtitle מחרוזת כותרת המשנה של השרשור
threads.blamed בוליאני האם Crashlytics קבע שהפריים הזה הוא הגורם לקריסה או לשגיאה
threads.frames רשומה חוזרת הפריימים של השרשור
threads.frames.line INT64 מספר השורה בקובץ של הפריימים
threads.frames.file מחרוזת שם קובץ המסגרת
threads.frames.symbol מחרוזת הסמל המיובש, או הסמל הגולמי אם אי אפשר לייבש אותו
threads.frames.offset INT64 ההיסט של הבייט בתמונה הבינארית שמכילה את הקוד
threads.frames.address INT64 הכתובת בתמונה הבינארית שמכילה את הקוד
threads.frames.library מחרוזת השם המוצג של הספרייה שכוללת את הפריים
threads.frames.owner מחרוזת לדוגמה, DEVELOPER,‏ VENDOR,‏ RUNTIME,‏ PLATFORM או SYSTEM
threads.frames.blamed בוליאני האם Crashlytics קבע שהפריים הזה הוא הגורם לשגיאה
unity_metadata.unity_version מחרוזת גרסת Unity שפועלת במכשיר
unity_metadata.debug_build בוליאני אם זוהי גרסת ניפוי באגים
unity_metadata.processor_type מחרוזת סוג המעבד
unity_metadata.processor_count INT64 מספר המעבדים (הליבות)
unity_metadata.processor_frequency_mhz INT64 התדר של המעבד או המעבדים במגה-הרץ
unity_metadata.system_memory_size_mb INT64 גודל הזיכרון של המערכת ב-Mb
unity_metadata.graphics_memory_size_mb INT64 זיכרון ה-GPU ב-MB
unity_metadata.graphics_device_id INT64 המזהה של המכשיר הגרפי
unity_metadata.graphics_device_vendor_id INT64 המזהה של ספק מעבד הגרפיקה
unity_metadata.graphics_device_name מחרוזת השם של כרטיס המסך
unity_metadata.graphics_device_vendor מחרוזת הספק של מכשיר הגרפיקה
unity_metadata.graphics_device_version מחרוזת גרסת המכשיר הגרפי
unity_metadata.graphics_device_type מחרוזת סוג מכשיר הגרפיקה
unity_metadata.graphics_shader_level INT64 רמת ההצללה של הגרפיקה
unity_metadata.graphics_render_target_count INT64 מספר היעדים של העיבוד הגרפי
unity_metadata.graphics_copy_texture_support מחרוזת תמיכה בהעתקה של טקסטורת גרפיקה כפי שמוגדר ב-Unity API
unity_metadata.graphics_max_texture_size INT64 הגודל המקסימלי שמוקצה לעיבוד טקסטורה
unity_metadata.screen_size_px מחרוזת גודל המסך בפיקסלים, בפורמט רוחב x גובה
unity_metadata.screen_resolution_dpi מחרוזת ה-DPI של המסך כמספר נקודה צפה
unity_metadata.screen_refresh_rate_hz INT64 קצב הרענון של המסך בהרץ



המחשה חזותית של נתוני Crashlytics שיוצאו באמצעות Data Studio

Google Data Studio הופך את מערכי הנתונים Crashlytics ב-BigQuery לדוחות שקל יותר לקרוא ולשתף, וניתנים להתאמה אישית מלאה.

כדי לקבל מידע נוסף על השימוש ב-Data Studio, אפשר לעיין במדריך לתחילת העבודה עם Data Studio, ברוכים הבאים ל-Data Studio.

שימוש בתבנית דוח של Crashlytics

ב-Data Studio יש דוח לדוגמה של Crashlytics שכולל קבוצה מקיפה של מאפיינים ומדדים מסכימת Crashlytics BigQuery המיוצאת. אם הפעלתם Crashlytics ייצוא בזמן אמת אל BigQuery, תוכלו לראות את הנתונים האלה בדף מגמות בזמן אמת של תבנית Data Studio.תוכלו להשתמש בדוגמה כתבנית כדי ליצור במהירות דוחות חדשים והמחשות ויזואליות על סמך נתוני הקריסות הגולמיים של האפליקציה שלכם:

  1. פותחים את Crashlytics תבנית מרכז הבקרה של Data Studio.

  2. לוחצים על שימוש בתבנית בפינה השמאלית העליונה.

  3. בתפריט הנפתח מקור נתונים חדש, בוחרים באפשרות יצירת מקור נתונים חדש.

  4. לוחצים על בחירה בכרטיס BigQuery.

  5. בוחרים טבלה שמכילה נתונים שיוצאו מ-Crashlytics על ידי בחירה באפשרות הפרויקטים שלי > PROJECT_ID > firebase_crashlytics > TABLE_NAME.

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

  6. בקטע הגדרה, מגדירים את Crashlytics Template level (רמת התבנית) לערך Default (ברירת מחדל).

  7. לוחצים על קישור כדי ליצור את מקור הנתונים החדש.

  8. לוחצים על הוספה לדוח כדי לחזור לתבנית Crashlytics.

  9. לבסוף, לוחצים על יצירת דוח כדי ליצור עותק של תבנית מרכז הבקרה של Crashlytics Data Studio.



שדרוג לתשתית הייצוא החדשה

באמצע אוקטובר 2024, Crashlytics השיקה תשתית חדשה לייצוא אצווה של נתוני Crashlytics אל BigQuery.

כל הפרויקטים ב-Firebase ישודרגו אוטומטית לתשתית החדשה של ייצוא באצ'ים, החל מ-15 בספטמבר 2025. אפשר לשדרג לפני התאריך הזה, אבל חשוב לוודא שטבלאות ה-batch שלכם ב-BigQuery עומדות בדרישות המוקדמות לשדרוג.

אפשר לשדרג לתשתית החדשה, אבל חשוב לוודא שטבלאות ה-batch שלכם ב-BigQuery עומדות בדרישות המוקדמות לשדרוג.

איך בודקים אם אתם משתמשים בתשתית החדשה

אם הפעלתם ייצוא באצווה באמצע אוקטובר 2024 או מאוחר יותר, פרויקט Firebase שלכם משתמש אוטומטית בתשתית הייצוא החדשה.

כדי לבדוק באיזו תשתית הפרויקט שלכם משתמש: נכנסים למסוף Google Cloud, ואם ההגדרה של העברת הנתונים מסומנת בתווית Firebase Crashlytics with Multi-Region Support, הפרויקט שלכם משתמש בתשתית החדשה לייצוא.

ההבדלים החשובים בין תשתית הייצוא הישנה לבין תשתית הייצוא החדשה

  • התשתית החדשה תומכת במיקומים של מערכי נתונים מחוץ לארצות הברית.Crashlytics

    • הפעלתם את הייצוא לפני אמצע אוקטובר 2024 ושדרגתם לתשתית הייצוא החדשה – עכשיו יש לכם אפשרות לשנות את המיקום של ייצוא הנתונים.

    • הייצוא הופעל באמצע אוקטובר 2024 או מאוחר יותר – במהלך ההגדרה הוצגה לכם בקשה לבחור מיקום לייצוא הנתונים.

  • התשתית החדשה לא תומכת בהוספה של נתונים מהתקופה שלפני הפעלת הייצוא.

    • במערכת הישנה, מילוי החוסרים (backfill) היה אפשרי עד 30 ימים לפני התאריך שבו הפעלתם את הייצוא.

    • התשתית החדשה תומכת במילוי חוסרים עד 30 הימים האחרונים או עד התאריך האחרון שבו הפעלתם את הייצוא אל BigQuery (התאריך המאוחר מביניהם).

  • השמות של התשתית החדשה BigQuery הם שמות של טבלאות אצווה שנוצרו באמצעות המזהים שהוגדרו לאפליקציות Firebase בפרויקט Firebase.

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

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

שלב 1: תנאי מוקדם לשדרוג

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

    • אפשר למצוא את כל האפליקציות של Firebase שרשומות בפרויקט Firebase בFirebaseמסוף: עוברים אל הגדרות הפרויקט, ואז גוללים אל הכרטיס האפליקציות שלך כדי לראות את כל האפליקציות של Firebase והמידע שלהן.

    • כל הטבלאות של BigQuery נמצאות בדף BigQuery במסוף Google Cloud.

    לדוגמה, אלה מצבים אידיאליים שבהם לא תהיינה בעיות בשדרוג:

    • יש לכם טבלת נתונים בכמות גדולה בשם com_yourcompany_yourproject_IOS ואפליקציית Firebase ל-iOS+ עם מזהה החבילה com.yourcompany.yourproject שרשומות בפרויקט Firebase.

    • יש לכם טבלת נתונים בכמות גדולה בשם com_yourcompany_yourproject_ANDROID ואפליקציית Firebase ל-Android עם שם החבילה com.yourcompany.yourproject שרשומה בפרויקט Firebase.

  2. אם יש לכם שמות של טבלאות מקובצות שלא תואמים למזהים שהוגדרו לאפליקציות Firebase הרשומות שלכם, עליכם לפעול לפי ההוראות בהמשך הדף הזה לפני שדרוג ידני או לפני 15 בספטמבר 2025 כדי למנוע שיבושים בייצוא המקובץ.

שלב 2: שדרוג ידני לתשתית החדשה

אם הפעלתם את הייצוא באצווה לפני אמצע אוקטובר 2024, תוכלו לשדרג ידנית לתשתית החדשה. לשם כך, פשוט משביתים את הייצוא של נתוני Crashlytics ומפעילים אותו מחדש במסוף Firebase.

אלה השלבים המפורטים:

  1. במסוף Firebase, עוברים לדף Integrations.

  2. בכרטיס BigQuery, לוחצים על ניהול.

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

  4. מיד מעבירים שוב את המתג Crashlytics למצב מופעל כדי להפעיל מחדש את הייצוא. כשמוצגת הנחיה, מאשרים שרוצים לייצא נתונים.

    ייצוא הנתונים של Crashlytics אל BigQuery מתבצע עכשיו באמצעות תשתית הייצוא החדשה.

שם טבלת האצווה הקיימת לא תואם למזהה האפליקציה ב-Firebase