Google Health API 데이터 유형

다음 표에는 데이터 유형의 전체 목록이 나와 있으며, Google Health API에서 각 유형의 표현과 각 유형이 제공되는 범위를 이해하는 데 도움이 되는 여러 열이 있습니다.

표: Google Health API 데이터 유형
데이터 유형
  dataType
  filter 매개변수
사용 가능한
작업
범위
활동 중 에너지 소모량
active-energy-burned
active_energy_burned
레코드 유형: 인터벌
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
활동 시간
active-minutes
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
액티브존 미닛
active-zone-minutes
active_zone_minutes
레코드 유형: 인터벌

호환 기기

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
활동 수준
activity-level
activity_level
레코드 유형: 인터벌
목록, 조정 .activity_and_fitness.readonly
.activity_and_fitness.writeonly
고도
altitude
altitude
레코드 유형: 인터벌
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
혈당
blood-glucose
blood_glucose
레코드 유형: 샘플
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
체지방
body-fat
body_fat
레코드 유형: 샘플

호환 기기

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
심박수 구간의 칼로리
calories-in-heart-rate-zone
calories_in_heart_rate_zone
레코드 유형: 인터벌
rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
핵심 체온
core-body-temperature
core_body_temperature
레코드 유형: 샘플
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
일일 심박 변이도
daily-heart-rate-variability
daily_heart_rate_variability
기록 유형: 일일

호환 기기

목록, 조정 .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
일일 심박수 구간
daily-heart-rate-zones
daily_heart_rate_zones
기록 유형: 일일
목록, 조정 .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
일일 산소 포화도
daily-oxygen-saturation
daily_oxygen_saturation
기록 유형: 일일

호환 기기

목록, 조정 .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
일일 호흡수
daily-respiratory-rate
daily_respiratory_rate
기록 유형: 일일

호환 기기

목록, 조정 .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
일일 안정 시 심박수
daily-resting-heart-rate
daily_resting_heart_rate
기록 유형: 일일

호환 기기

목록, 조정 .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
일일 수면 온도 파생
daily-sleep-temperature-derivations
daily_sleep_temperature_derivations
기록 유형: 일일

호환 기기

목록, 조정 .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
일일 최대 산소 섭취량
daily-vo2-max
daily_vo2_max
기록 유형: 일일

호환 기기

목록, 조정 .activity_and_fitness.readonly
.activity_and_fitness.writeonly
이동 거리
distance
distance
레코드 유형: 인터벌

호환 기기

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
심전도 (ECG)
electrocardiogram
electrocardiogram
레코드 유형: 세션

호환 기기

list .ecg.readonly
운동
exercise
exercise
레코드 유형: 세션

호환 기기

list, get, reconcile, create, update, batchDelete .activity_and_fitness.readonly
.activity_and_fitness.writeonly
층수
floors
floors
레코드 유형: 인터벌
조정, 롤업, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
음식
food
food
레코드 유형: 음식
list, get .nutrition.readonly
.nutrition.writeonly
음식 측정 단위
food-measurement-unit
food_measurement_unit
레코드 유형: 음식

호환 기기

list, get .nutrition.readonly
.nutrition.writeonly
심박수
heart-rate
heart_rate
레코드 유형: 샘플

호환 기기

list, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
심박 변이도
heart-rate-variability
heart_rate_variability
레코드 유형: 샘플

호환 기기

목록, 조정 .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly

height
height
레코드 유형: 샘플
list, get, reconcile, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
수분 섭취 기록
hydration-log
hydration_log
레코드 유형: 세션
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
불규칙한 심장 리듬 알림
irregular-rhythm-notification
irregular_rhythm_notification
레코드 유형: 세션
list .irn.readonly
월경 기간
menstrual-period
menstrual_period
레코드 유형: 인터벌
create, update, batchDelete .reproductive_health.writeonly
무드
moods
moods
레코드 유형: 샘플
create, update, batchDelete .mindfulness.writeonly
영양 기록
nutrition-log
nutrition_log
레코드 유형: 샘플

호환 기기

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
배란 테스트
ovulation-test
ovulation_test
레코드 유형: 샘플
create, update, batchDelete .reproductive_health.writeonly
산소 포화도
oxygen-saturation
oxygen_saturation
레코드 유형: 샘플

호환 기기

목록, 조정 .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
호흡수 수면 요약
respiratory-rate-sleep-summary
respiratory_rate_sleep_summary
레코드 유형: 샘플

호환 기기

목록, 조정 .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
러닝 최대 산소 섭취량
run-vo2-max
run_vo2_max
레코드 유형: 샘플

호환 기기

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
활동량 부족 기간
sedentary-period
sedentary_period
레코드 유형: 인터벌

호환 기기

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
절전 모드
sleep
sleep
레코드 유형: 세션

호환 기기

