סוגי נתונים ב-Google Health API

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

שדות של סוגי נתונים

טבלת סוגי הנתונים של Google Health API כוללת כמה עמודות של שדות, כדי לעזור לכם להבין את הייצוג והדרישות של כל סוג נתונים. העמודות האלה הן:

טבלה: תיאורי שדות של סוגי נתונים ב-Google Health API
שדה תיאור
dataType המזהה שמופרד במקפים (לדוגמה, active-minutes) שמשמש בכתובות ה-URL של נקודות הקצה.
פרמטר filter המזהה מופרד על ידי קווים תחתונים (לדוגמה, active_minutes) ומשמש כערך של פרמטר המסנן dataType בבקשות לאוסף נתונים יומי ובבקשות לאוסף נתונים.
סוג הרשומה

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

  • Interval (מייצג מדידות שתועדו לאורך זמן).
  • Sample (מייצג מדידות מיידיות).
  • Daily (מייצג מדידות שנצברו או תועדו על בסיס יומי).
  • Session (מייצג בלוק רציף של הקלטה, כמו אימון או סשן של אלקטרוקרדיוגרמה (ECG).)
  • Food (מייצג פריט מזון או ישות נתונים שקשורה לתזונה).
הפעולות הזמינות רשימה של ה-API methods שנתמכות בסוג הנתונים (למשל list,‏ create ו-rollUp).
היקף היקפי ההרשאות הנדרשים של OAuth כדי לגשת לסוג הנתונים.
תמיכה בתגובה לפעולה מאתר אחר (webhook) מציין שסוג הנתונים תומך בהתראות בזמן אמת באמצעות תגובות לפעולה מאתר אחר (webhook) כשנתונים חדשים מסונכרנים.
תמיכה באפסים אמיתיים מציין שסוג הנתונים תומך ברישום ערכי אפס מפורשים כדי להבדיל בין ערך אפס פעיל (כמו אפס דקות פעילות) לבין נתונים חסרים או לא מתועדים.
רזולוציית האחסון מרווח הזמן המינימלי לדגימה או לשמירה של נקודות על הגרף (לדוגמה, דקה אחת ל-steps). בסיכומים, זהו הערך המינימלי המומלץ של windowSize כדי להבטיח צבירה אחידה בלי פריטי מידע מלאכותיים במרווחי משנה.
מכשירים תואמים רשימה שניתן להרחיב של מכשירים פיזיים שיכולים לתעד את סוג הנתונים הזה ולסנכרן אותו עם Google Health API (באמצעות אפליקציית Fitbit).

טבלה: סוגי הנתונים של Google Health API
סוג הנתונים פעולות
זמינות
היקף
אנרגיה פעילה שנשרפה
dataType: active-energy-burned
filter parameter: active_energy_burned
סוג הרשומה: אינטרוולים
רזולוציית אחסון: דקה אחת
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
דקות פעילות
dataType: active-minutes
filter parameter: active_minutes
סוג הרשומה: אינטרוולים
רזולוציית אחסון: דקה אחת

מכשירים תואמים

  • Fitbit Air
  • Fitbit Alta
  • Fitbit Alta HR
  • Fitbit Blaze
  • Fitbit Charge 2
  • Fitbit Charge 3
  • Fitbit Flex 2
  • Fitbit Inspire
  • Fitbit Inspire HR
  • Pixel Watch 4
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
דקות טווח דופק
dataType: active-zone-minutes
filter parameter: active_zone_minutes
סוג הרשומה: אינטרוולים
רזולוציית אחסון: דקה אחת

מכשירים תואמים

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
רמת הפעילות
dataType: activity-level
filter parameter: activity_level
סוג הרשומה: אינטרוולים
רשימה, התאמה .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Altitude
dataType: altitude
filter parameter: altitude
סוג הרשומה: אינטרוולים
רזולוציית אחסון: דקה אחת
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
רמת סוכר בדם
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
אחוז שומן בגוף
dataType: body-fat
filter parameter: body_fat
סוג הרשומה: דוגמה

