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": [...]
}
}