list, get, reconcile, create, update, batchDelete .sleep.readonly
.sleep.writeonly
단계
steps
steps
레코드 유형: 인터벌

호환 기기

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
수영 거리 데이터
swim-lengths-data
swim_lengths_data
레코드 유형: 인터벌

호환 기기

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
증상
symptoms
symptoms
레코드 유형: 샘플
create, update, batchDelete .logged_symptoms.writeonly
심박수 구간별 시간
time-in-heart-rate-zone
time_in_heart_rate_zone
레코드 유형: 인터벌
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
총 칼로리
total-calories
total_calories
레코드 유형: 인터벌

호환 기기

rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
최대 산소 섭취량
vo2-max
vo2_max
레코드 유형: 샘플

호환 기기

목록, 조정 .activity_and_fitness.readonly
.activity_and_fitness.writeonly
무게
weight
weight
레코드 유형: 샘플

호환 기기

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

쿼리 제약 조건

API에서 데이터 포인트, 롤업 또는 일일 롤업을 쿼리할 때는 다음 제약 조건을 염두에 두세요.

  • 필터 요구사항: total-calories와 같은 일부 읽기 전용 파생 데이터 유형에는 간격 시작 시간(물리적 시간 또는 민간 시간 사용)을 지정하는 필터가 필요합니다.
  • 쿼리 범위 제한: 롤업 및 일일 롤업 집계 엔드포인트는 데이터 유형에 따라 최대 쿼리 범위 제한을 적용합니다.
    • calories-in-heart-rate-zone, heart-rate, active-minutes, total-calories의 최대 쿼리 범위는 14일입니다.
    • 기타 모든 데이터 유형의 최대 쿼리 범위는 90일입니다.

데이터 사용 가능 여부

사용자가 활동 추적기를 동기화하거나 Fitbit 모바일 또는 웹 앱에 새 데이터를 수동으로 입력한 후에만 사용자 데이터를 업데이트할 수 있습니다. Fitbit 앱이 모바일 기기에서 열려 있고 Fitbit 기기와 Fitbit 모바일 앱이 활성 데이터 연결을 사용하며 블루투스 범위 내에 있는 경우 15분마다 자동으로 동기화할 수 있습니다. 사용자가 MobileTrack을 사용하여 활동을 추적하는 경우 앱이 열려 있는 한 MobileTrack은 매시간 동기화됩니다.

이전 데이터 쿼리

Google Health API의 핵심 이점 중 하나는 사용자의 실적을 추적하고 장기간에 걸쳐 건강 수치를 모니터링할 수 있다는 점입니다. 기록된 시점까지 사용자의 데이터를 쿼리할 수 있습니다. API는 애플리케이션이 사용할 수 있는 과거 데이터의 양에 제한이나 제한을 두지 않습니다.

하지만 이전 데이터 쿼리는 여전히 표준 속도 제한의 적용을 받습니다. 시스템 안정성을 관리하고 과도한 페이로드를 방지하기 위해 Google Health API는 엔드포인트별 페이지 크기로 자동 페이지로 나누기를 사용합니다. 다음 경계 및 동작을 참고하세요.

  • 자동 페이지 나누기: 긴 데이터 범위를 쿼리하면 API는 해당 엔드포인트의 페이지 크기 한도까지의 첫 번째 결과 페이지와 nextPageToken를 반환합니다. nextPageToken를 사용하여 후속 페이지를 요청해야 합니다.
  • 가변 페이지 크기: 상한은 엔드포인트와 데이터 유형에 따라 다릅니다. 대부분의 데이터 유형의 경우 페이지 크기는 최대 10,000개로 제한됩니다. 하지만 exercisesleep과 같은 특정 데이터 유형의 경우 기본 및 최대 페이지 크기가 25로 제한됩니다. 예를 들어 클라이언트가 지난 10년간의 모든 수면 데이터를 요청하는 경우 API는 첫 번째 페이지에 수면 세션 25개만 반환합니다.
  • 데이터 롤업 기간 제한: 데이터 롤업 및 집계 엔드포인트(예: rollUpdailyRollUp)의 경우 쿼리 기간이 데이터 유형에 따라 제한됩니다.
    • calories-in-heart-rate-zone, heart-rate, active-minutes, total-calories의 최대 범위는 14일입니다.
    • 기타 모든 롤업 데이터 유형의 최대 범위는 90일입니다.

애플리케이션에 필요한 이전 데이터의 양에 따라 전체 데이터 세트를 가져오려면 페이지를 순차적으로 페이지로 나누어야 합니다. 애플리케이션의 데이터 동기화 프로세스를 설계할 때 이 점을 염두에 두세요.

최적의 성능을 보장하고 API 오류를 방지하려면 이전 데이터를 쿼리할 때 다음 가이드라인을 따르세요.

