Ir al contenido principal

Avanzado: escribe métricas personalizadas con MAQL.

Escrito por Alvys Admin

Resumen

Esta página está pensada para los casos excepcionales en los que el Catálogo de Analytics no incluye la métrica que necesitas; por ejemplo, un recuento con un filtro muy específico o una operación aritmética con dos datos que aún no se han configurado. Deberás escribir la métrica faltante en MAQL , el lenguaje de fórmulas que Alvys Reports utiliza para las medidas.

💡 Consulta primero el Catálogo. El Catálogo de Analytics de tu inquilino es muy completo: cientos de métricas predefinidas que abarcan viajes, ingresos, costes, puntualidad, kilómetros, conductores y mucho más. Antes de crear una métrica personalizada, busca en el Catálogo: es muy probable que la métrica que necesitas ya esté allí. Consulta «Crear visualizaciones arrastrando y soltando» para ver un tutorial sobre cómo hacerlo.

En resumen: una métrica es una fórmula que transforma los datos numéricos en un valor calculado; por ejemplo, "ingresos totales de este mes" o "tasa de entregas a tiempo". Las métricas se almacenan en el Catálogo de análisis y se pueden reutilizar en cualquier visualización.

MAQL es el lenguaje de fórmulas para medidas. Se parece un poco a SQL, pero se mantiene dentro del Diseñador de Visualizaciones.

Inicio rápido: escribe tu primera métrica personalizada

Abra el editor de métricas

En el panel de configuración, dentro de la sección Métricas, haga clic en + y seleccione Nueva métrica . La barra de fórmulas se abrirá sobre el lienzo.

📷 Captura de pantalla: Diseñador de visualización: barra de fórmulas abierta sobre el lienzo, lista para una expresión MAQL.

Escribe una suma simple

Cada métrica MAQL comienza con SELECT . La más sencilla hace referencia directamente a una métrica existente:

 SELECT {metric/trip_count_all} 

Esto devuelve el número total de viajes, segmentado según los atributos que aparezcan en la visualización.