מכשירים תואמים

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
קלוריות בטווח הדופק
dataType: calories-in-heart-rate-zone
filter parameter: calories_in_heart_rate_zone
סוג הרשומה: אינטרוולים
רזולוציית אחסון: דקה אחת
rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
טמפרטורת הגוף
dataType: core-body-temperature
filter parameter: core_body_temperature
סוג הרשומה: דוגמה
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
שונות קצב הלב היומית
dataType: daily-heart-rate-variability
filter parameter: daily_heart_rate_variability
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
טווחי דופק יומיים
dataType: daily-heart-rate-zones
filter parameter: daily_heart_rate_zones
סוג הרשומה: יומי
רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
רמת החמצן בדם מדי יום
dataType: daily-oxygen-saturation
filter parameter: daily_oxygen_saturation
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
קצב הנשימה היומי
dataType: daily-respiratory-rate
filter parameter: daily_respiratory_rate
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
הדופק היומי במנוחה
dataType: daily-resting-heart-rate
filter parameter: daily_resting_heart_rate
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
סטיות יומיות בטמפרטורת השינה
dataType: daily-sleep-temperature-derivations
filter parameter: daily_sleep_temperature_derivations
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
צריכת החמצן המרבית (VO2 max) היומית
dataType: daily-vo2-max
filter parameter: daily_vo2_max
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .activity_and_fitness.readonly
.activity_and_fitness.writeonly
מרחק
dataType: distance
filter parameter: distance
סוג הרשומה: אינטרוולים
רזולוציית אחסון: דקה אחת

מכשירים תואמים

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
אק"ג (ECG)
dataType: electrocardiogram
filter parameter: electrocardiogram
סוג הרשומה: סשן

מכשירים תואמים

list .ecg.readonly
פעילות גופנית
dataType: exercise
filter parameter: exercise
סוג הרשומה: סשן

מכשירים תואמים

‫list, ‏ get, ‏ reconcile, ‏ create, ‏ update, ‏ batchDelete .activity_and_fitness.readonly
.activity_and_fitness.writeonly
קומות
dataType: floors
filter parameter: floors
סוג הרשומה: אינטרוולים
רזולוציית אחסון: דקה אחת
reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
אוכל
dataType: food
filter parameter: food
סוג הרשומה: אוכל
list, get .nutrition.readonly
.nutrition.writeonly
יחידת מידה של אוכל
dataType: food-measurement-unit
filter parameter: food_measurement_unit
סוג הרשומה: אוכל

מכשירים תואמים

list, get .nutrition.readonly
.nutrition.writeonly
דופק
dataType: heart-rate
filter parameter: heart_rate
סוג הרשומה: דוגמה
רזולוציית אחסון: שנייה אחת

מכשירים תואמים

list, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
שונות קצב הלב
dataType: heart-rate-variability
filter parameter: heart_rate_variability
סוג הרשומה: דוגמה

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
גובה
dataType: height
filter parameter: height
סוג הרשומה: דוגמה
‫list, ‏ get, ‏ reconcile, ‏ create, ‏ update, ‏ batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
יומן מאזן הנוזלים
dataType: hydration-log
filter parameter: hydration_log
סוג הרשומה: סשן
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
התראות על הפרעת קצב (AFib)
dataType: irregular-rhythm-notification
filter parameter: irregular_rhythm_notification
סוג הרשומה: סשן
list .irn.readonly
מחזור הווסת
dataType: menstrual-period
filter parameter: menstrual_period
סוג הרשומה: אינטרוולים
create, update, batchDelete .reproductive_health.writeonly
שינוי אווירה
dataType: moods
filter parameter: moods
סוג הרשומה: דוגמה
create, update, batchDelete .mindfulness.writeonly
יומן תזונה
dataType: nutrition-log
filter parameter: nutrition_log
סוג הרשומה: סשן

מכשירים תואמים

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
בדיקת ביוץ
dataType: ovulation-test
filter parameter: ovulation_test
סוג הרשומה: דוגמה
create, update, batchDelete .reproductive_health.writeonly
רמת החמצן בדם
dataType: oxygen-saturation
filter parameter: oxygen_saturation
סוג הרשומה: דוגמה
רזולוציית אחסון: דקה אחת

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
סיכום השינה: קצב הנשימה
dataType: respiratory-rate-sleep-summary
filter parameter: respiratory_rate_sleep_summary
סוג הרשומה: דוגמה

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
ריצה – צריכת חמצן מרבית (VO2 max)
dataType: run-vo2-max
filter parameter: run_vo2_max
סוג הרשומה: דוגמה

מכשירים תואמים

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
תקופת חוסר פעילות
dataType: sedentary-period
filter parameter: sedentary_period
סוג הרשומה: אינטרוולים

מכשירים תואמים

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
חיישני טמפרטורת העור v4beta
dataType: skin-temperature-sensors
filter parameter: skin_temperature_sensors
סוג הרשומה: דוגמה

מכשירים תואמים

list .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
שינה
dataType: sleep
filter parameter: sleep
סוג הרשומה: סשן

מכשירים תואמים

‫list, ‏ get, ‏ reconcile, ‏ create, ‏ update, ‏ batchDelete .sleep.readonly
.sleep.writeonly
השלבים
dataType: steps
filter parameter: steps
סוג הרשומה: אינטרוולים
רזולוציית אחסון: דקה אחת