단계별 데이터 동기화 (핫 로드와 콜드 로드 비교)

  • 초기 '핫' 로드: 기본 로드 시퀀스 중에 최근 7~14일의 데이터만 가져오고 렌더링합니다. 이렇게 하면 사용자가 장기 실행 쿼리를 기다리지 않고 데이터를 즉시 볼 수 있습니다.
  • 백그라운드 '콜드' 로드: 기본 UI가 렌더링된 후 이전 데이터 가져오기를 비동기식 우선순위가 낮은 큐 또는 백그라운드 프로세스에 위임합니다.

집계를 위한 쿼리 청킹

  • 롤업 및 일일 롤업 엔드포인트는 최대 기간 제한 (데이터 유형에 따라 14일 또는 90일)을 적용하므로 대규모 과거 집계 쿼리를 이러한 제한 내에서 더 작은 순차적 간격으로 분류해야 합니다.
  • 동시 실행 제한을 준수하고 안정적인 UI 진행률 표시기를 유지하기 위해 이러한 하위 쿼리를 안전하게 일괄 처리하거나 순서대로 처리합니다.

사전 집계된 롤업 활용

사전 집계된 요약 엔드포인트 (예: DailyRollUpDataPoints)를 사용하도록 개요 대시보드와 추세 차트를 재구성합니다. 이렇게 하면 백엔드의 컴퓨팅 오버헤드와 클라이언트로의 네트워크 전송 시간이 크게 줄어듭니다.

탄력적인 오류 처리 (스마트 재시도)

  • 속도 제한 (429 Too Many Requests) 및 서버 게이트웨이 시간 제한(504 Gateway Timeout)이 발생하면 엄격한 지수 백오프 처리를 구현합니다. 실패한 대규모 페이로드를 즉시 재시도하지 마세요. 즉시 재시도는 백엔드 정체를 증가시키고 시스템 성능 저하를 심화시킵니다.

서드 파티 액세스

Fitbit 기기는 서드 파티 애플리케이션 또는 서비스와 직접 통신할 수 없습니다. 이러한 기기는 Fitbit 모바일 앱과만 통신하고 동기화하도록 설계되었습니다.

Fitbit 앱이 열려 있을 때 또는 블루투스가 활성화되어 있고 앱이 백그라운드에서 실행 중인 경우 15분마다 기기가 하루 종일 데이터를 자동으로 동기화합니다. 이 동기화 프로세스가 완료되면 Google Health API를 통해 서드 파티 서비스에서 데이터를 사용할 수 있습니다.

거리 표준

elevationGainMillimeters와 같은 운동 거리는 다음과 같은 이유로 밀리미터로 측정됩니다.

  1. 데이터 정밀도 유지: 밀리미터를 사용하는 가장 중요한 이유는 읽고 제공하는 데이터의 정밀도를 유지하기 위해서입니다. 밀리미터와 같은 세부적인 단위를 사용하면 측정값을 높은 정확도로 나타낼 수 있습니다.
  2. 표준화: 밀리미터는 Google 서비스 전반에서 설계된 표준화된 단위입니다. 이러한 일관성은 API의 여러 부분과 상호작용하는 개발자에게 균일한 환경을 제공하는 데 도움이 됩니다.
  3. 광범위한 측정 시스템 지원: 밀리미터와 같은 기본 단위를 사용하면 개발자가 미터법, 영국식 또는 기타 측정 시스템을 사용하는지 여부에 관계없이 선택한 다른 단위로 쉽게 변환할 수 있습니다.

다양한 낮 길이

Health API의 시간 처리에서는 일광 절약 시간제 또는 여행으로 인해 달라지는 하루 길이를 고려하여 사용자의 시간을 우선시합니다. 모든 데이터 포인트는 실제 UTC 타임스탬프와 이벤트 발생 시 활성화된 UTC 오프셋을 모두 사용하여 저장됩니다. 이를 통해 시스템은 다음 작업을 할 수 있습니다.

  • 이벤트를 정확한 물리적 순간에 매핑합니다.
  • 집계를 위해 시간을 사용자의 현지 컨텍스트로 수정합니다.

일광절약시간

일광 절약 시간이 적용되면 '폴백'으로 인해 25시간의 민간 날짜가 발생하며 해당 날짜의 롤업에는 25시간의 데이터가 포함됩니다. '서머타임'은 시간이 표준시로 돌아가는 23시간의 민간 날짜를 초래합니다.

여행

시간대를 이동하면 단일 민간 날짜의 실제 기간이 훨씬 더 크게 달라질 수 있습니다.

dailyRollUp 엔드포인트를 사용하여 시간대 차이를 조정합니다. 사용자의 현지 시간에 따라 기록된 날짜를 자동으로 데이터에 귀속시켜 시간대 이동에도 불구하고 하루를 효과적으로 '연결'합니다.