Para seleccionar una referencia, escriba { y el editor ofrecerá autocompletado desde el catálogo de su inquilino (métricas, hechos, atributos y etiquetas). Seleccione el elemento que desee y el editor insertará la referencia completa.

Imagen de Notion

Imagen de Notion

Filtrar dentro de la métrica

Para restringir la métrica a un subconjunto, utilice WHERE :

 SELECT {metric/trip_count_all} WHERE {label/load_origin_state.load_origin_state} = "US-TX" 

Esto devuelve el número de viajes en los que la carga se origina en Texas. Use IN ("US-TX","US-CA","US-FL") para que coincidan varios estados a la vez.

Comparar con un período anterior

Para comparar este período con el anterior, combine FOR Previous(...) con una etiqueta de fecha:

 SELECT {metric/trip_count_all} FOR Previous({label/load_created_at.year}) WHERE {label/load_origin_state.load_origin_state} = "US-TX" 

Esto devuelve el número de viajes del año anterior, filtrado para mostrar solo los viajes con origen en Texas. El eje temporal actual de la visualización (año, trimestre o mes) determina qué significa realmente "anterior".

Guarda la métrica

Haz clic en Guardar en la barra de fórmulas. Asigna un nombre claro a la métrica, como Ingresos — Solo Texas . Ahora se encuentra en el Catálogo de análisis de tu inquilino y se puede reutilizar en diferentes visualizaciones.

⚠️ Las métricas personalizadas son visibles para todos los inquilinos. Al igual que las visualizaciones guardadas, las métricas personalizadas se comparten con todos los usuarios que tienen acceso al Diseñador de visualizaciones en su inquilino. Asígneles nombres claros.

Algunas fórmulas de ejemplo más

Una vez que domines los conceptos básicos, MAQL puede ser muy expresivo. Aquí tienes ejemplos reales de paneles de control seleccionados por Alvys.

Recuento de todos los identificadores de viaje:

 SELECT COUNT({label/TRIPS.TRIP_ID}) 

Viajes por conductor : una relación entre dos métricas existentes:

 SELECT {metric/operational_trip_count_excluding_cancelled_tonu} / {metric/operational_trip_driver_count} 

Retraso promedio en la entrega : solo se contabilizan los envíos que realmente se retrasaron:

 SELECT AVG( CASE WHEN {metric/trip_late_minutes} > 0 THEN {metric/trip_late_minutes} END ) 

Recuento de conductores activos : filtro por etiqueta booleana:

 SELECT COUNT({label/driver_id}) WHERE {label/ACTIVE_ASSET} = "true" 

Estas son buenas formas para usar como modelo: copia una, cambia las referencias de métricas o etiquetas según la pregunta que estés formulando y guarda el resultado.

Consejos

  • Nombre las métricas personalizadas para la audiencia. "Ingresos YoY %" se lee mejor que "rev_yoy_pct".

  • Pruebe la misma métrica en varias segmentaciones antes de guardar : MAQL tiene en cuenta el contexto y el número puede cambiar dependiendo de los atributos que aparezcan en la visualización.

Referencia de función

El resto de esta página contiene el catálogo completo de funciones MAQL que puede utilizar en la barra de fórmulas.

💡 Los ejemplos a continuación utilizan nombres ilustrativos como {fact/revenue} y {attribute/year} para mostrar la sintaxis de MAQL. El catálogo real de su inquilino utiliza nombres reales; la función de autocompletar del editor ( { la activa) le muestra lo que está disponible.

Sintaxis básica

Cada métrica MAQL comienza con SELECT . El orden de las cláusulas es alfabético: BY , WHERE , WITHOUT .

 SELECT <expression> [BY <attribute>] [WHERE <filter>] 

Las referencias están encerradas entre { ... } :

  • {fact/<id>} — una columna numérica sin procesar de su conjunto de datos.

  • {metric/<id>} — una métrica guardada existente.

  • {attribute/<id>} — un atributo categórico.

  • {label/<id>} — una etiqueta textual de un atributo (utilizada en valores de filtro).

Aritmética: + - * / . Las cadenas usan comillas dobles. Los comentarios comienzan con # .

Agregación

Función

Firma

Lo que hace

SUM

SUM(fact)

Suma de todos los valores

AVG

AVG(fact)

Media aritmética

MIN

MIN(fact)

Valor más pequeño

MAX

MAX(fact)

Valor más alto

COUNT

COUNT(attribute)

Recuento de valores de atributos distintos

MEDIAN

MEDIAN(fact)

Mediana

APPROXIMATE_COUNT

APPROXIMATE_COUNT(attribute)

Recuento aproximado rápido de valores distintos para grandes conjuntos de datos.

 SELECT SUM({fact/revenue}) SELECT COUNT({attribute/load_id})

Matemáticas

Función

Lo que hace

ABS(x)

Valor absoluto

ROUND(x, n)

Redondear a n decimales

CEILING(x)

Redondear al siguiente número entero

FLOOR(x)

Redondear hacia abajo al siguiente número entero

POWER(x, y)

x elevado a y

SQRT(x)

Raíz cuadrada

LN(x)

tronco natural

LOG(x)

Registro en base 10

EXP(x)

e^x

GREATEST(a, b, ...)

El mayor de los argumentos

LEAST(a, b, ...)

El más pequeño de los argumentos

SIGN(x)

-1, 0 o 1

TRUNC(x)

Truncar hacia cero

Lógica condicional

SI / ENTONCES / SI NO

 SELECT IF <condition> THEN <expr_if_true> ELSE <expr_if_false> END

CASO

 SELECT CASE WHEN <condition_1> THEN <expr_1> WHEN <condition_2> THEN <expr_2> ELSE <expr_else> END 

Si no se proporciona ningún ELSE y nada coincide, el resultado es null .

⚠️ Regla de multidimensionalidad. Envuelva CASE / IF dentro de SUM(...) cuando la condición WHEN haga referencia a un atributo que no esté en la visualización. De lo contrario, la fórmula fallará.

Filtrado — DÓNDE / TENIENDO / COMO / Clasificación

DÓNDE — filtrar por valores de etiquetas de atributos:

 SELECT {metric/revenue} WHERE {label/state} IN ("TX", "CA") SELECT {metric/revenue} WHERE {label/year} = "2026" AND {label/month} = "5" SELECT {metric/revenue} WHERE NOT ({label/state} = "TX") 

LIKE — coincidencia de patrones en etiquetas:

 SELECT {metric/revenue} WHERE {label/customer_name} LIKE "Acme%" 

% coincide con cualquier secuencia; _ coincide con un solo carácter.

HAVING — filtrar por resultados de métricas agregadas:

 SELECT SUM({fact/revenue}) HAVING SUM({fact/revenue}) > 10000 

Clasificación : conservar solo los números superiores e inferiores:

 SELECT SUM({fact/revenue}) WHERE TOP(5) IN (SELECT SUM({fact/revenue}) BY {attribute/customer})

Operadores lógicos

  • AND , OR , NOT

  • IN ( ... ) para la pertenencia a la lista

  • NOT IN ( ... ) para la pertenencia a la lista negada

  • Comparación: = , != , < , <= , > , >=

Series temporales — PARA Anterior / PARA Siguiente

Cambia una métrica a un período pasado o futuro. El cambio se ajusta al atributo de tiempo en la visualización.

 SELECT {metric/revenue} FOR Previous({attribute/year}) SELECT {metric/revenue} FOR Previous({attribute/quarter}, 3) SELECT {metric/revenue} FOR Next({attribute/month}) SELECT {metric/revenue} FOR Each({attribute/customer}) 

Funciones complementarias: FOR PreviousPeriod , FOR NextPeriod , FOR Each .

Macros de tiempo (ancladas a la fecha actual del mundo real)

 SELECT {metric/revenue} WHERE {attribute/date} = THIS(DAY) SELECT {metric/revenue} WHERE {attribute/month} = PREVIOUS(MONTH) SELECT {metric/revenue} WHERE {attribute/month} = THIS(MONTH, -2) SELECT {metric/revenue} WHERE {attribute/year} = NEXT(YEAR) 

Granularidades: DAY, WEEK, MONTH, QUARTER, YEAR, WEEKOFYEAR, MONTHOFYEAR, QUARTEROFYEAR, DAYOFMONTH, DAYOFWEEK, DAYOFYEAR .

Atajos:

  • PREVIOUS(g)THIS(g, -1)

  • NEXT(g)THIS(g, 1)

totales acumulados

Función

Lo que hace

RUNSUM(x)

Suma acumulada

RUNAVG(x)

Promedio acumulado

RUNMIN(x) / RUNMAX(x)

Mínimo/máximo acumulado

RUNVAR(x)

Varianza acumulada

RUNSTDEV(x)

Desviación estándar acumulada

Utilice WITHIN (<attribute>) para restablecer el valor acumulativo en cada nuevo valor de un atributo:

 SELECT RUNSUM(SUM({fact/revenue})) WITHIN ({attribute/quarter})

Categoría

Función

Lo que hace

RANK(metric)

Clasificación dentro del contexto actual (1 = más alto)

TOP(n) / BOTTOM(n)

Se utiliza dentro de DÓNDE para mantener las filas N superior/inferior

Cláusulas BY : anulación del contexto

Forma

Lo que hace

BY <attr>

Calcular agrupado solo por el atributo nombrado.

BY ALL <attr>

Calcular ignorando el atributo nombrado

BY ALL OTHER

Calcular ignorando todos los atributos en la visualización

BY <attr> ALL OTHER

Calcular agrupado solo por <attr> , ignorando todo lo demás.

 # Share of total: SELECT SUM({fact/revenue}) / (SELECT SUM({fact/revenue}) BY ALL OTHER) # Customer-level total even when sliced by year: SELECT SUM({fact/revenue}) BY {attribute/customer} ALL OTHER

Funciones estadísticas

Función

Lo que hace

STDEV(fact)

Desviación estándar

VAR(fact)

Diferencia

PERCENTILE(fact, p)

percentil p

CORREL(fact_a, fact_b)

Coeficiente de correlación

MOVING_AVG(metric, n)

Media móvil de los últimos n períodos

Manejo de valores nulos

Las operaciones aritméticas con un valor NULL dan como resultado NULL. Utilice IF / CASE para sustituirlo por cero:

 SELECT IF SUM({fact/x}) IS NULL THEN 0 ELSE SUM({fact/x}) END 

Por seguridad de la división:

 SELECT IF SUM({fact/denominator}) = 0 OR SUM({fact/denominator}) IS NULL THEN 0 ELSE SUM({fact/numerator}) / SUM({fact/denominator}) END

formato de números

El formato numérico reside en la métrica, no en MAQL. Abra el menú desplegable Formato en el editor de métricas.

Marcadores de posición de cadena de formato

  • 0 — dígito requerido (rellenar con ceros).

  • # — dígito opcional (sin relleno).

  • . — punto decimal.

  • , — separador de miles.

  • % — multiplica el valor por 100 y añade % .

  • \ escapar un símbolo literal.

sufijos de truncamiento

  • #,K — miles, sufijo "K"

  • #,,M — millones, sufijo "M"

  • #,,,B — miles de millones, sufijo "B"

Colores y formato condicional

 [Blue]#,#.## [color=99AE00]#,#.## [backgroundcolor=00FF00]#,#.## 

Reglas condicionales:

 [<400000][red]$#,#.##; [<500000][magenta]$#,#.##; [<600000][yellow]$#,#.##; [>=600000][green]$#,#.## 

Las reglas se aplican de izquierda a derecha; gana el primer partido.

Redondeo automático por magnitud

 [>=1000000000]#,,,.0 B; [>=1000000]#,,.0 M; [>=1000]#,.0 K; #,##0

Véase también

¿Ha quedado contestada tu pregunta?