מכשירים תואמים

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
נתוני בריכות שחייה
dataType: swim-lengths-data
filter parameter: swim_lengths_data
סוג הרשומה: אינטרוולים

מכשירים תואמים

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
תסמינים
dataType: symptoms
filter parameter: symptoms
סוג הרשומה: דוגמה
create, update, batchDelete .logged_symptoms.writeonly
זמן בטווח הדופק
dataType: time-in-heart-rate-zone
filter parameter: time_in_heart_rate_zone
סוג הרשומה: אינטרוולים
רזולוציית אחסון: דקה אחת
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
סה"כ קלוריות
dataType: total-calories
filter parameter: total_calories
סוג הרשומה: אינטרוולים
רזולוציית אחסון: דקה אחת

מכשירים תואמים

rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
צריכת החמצן המרבית (VO2 max)
dataType: vo2-max
filter parameter: vo2_max
סוג הרשומה: דוגמה

מכשירים תואמים

רשימה, התאמה .activity_and_fitness.readonly
.activity_and_fitness.writeonly
משקל
dataType: weight
filter parameter: weight
סוג הרשומה: דוגמה

מכשירים תואמים

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly

מגבלות על שאילתות

כששולחים שאילתות לגבי נקודות על הגרף, סיכומים או סיכומים יומיים מה-API, חשוב לזכור את המגבלות הבאות:

  • דרישות סינון: סוגי נתונים מסוימים שנגזרים לקריאה בלבד, כמו total-calories, דורשים מסנן שמציין את שעת ההתחלה של המרווח (באמצעות זמן פיזי או אזרחי).
  • מגבלות על טווח השאילתות: נקודות קצה של צבירת נתונים מצטברים ונתונים מצטברים יומיים אוכפות מגבלות מקסימליות על טווח השאילתות, בהתאם לסוג הנתונים:
    • טווח שאילתה מקסימלי של 14 ימים ל-calories-in-heart-rate-zone, ל-heart-rate, ל-active-minutes ול-total-calories.
    • טווח שאילתות מקסימלי של 90 ימים לכל סוגי הנתונים האחרים.
  • גודל חלון הסיכום: כשמפעילים את נקודת הקצה rollUp, משך הזמן של windowSize חייב להיות לפחות שנייה אחת ("1s"). משכי זמן של פחות משנייה נדחים עם INVALID_ARGUMENT. בנוסף, צריך לבחור ערך של windowSize ששווה לרזולוציית האחסון הבסיסית של סוג הנתונים או גדול ממנה (למשל "60s" לסוגי נתונים עם מרווחים של דקה אחת, כמו steps ו-distance) כדי למנוע חלוקה לא שווה בין מרווחי המשנה. לפרטים, ראו חלון סיכום ורזולוציית אחסון.

סוגי נתונים יומיים לעומת סוגי נתונים של מרווחי זמן

לגבי מדדים פיזיולוגיים מסוימים, כמו שונות בקצב הלב (HRV) או רמת החמצן בדם (SpO2), ‏ Google Health API מספק שני סוגי נתונים נפרדים: גרסה יומית וגרסת מרווח זמן. חשוב להבין את ההבדל כדי לבחור את המדד שמתאים לתרחיש לדוגמה שלכם:

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

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

זמינות הנתונים

הנתונים של המשתמשים מתעדכנים רק אחרי שהם מסנכרנים את מנהל המעקב אחר פעילות או מזינים נתונים חדשים באופן ידני באפליקציית Google Health. מכשיר Fitbit ואפליקציית Google Health יכולים להסתנכרן באופן אוטומטי כל 15 דקות כשאפליקציית Google Health פתוחה במכשיר הנייד, לשניהם יש חיבור נתונים פעיל והם נמצאים בטווח של Bluetooth. אם המשתמש עוקב אחר פעילות באמצעות MobileTrack, ‏ MobileTrack מסתנכרן כל שעה כל עוד האפליקציה פתוחה.

