Skip to main content

Table Column expression

Your Query Instruction can pull data from Junction summary and timeseries resources through Table Column expressions. Each Table Column expression can select one column (a field) of the table (the Vital resource). You can use multiple Table Column expressions to select multiple columns in the same query.
Cross-table query instruction is not supported — you cannot mix Table Column expressions from different tables in the same query instruction.
Column expressions for Electrocardiogram, Sleep Cycle, Menstrual Cycle and lab testing biomarkers are planned to be introduced in the future.

Summaries

TablePython DSLJSON DSL
Activity daily summary
activity
Activity.col("$1"){ "activity": "$1" }
Body summary
body
Body.col("$1"){ "body": "$1" }
Sleep summary
sleep
Sleep.col("$1"){ "sleep": "$1" }
Workout summary
workout
Workout.col("$1"){ "workout": "$1" }
Meal summary
meal
Meal.col("$1"){ "meal": "$1" }

Column Mappings

Map summary resource properties to their Continuous Query column equivalents.

Sleep

Sleep fieldQuery Column
calendar_dateindex
bedtime_startsession_start
bedtime_stopsession_end
typetype
timezone_offsettime_zone
durationduration_second
totalstage_asleep_second
awakestage_awake_second
lightstage_light_second
remstage_rem_second
deepstage_deep_second
-stage_unknown_second
scorescore
hr_lowestheart_rate_minimum
hr_averageheart_rate_mean
-heart_rate_maximum
hr_restingheart_rate_resting
efficiencyefficiency
latencylatency_second
temperature_deltaskin_temperature_delta
skin_temperatureskin_temperature
hr_dipheart_rate_dip
average_hrvhrv_mean_rmssd
-hrv_mean_sdnn
respiratory_raterespiratory_rate
statestate
source.slugsource_provider
source.typesource_type
source.device_idsource_device_id
source.app_idsource_app_id

Activity

Activity fieldQuery Column
calendar_dateindex
calories_totalcalories_total
calories_activecalories_active
stepssteps
daily_movementduration_active_second
distancedistance_meter
floors_climbedfloors_climbed
time_zonetime_zone
timezone_offsettime_zone_offset
heart_rate.avg_bpmheart_rate_mean
heart_rate.min_bpmheart_rate_minimum
heart_rate.max_bpmheart_rate_maximum
heart_rate.resting_bpmheart_rate_resting
heart_rate.avg_walking_bpmheart_rate_mean_walking
wheelchair_usewheelchair_use
wheelchair_pushwheelchair_push
-intensity_sedentary_second
lowintensity_low_second
mediumintensity_medium_second
highintensity_high_second
source.slugsource_provider
source.typesource_type
source.device_idsource_device_id
source.app_idsource_app_id

Workout

Workout fieldQuery Column
titletitle
timezone_offsettime_zone
average_hrheart_rate_mean
max_hrheart_rate_maximum
-heart_rate_minimum
distancedistance_meter
calendar_date-
time_startsession_start
time_endsession_end
caloriescalories
sport.namesport_name
sport.slugsport_slug
hr_zonesheart_rate_zone_1..6
moving_timeduration_active_second
total_elevation_gainelevation_gain_meter
elev_highelevation_maximum_meter
elev_lowelevation_minimum_meter
average_speedspeed_mean
max_speedspeed_maximum
average_wattspower_mean
device_wattspower_source
max_wattspower_maximum
weighted_average_wattspower_weighted_mean
stepssteps
map.polylinemap_polyline
map.summary_polylinemap_summary_polyline
provider_idexternal_id
source.slugsource_provider
source.typesource_type
source.device_idsource_device_id
source.app_idsource_app_id

Body

Body fieldQuery Column
calendar_date-
date (deprecated)-
-measured_at
weightweight_kilogram
fatfat_mass_percentage
water_percentagewater_percentage
muscle_mass_percentagemuscle_mass_percentage
visceral_fat_indexvisceral_fat_index
bone_mass_percentagebone_mass_percentage
body_mass_indexbody_mass_index
lean_body_mass_kilogramlean_body_mass_kilogram
waist_circumference_centimeterwaist_circumference_centimeter
-time_zone
source.slugsource_provider
source.typesource_type
source.device_idsource_device_id
source.app_idsource_app_id

Meal

