Integraciones
Power Query M
Monitoriza tus flujos de Power Query (en Excel o Power BI) llamando a la API de eventos de InfiniAnalytics con Web.Contents en cada etapa de tu consulta.
Resumen
La autenticación se hace con la cabecera token (no Authorization). Json.FromValue serializa automáticamente el cuerpo de la petición, y Text.FromBinary convierte la respuesta binaria de Web.Contents a texto legible.
Parámetros
| Parámetro | Descripción |
|---|---|
Token | Tu token de organización. Lo encuentras en el panel de InfiniAnalytics, dentro de 'Organización'. |
automation_id | El UUID del automatismo al que quieres asociar los eventos. Lo encuentras en el listado de automatismos de tu organización, dentro de 'Procesos'. |
execution_id | Un identificador que tú eliges para agrupar todos los eventos de una misma ejecución. Debe ser el mismo valor en el START, los EVENT/WARNING intermedios, el ERROR y el END de una misma ejecución, y no puede reutilizarse en dos ejecuciones que se solapen en el tiempo. Puede ser un ID propio de tu sistema o, como en los ejemplos, una marca de tiempo (DateTime.LocalNow() en Power Query). |
Evita duplicados en tu primera consulta
- 1
Crea la consulta apuntando al endpoint de ping
Crea la consulta apuntando primero a
GET https://api.analytics.infini.es/v1/ping/(comprobación de conectividad, sin cabeceras ni cuerpo) y cárgala como "Solo crear conexión":Power Query Mlet Response = Web.Contents("https://api.analytics.infini.es/v1/ping/") in Text.FromBinary(Response) - 2
Sustituye el código por el evento real
Una vez creada, edita esa misma consulta con el código del evento real que quieras enviar (START, EVENT, etc.) y pulsa "Listo". Como la consulta ya existe, esto envía el evento una sola vez.
- 3
Repite para los siguientes eventos
Para cada evento siguiente de la misma ejecución, repite el paso 2 sobre la misma consulta (edita el contenido y pulsa "Listo").
Ejemplos por tipo de evento
En estos ejemplos los valores están fijos para simplificar; en tu propio pipeline normalmente los calcularás de forma dinámica (por ejemplo, execution_id = Text.From(DateTime.LocalNow())) a partir de la lógica de tus procesos.
START — Registrar inicio de ejecución
let
BaseUrl = "https://api.analytics.infini.es/v1/register/",
Token = "your_organization_token",
Body = [
automation_id = "3571c1e0-88b9-4104-a0b0-f060b7fcc6eb",
execution_id = "2025-03-03T15:32:17.571404",
event = "START",
description = "Starting the execution"
],
Response = Web.Contents(
BaseUrl,
[
Headers = [
#"Content-Type" = "application/json",
token = Token
],
Content = Json.FromValue(Body)
]
)
in
Text.FromBinary(Response)EVENT — Registrar evento de ejecución
let
BaseUrl = "https://api.analytics.infini.es/v1/register/",
Token = "your_organization_token",
Body = [
automation_id = "3571c1e0-88b9-4104-a0b0-f060b7fcc6eb",
execution_id = "2025-03-03T15:32:17.571404",
event = "EVENT",
description = "Relevant event description"
],
Response = Web.Contents(
BaseUrl,
[
Headers = [
#"Content-Type" = "application/json",
token = Token
],
Content = Json.FromValue(Body)
]
)
in
Text.FromBinary(Response)WARNING — Registrar advertencia de ejecución
let
BaseUrl = "https://api.analytics.infini.es/v1/register/",
Token = "your_organization_token",
Body = [
automation_id = "3571c1e0-88b9-4104-a0b0-f060b7fcc6eb",
execution_id = "2025-03-03T15:32:17.571404",
event = "WARNING",
description = "Warning description"
],
Response = Web.Contents(
BaseUrl,
[
Headers = [
#"Content-Type" = "application/json",
token = Token
],
Content = Json.FromValue(Body)
]
)
in
Text.FromBinary(Response)ERROR — Registrar error de ejecución
let
BaseUrl = "https://api.analytics.infini.es/v1/register/",
Token = "your_organization_token",
Body = [
automation_id = "3571c1e0-88b9-4104-a0b0-f060b7fcc6eb",
execution_id = "2025-03-03T15:32:17.571404",
event = "ERROR",
description = "High-level error description",
error_id = "e0001",
error_description = "Detailed error description"
],
Response = Web.Contents(
BaseUrl,
[
Headers = [
#"Content-Type" = "application/json",
token = Token
],
Content = Json.FromValue(Body)
]
)
in
Text.FromBinary(Response)END — Registrar fin de ejecución
let
BaseUrl = "https://api.analytics.infini.es/v1/register/",
Token = "your_organization_token",
Body = [
automation_id = "3571c1e0-88b9-4104-a0b0-f060b7fcc6eb",
execution_id = "2025-03-03T15:32:17.571404",
event = "END",
description = "End of execution description"
],
Response = Web.Contents(
BaseUrl,
[
Headers = [
#"Content-Type" = "application/json",
token = Token
],
Content = Json.FromValue(Body)
]
)
in
Text.FromBinary(Response)