Query
Ejecutar consulta analítica flexible
Ejecuta consultas analíticas flexibles con agregaciones y filtros dinámicos.
El frontend puede definir:
- Dimensiones: Campos para agrupar (GROUP BY)
- Métricas: Campos para agregar (SUM, COUNT, AVG, etc.)
- Filtros: Condiciones WHERE dinámicas
- Granularidad temporal: Agregación por día, semana, mes, etc.
- Ordenamiento: Campos y dirección
- Límites: Número máximo de resultados
Todas las consultas incluyen automáticamente filtrado por tenant.
Dry Run (estimación de coste)
Añade ?dryRun=true para ejecutar un dry run nativo de BigQuery que valida la sintaxis SQL y estima los bytes que se procesarían, sin ejecutar la query (coste = $0). Ideal para que el frontend muestre estimaciones de coste antes de ejecutar queries pesadas.
- Rate limit independiente: 200 req/min (no consume cuota de queries normales)
- Precio estimado: $6.25/TB (BigQuery on-demand pricing)
- La respuesta incluye el SQL generado para depuración
post/analytics/query
Request
- Base URL: http://localhost:8081
- URL: http://localhost:8081/analytics/query
- Auth: HTTP bearer
Query parameters
dryRun'true' | '1'
Cuando es true o 1, ejecuta un dry run de BigQuery (validación de sintaxis
- estimación de coste) sin ejecutar la query real. La respuesta incluye estimatedBytesProcessed, estimatedCostUSD y el SQL generado. Rate limit: 200 req/min (separado del límite de queries normales).
Request body
Example request
{
"collection": "email_usage_daily",
"ctes": [
{
"name": "tickets_per_purchase",
"collection": "purchase_tickets",
"dimensions": [
{
"field": "send_date",
"alias": "fecha"
}
],
"metrics": [
{
"field": "emails_sent",
"alias": "total_emails",
"condition": {
"field": "send_date"
},
"params": {
"delimiter": " | ",
"limit": 20
}
}
],
"filters": [
{
"field": "send_date"
}
],
"timeRange": {
"start": "2024-01-01",
"end": "2024-12-31"
},
"sort": {
"field": "month"
}
}
],
"sourceTable": "tickets_per_purchase",
"dimensions": [
{
"field": "send_date",
"alias": "fecha"
}
],
"metrics": [
{
"field": "emails_sent",
"alias": "total_emails",
"condition": {
"field": "send_date"
},
"params": {
"delimiter": " | ",
"limit": 20
}
}
],
"timeRange": {
"start": "2024-01-01",
"end": "2024-12-31"
},
"filters": [
{
"field": "send_date"
}
],
"having": [
{
"field": "send_date"
}
],
"sort": {
"field": "month"
},
"limit": 100,
"distinct": true,
"comparePeriods": {
"current": {
"start": "2025-12-01",
"end": "2025-12-31",
"name": "Diciembre 2025"
},
"previous": {
"start": "2024-12-01",
"end": "2024-12-31",
"name": "Diciembre 2024"
}
},
"compareDimensions": {
"active": true,
"dimensions": [
{
"field": "eventId",
"value": "6940193688d2ee658320f9e5",
"name": "Euforia Festival 2025"
}
]
}
}Response
Consulta ejecutada exitosamente
Example response
{
"success": true,
"data": {
"metadata": {
"totalRows": 150,
"executionTime": 1263,
"query": "SELECT SUM(`emails_sent`) as `total_emails` FROM `nevent-daf5f.mart_nevent_dev.email_usage_daily` WHERE `tenant_id` = '72ef6ce8-...' AND `send_date` >= DATE('2024-01-01')",
"comparisonMetadata": {
"comparisonDimensions": [
{
"field": "event_id",
"value": "6597d9b3c9a57d0f00fcf194",
"label": "6597d9b3c9a57d0f00fcf194",
"columnName": "revenue_6597d9b3c9a57d0f00fcf194"
}
],
"totalColumn": "revenue_total"
},
"warnings": [
"distinct was ignored because aggregation metrics (COUNT, SUM, etc.) are present."
]
}
}
}Changes
No recorded changes to this operation across all 1 revision of this API.