Skip to main content

analytics_query

Execute an analytics query against the semantic layer. Supports measures, dimensions, filters, and time dimensions.


Description​

The primary tool for running analytics queries. Returns data from the semantic layer with support for aggregations, grouping, filtering, and time-based analysis.


Input Schema​

{
"type": "object",
"properties": {
"measures": {
"type": "array",
"items": { "type": "string" },
"description": "Array of measure names (e.g., ['Studies.count', 'Enrollments.count'])"
},
"dimensions": {
"type": "array",
"items": { "type": "string" },
"description": "Array of dimension names (e.g., ['Studies.studyName', 'Sites.siteName'])"
},
"filters": {
"type": "array",
"items": {
"type": "object",
"properties": {
"member": { "type": "string" },
"operator": { "type": "string" },
"values": { "type": "array", "items": { "type": "string" } }
}
},
"description": "Array of filter objects"
},
"timeDimensions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"dimension": { "type": "string" },
"granularity": { "type": "string" },
"dateRange": { "type": "array", "items": { "type": "string" } }
}
},
"description": "Time dimension settings for date-based queries"
},
"limit": {
"type": "number",
"description": "Maximum number of rows to return (default: 100)"
},
"order": {
"type": "object",
"description": "Sort order as { 'Measure.name': 'asc' | 'desc' }"
}
},
"required": []
}

Parameters​

ParameterTypeRequiredDescription
measuresarrayNoMetrics to aggregate (e.g., counts, sums)
dimensionsarrayNoFields to group by
filtersarrayNoConditions to filter data
timeDimensionsarrayNoTime-based grouping and filtering
limitnumberNoMax rows (default: 100)
orderobjectNoSort order

Filter Operators​

OperatorDescriptionExample
equalsExact match{"member": "Studies.status", "operator": "equals", "values": ["Active"]}
notEqualsNot equal{"member": "Studies.phase", "operator": "notEquals", "values": ["Phase 1"]}
containsString contains{"member": "Studies.studyName", "operator": "contains", "values": ["COVID"]}
gt / gteGreater than{"member": "Subjects.count", "operator": "gt", "values": ["100"]}
lt / lteLess than{"member": "AdverseEvents.severity", "operator": "lte", "values": ["3"]}
inDateRangeDate range{"member": "Studies.startDate", "operator": "inDateRange", "values": ["2024-01-01", "2024-12-31"]}

Time Granularities​

GranularityDescription
dayGroup by day
weekGroup by week
monthGroup by month
quarterGroup by quarter
yearGroup by year

Examples​

Simple Count​

Request: "How many studies do we have?"

{
"measures": ["Studies.count"]
}

Response:

{
"data": [
{ "Studies.count": 42 }
]
}

Grouped Query​

Request: "Show enrollment counts by study"

{
"measures": ["Enrollments.count"],
"dimensions": ["Studies.studyName"]
}

Response:

{
"data": [
{ "Studies.studyName": "TRIAL-001", "Enrollments.count": 156 },
{ "Studies.studyName": "TRIAL-002", "Enrollments.count": 89 },
{ "Studies.studyName": "TRIAL-003", "Enrollments.count": 234 }
]
}

Filtered Query​

Request: "Count serious adverse events"

{
"measures": ["AdverseEvents.count"],
"filters": [
{
"member": "AdverseEvents.serious",
"operator": "equals",
"values": ["Yes"]
}
]
}

Time Series Query​

Request: "Show monthly enrollment trends for 2024"

{
"measures": ["Enrollments.count"],
"timeDimensions": [
{
"dimension": "Enrollments.enrollmentDate",
"granularity": "month",
"dateRange": ["2024-01-01", "2024-12-31"]
}
]
}

Response:

{
"data": [
{ "Enrollments.enrollmentDate.month": "2024-01-01T00:00:00.000", "Enrollments.count": 45 },
{ "Enrollments.enrollmentDate.month": "2024-02-01T00:00:00.000", "Enrollments.count": 52 },
{ "Enrollments.enrollmentDate.month": "2024-03-01T00:00:00.000", "Enrollments.count": 61 }
]
}

Sorted with Limit​

Request: "Top 5 sites by subject count"

{
"measures": ["Subjects.count"],
"dimensions": ["Sites.siteName"],
"order": { "Subjects.count": "desc" },
"limit": 5
}

Complex Query Example​

Request: "Show Phase 3 study enrollments by site for 2024, sorted by count"

{
"measures": ["Enrollments.count"],
"dimensions": ["Studies.studyName", "Sites.siteName"],
"filters": [
{
"member": "Studies.phase",
"operator": "equals",
"values": ["Phase 3"]
}
],
"timeDimensions": [
{
"dimension": "Enrollments.enrollmentDate",
"dateRange": ["2024-01-01", "2024-12-31"]
}
],
"order": { "Enrollments.count": "desc" },
"limit": 20
}

Natural Language Examples​

You AskQuery Built
"How many subjects enrolled?"measures: ["Subjects.count"]
"Enrollments by study"measures: ["Enrollments.count"], dimensions: ["Studies.studyName"]
"Active studies only"filters: [{"member": "Studies.status", "operator": "equals", "values": ["Active"]}]
"Monthly trends"timeDimensions: [{..., "granularity": "month"}]
"Top 10 sites"order: {...: "desc"}, limit: 10

Error Handling​

Invalid Measure/Dimension​

{
"error": "Measure 'Studies.invalidMeasure' not found"
}

Empty Result​

{
"data": [],
"annotation": {
"measures": ["Studies.count"],
"dimensions": [],
"filters": [...]
}
}