שליחת שאילתות לגבי נתונים היסטוריים

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

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

  • חלוקה אוטומטית לדפים: אם אתם שולחים שאילתה על טווח נתונים ארוך, ה-API יחזיר רק את הדף הראשון של התוצאות עד למגבלת גודל הדף של נקודת הקצה הזו, יחד עם nextPageToken. כדי לבקש את הדפים הבאים, צריך להשתמש ב-nextPageToken.
  • גודלי דפים משתנים: מגבלות המכסה תלויות בנקודת הקצה ובסוג הנתונים. ברוב סוגי הנתונים, גודל הדף מוגבל ל-10,000 לכל היותר. עם זאת, בסוגי נתונים מסוימים כמו exercise ו-sleep, גודל הדף המקסימלי וגודל ברירת המחדל מוגבלים ל-25. לדוגמה, אם לקוח מבקש את כל נתוני השינה מ-10 השנים האחרונות, ה-API עדיין יחזיר רק 25 רשומות שינה בדף הראשון.
  • הגבלות על טווחי תאריכים של אוסף נתונים: בנקודות קצה של אוסף נתונים וצבירת נתונים (כמו rollUp ו-dailyRollUp), טווחי התאריכים של השאילתות מוגבלים בהתאם לסוג הנתונים:
    • טווח מקסימלי של 14 ימים ל-calories-in-heart-rate-zone,‏ heart-rate,‏ active-minutes ו-total-calories.
    • טווח מקסימלי של 90 ימים לכל שאר סוגי הנתונים באוסף.

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

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

סנכרון נתונים בשלבים (הפעלה חמה לעומת הפעלה מההתחלה)

  • טעינה ראשונית "חמה": מאחזרים ומעבדים רק את הנתונים מ-7 עד 14 הימים האחרונים במהלך רצף הטעינה הראשי. כך המשתמשים רואים את הנתונים מיד, בלי לחכות לשאילתות ארוכות.
  • טעינה "קרה" ברקע: אחרי שהממשק הראשי נטען, מעבירים את השליפה של נתונים היסטוריים ישנים יותר לתהליך ברקע או לתור אסינכרוני עם עדיפות נמוכה יותר.

חלוקת שאילתות לצבירת נתונים

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

שימוש באוספים נתונים שנצברו מראש

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

טיפול בשגיאות עמיד (ניסיונות חוזרים חכמים)

  • הטמיעו טיפול קפדני בהשהיה מעריכית לפני ניסיון חוזר (exponential backoff) כשאתם נתקלים במגבלות קצב (429 Too Many Requests) ובזמן קצוב לתפוגה של שער השרת (504 Gateway Timeout). אף פעם אל תנסו שוב לשלוח מיד מטען ייעודי (payload) גדול שנכשל. ניסיונות חוזרים מיידיים מכפילים את העומס בקצה העורפי ומחמירים את הפגיעה במערכת.

גישה של צד שלישי

מכשירי Fitbit לא יכולים לתקשר ישירות עם אפליקציות או שירותים של צד שלישי. המכשירים האלה מיועדים לתקשר ולהסתנכרן רק עם אפליקציית Google Health.

המכשיר מסנכרן נתונים באופן אוטומטי במהלך היום, בכל פעם שאפליקציית Google Health פתוחה, או כל 15 דקות אם ה-Bluetooth פועל והאפליקציה פועלת ברקע. בסיום תהליך הסנכרון, הנתונים זמינים לשירותי צד שלישי דרך Google Health API.

סינון לפי איכות ותוקף הנתונים

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

  • לרמת החמצן בדם ברמת הדקה (oxygen-saturation), ה-API מחזיר רק קריאות מאומתות ומסיר דקות שסומנו כלא חוקיות בגלל תנועת זרוע, התאמה רופפת לפרק כף היד או ציון מהימנות של חיישן מתחת ל-50%, וגם את 3 הדקות לפני ואחרי קריאה לא חוקית וקטעים חוקיים מבודדים קצרים מ-4 דקות. לכן, יכול להיות שהכיסוי ברמת הדקה יהיה דליל וצפויים פערים. פרטים נוספים זמינים במאמר סינון SpO2 ברמת הדקה ותוקף הנתונים.

מרחק – רגיל

מרחקי התרגילים, כמו elevationGainMillimeters, נמדדים במילימטרים כיחידה הסטנדרטית מהסיבות הבאות:

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

אורכי יום משתנים

הטיפול בזמן על ידי Health API נותן עדיפות לזמן של המשתמש כדי להביא בחשבון אורכי יום משתנים שנגרמים על ידי שעון קיץ או נסיעות. כל נקודת נתונים נשמרת עם חותמת זמן פיזית ב-UTC ועם הפרש השעות מ-UTC שהיה פעיל בזמן האירוע. כך המערכת יכולה:

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

שעון קיץ

כששעון הקיץ מסתיים, הזזת השעון שעה אחורה גורמת לכך שהיום האזרחי נמשך 25 שעות, והאוסף של אותו תאריך יכיל נתונים של 25 שעות. במעבר לשעון קיץ, היום האזרחי נמשך 23 שעות, והשעה חוזרת לשעון רגיל.

נסיעות

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

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