Meal fieldQuery Column
timestampindex
namename
energy.valuecalories
macros.carbscarbohydrate_gram
macros.proteinprotein_gram
macros.alcoholalcohol_gram
macros.waterwater_gram
macros.fibrefibre_gram
macros.sugarsugar_gram
macros.cholesterolcholesterol_gram
macros.fats.saturatedsaturated_fat_gram
macros.fats.monounsaturatedmonounsaturated_fat_gram
macros.fats.polyunsaturatedpolyunsaturated_fat_gram
macros.fats.omega3omega3_fat_gram
macros.fats.omega6omega6_fat_gram
macros.fats.totaltotal_fat_gram
micros.minerals.sodiumsodium_milligram
micros.minerals.potassiumpotassium_milligram
micros.minerals.calciumcalcium_milligram
micros.minerals.phosphorusphosphorus_milligram
micros.minerals.magnesiummagnesium_milligram
micros.minerals.ironiron_milligram
micros.minerals.zinczinc_milligram
micros.minerals.fluoridefluoride_milligram
micros.minerals.chloridechloride_milligram
micros.vitamins.vitamin_avitamin_a_milligram
micros.vitamins.vitamin_b1vitamin_b1_milligram
micros.vitamins.riboflavinriboflavin_milligram
micros.vitamins.niacinniacin_milligram
micros.vitamins.pantothenic_acidpantothenic_acid_milligram
micros.vitamins.vitamin_b6vitamin_b6_milligram
micros.vitamins.biotinbiotin_microgram
micros.vitamins.vitamin_b12vitamin_b12_microgram
micros.vitamins.vitamin_cvitamin_c_milligram
micros.vitamins.vitamin_dvitamin_d_microgram
micros.vitamins.vitamin_evitamin_e_milligram
micros.vitamins.vitamin_kvitamin_k_microgram
micros.vitamins.folic_acidfolic_acid_microgram
micros.trace_elements.chromiumchromium_microgram
micros.trace_elements.coppercopper_milligram
micros.trace_elements.iodineiodine_microgram
micros.trace_elements.manganesemanganese_milligram
micros.trace_elements.molybdenummolybdenum_microgram
micros.trace_elements.seleniumselenium_microgram
source.slugsource_provider
source.typesource_type
source.app_idsource_app_id
source.device_idsource_device_id

Timeseries

TablePython DSLJSON DSL
Timeseries Resource fieldsTimeseries.col("$1").field("$2"){ "timeseries": "$1", "field": "$2"}

Source Column expression

You can use a Source Column expression to refer to Data Source fields common to Junction resources. Note that some Source Column expression may not be valid in the implicit query context. For example, source_sport is not a valid Source Column expression in a query that is selecting from the Sleep resource.
If both the Provider and Source Type Source Columns are present in the Group By clause, the implicit Data Prioritization behaviour would be disabled.
ColumnPython DSLJSON DSLAvailable in
ProviderSource.col("source_provider"){ "source": "source_provider" }All Tables
Source TypeSource.col("source_type"){ "source": "source_type" }All Tables
Source App IDSource.col("source_app_id"){ "source": "source_app_id" }All summary tables
Workout IDSource.col("source_workout_id"){ "source": "source_workout_id"}Workout Stream timeseries only
SportSource.col("source_sport"){ "source": "source_sport" }Workout Stream timeseries only

Index Column expression

Each Vital resource has a primary datetime index. Your Query Instruction can reference this datetime index using the special Index Column expression:
TableIndexPython DSLJSON DSL
Activity daily summary
activity
Calendar dateActivity.index(){ "index": "activity" }
Body summary
body
Measurement datetimeBody.index(){ "index": "body" }
Sleep summary
sleep
Session end datetimeSleep.index(){ "index": "sleep" }
Workout summary
workout
Session start datetimeWorkout.index(){ "index": "workout" }

Group Key Column expression

When your Query Instruction uses the group_by clause, each expression in the group_by clause creates a temporary Group Key Column (group_key.$OFFSET). These temporary columns are then used to facilitate the data grouping and aggregation as specified by your Query Instruction. You can refer to these columns using the special Group Key Column expression:
Group Key ColumnsPython DSLJSON DSL
Allgroup_key("*"){ "group_key": "*" }
The $N-th keygroup_key($N){ "group_key": $N }
I