Compartir vía


Operador make-series

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Cree una serie de valores agregados especificados a lo largo de un eje definido.

Sintaxis

T| make-series [MakeSeriesParameters] [Column=] Aggregation [default=DefaultValue] [, ...] onPaso AxisColumn [fromstart] [toend] step [by [Column=] GroupExpression [, ...]]

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Tipo Obligatorio Descripción
Columna string Nombre de la columna de resultado. El valor predeterminado es un nombre derivado de la expresión.
DefaultValue escalar Valor predeterminado que se va a usar en lugar de valores ausentes. Si no hay ninguna fila con valores específicos de AxisColumn y GroupExpression, se asigna un valor DefaultValue al elemento correspondiente de la matriz. El valor predeterminado es 0.
Agregación string ✔️ Llamada a una función de agregación como count() o avg(), con nombres de columna como argumentos. Consulte la lista de funciones de agregación. Solo las funciones de agregación que devuelven resultados numéricos se pueden usar con el operador make-series.
AxisColumn string ✔️ Columna por la que se ordena la serie. Normalmente, los valores de columna son de tipo datetime o timespan pero se aceptan todos los tipos numéricos.
iniciar escalar ✔️ Valor de límite inferior de AxisColumn para cada una de las series que se van a compilar. Si no se especifica start , es el primer intervalo o paso que tiene datos en cada serie.
fin escalar ✔️ Valor no inclusivo de límite superior de AxisColumn. El último índice de la serie temporal es menor que este valor y es el inicio más el entero múltiplo del paso que es menor que el final. Si no se especifica end , es el límite superior del último intervalo, o paso, que tiene datos por cada serie.
paso escalar ✔️ La diferencia, o tamaño de rango, entre dos elementos consecutivos de la matriz AxisColumn. Para una lista de los intervalos de tiempo posibles, consulte el tipo de datos timespan.
GroupExpression expresión sobre las columnas que proporciona un conjunto de valores únicos. Habitualmente se trata de un nombre de columna que ya proporciona un conjunto restringido de valores.
MakeSeriesParameters Cero o más parámetros separados por espacios en forma de Valor de nombre = que controlan el comportamiento. Consulte Parámetros make-serie admitidos.

Nota:

Los startparámetros , endy step se usan para compilar una matriz de valores AxisColumn . La matriz consta de valores entre start y end, con el step valor que representa la diferencia entre un elemento de matriz y el siguiente. Todos los valores de agregación se ordenan en función de esta matriz.

Parámetros make-serie admitidos

Nombre Descripción
kind Genera el resultado predeterminado cuando la entrada del operador make-series está vacía. Valor: nonempty
hint.shufflekey=<key> La consulta shufflekey comparte la carga de consultas en los nodos del clúster mediante una clave para crear particiones de datos. Consulte la consulta aleatoria.

Nota:

Las matrices generadas por la serie make están limitadas a 1048 576 valores (2^20). Si se intenta generar una matriz mayor con make-series, se producirá un error, o se truncará la matriz.

Sintaxis alternativa

T| make-series [Column=] Aggregation [default=DefaultValue] [, ...] onAxisColumninrange(empezar,parar,paso) [by [Columna=] GroupExpression [, ...]]

La serie generada a partir de la sintaxis alternativa es distinta de la sintaxis principal en dos aspectos:

  • El valor stop incluye los extremos.
  • La discretización del eje de índice se genera con bin() y no bin_at(), lo que significa que es posible que start no se incluya en la serie generada.

Se recomienda usar la sintaxis principal de la serie make y no la sintaxis alternativa.

Devoluciones

Las filas de entrada están organizadas en grupos que tienen los mismos valores que las expresiones by y la expresión bin_at(AxisColumn,step,start). A continuación, las funciones de agregación especificadas se calculan sobre cada grupo, generando una fila para cada grupo. El resultado contiene las columnas by, la columna AxisColumn y también al menos una columna para cada agregación procesada (No se admiten las agregaciones en varias columnas ni resultados no numéricos).

Este resultado intermedio tiene tantas filas como combinaciones únicas de by y valores bin_at(AxisColumn,step,start).

Por último, las filas del resultado intermedio organizadas en grupos que tienen los mismos valores de las expresiones by y todos los valores agregados se organizan en matrices (valores de tipo dynamic). Para cada agregación, hay una columna que contiene la matriz con el mismo nombre. La última columna es una matriz que contiene los valores de AxisColumn agrupados según el paso especificado.

Nota:

Aunque puede proporcionar expresiones arbitrarias para las expresiones de agregación y las de agrupación, resulta más eficaz usar nombres de columna simples.

Lista de funciones de agregación

Función Descripción
avg() Devuelve un valor promedio de todo el grupo.
avgif() Devuelve un promedio con el predicado del grupo.
count() Devuelve un recuento del grupo.
countif() Devuelve un recuento con el predicado del grupo.
covarianza() Devuelve la covarianza de ejemplo de dos variables aleatorias.
covarianceif() Devuelve la covarianza de ejemplo de dos variables aleatorias con predicado.
covariancep() Devuelve la covarianza de población de dos variables aleatorias.
covariancepif() Devuelve la covarianza de población de dos variables aleatorias con predicado.
dcount() Devuelve un recuento único aproximado de los elementos del grupo.
dcountif() Devuelve un recuento único aproximado con el predicado del grupo.
max() Devuelve el valor máximo de todo el grupo
maxif() Devuelve el valor máximo con el predicado del grupo.
min() Devuelve el valor mínimo de todo el grupo
minif() Devuelve el valor mínimo con el predicado del grupo.
percentile() Devuelve el valor de percentil en el grupo
take_any() Devuelve un valor aleatorio no vacío para el grupo.
stdev() Devuelve la desviación estándar del grupo.
sum() Devuelve la suma de los elementos dentro del grupo.
sumif() Devuelve la suma de los elementos con el predicado del grupo.
varianza() Devuelve la varianza de ejemplo en el grupo.
varianceif() Devuelve la varianza de ejemplo en el grupo con predicado.
varianza() Devuelve la varianza de población en el grupo.
variancepif() Devuelve la varianza de población en el grupo con predicado.

Lista de funciones para el análisis de series temporales

Función Descripción
series_fir() Aplica un filtro de respuesta finita al impulso.
series_iir() Aplica un filtro de respuesta infinita al impulso.
series_fit_line() Busca una línea recta que sea la mejor aproximación de la entrada.
series_fit_line_dynamic() Busca una línea que sea la mejor aproximación de la entrada y devuelve un objeto dinámico.
series_fit_2lines() Busca dos líneas que sean la mejor aproximación de la entrada.
series_fit_2lines_dynamic() Busca dos líneas que sean la mejor aproximación de la entrada y devuelve un objeto dinámico.
series_outliers() Puntúa los puntos de anomalía de una serie.
series_periods_detect() Encuentra los periodos más importantes en una serie temporal.
series_periods_validate() Comprueba si una serie temporal contiene patrones periódicos de longitudes concretas.
series_stats_dynamic() Devuelve varias columnas con estadísticas comunes (mín./máx./varianza/desviación estándar/promedio).
series_stats() Genera un valor dinámico con estadísticas comunes (mín./máx./varianza/desviación estándar/promedio).

Para obtener una lista completa de funciones para el análisis de series, consulte: Funciones de procesamiento de series

Lista de funciones de interpolación de series

Función Descripción
series_fill_backward() Realiza una interpolación de relleno hacia atrás de los valores faltantes en una serie.
series_fill_const() Reemplaza los valores faltantes de una serie con un valor constante especificado.
series_fill_forward() Realiza una interpolación de relleno hacia delante de los valores faltantes en una serie.
series_fill_linear() Realiza una interpolación lineal de los valores faltantes en una serie.
  • Nota: De manera predeterminada, las funciones de interpolación suponen que null es un valor faltante. Por lo tanto, especifique default=double(null) en make-series si tiene previsto usar funciones de interpolación en la serie.

Ejemplos

Una tabla que muestra matrices de los números y los precios promedio de cada fruta para cada uno de los proveedores ordenados por marca de tiempo con el intervalo especificado. Hay una fila en la salida para cada combinación única de frutas y proveedores. Las columnas de salida muestran las frutas, los proveedores y las matrices de: recuento, promedio y toda la escala de tiempo (de 2016-01-01 a 2016-01-10). Todas las matrices están ordenadas por la marca de tiempo correspondiente y todos los huecos se rellenan con los valores predeterminados (0 en este ejemplo). El resto de columnas de entrada se ignoran.

T | make-series PriceAvg=avg(Price) default=0
on Purchase from datetime(2016-09-10) to datetime(2016-09-13) step 1d by Supplier, Fruit

Tres tablas. En la primera se enumeran los datos sin procesar, en la segunda solo las combinaciones únicas de proveedor-fruta-fecha y la tercera contiene los resultados de make-series.

let data=datatable(timestamp:datetime, metric: real)
[
  datetime(2016-12-31T06:00), 50,
  datetime(2017-01-01), 4,
  datetime(2017-01-02), 3,
  datetime(2017-01-03), 4,
  datetime(2017-01-03T03:00), 6,
  datetime(2017-01-05), 8,
  datetime(2017-01-05T13:40), 13,
  datetime(2017-01-06), 4,
  datetime(2017-01-07), 3,
  datetime(2017-01-08), 8,
  datetime(2017-01-08T21:00), 8,
  datetime(2017-01-09), 2,
  datetime(2017-01-09T12:00), 11,
  datetime(2017-01-10T05:00), 5,
];
let interval = 1d;
let stime = datetime(2017-01-01);
let etime = datetime(2017-01-10);
data
| make-series avg(metric) on timestamp from stime to etime step interval 
avg_metric marca de tiempo
[ 4,0, 3,0, 5,0, 0,0, 10,5, 4,0, 3,0, 8,0, 6,5 ] [ "2017-01-01T00:00:00.000000Z", "2017-01-02T00:00:00.000000Z", "2017-01-03T00:00:00.000000Z", "2017-01-04T00:00:00.000000Z", "2017-01-05T00:000:00.0000000Z", "2017-01-06T00:00:00.000000Z", "2017-01-07T00:00:00.0000000Z", "2017-01-08T00:00:00.000000Z", "2017-01-09T00:00:00.0000000Z" ]

Cuando la entrada para make-series está vacía, el comportamiento predeterminado de make-series genera un resultado vacío.

let data=datatable(timestamp:datetime, metric: real)
[
  datetime(2016-12-31T06:00), 50,
  datetime(2017-01-01), 4,
  datetime(2017-01-02), 3,
  datetime(2017-01-03), 4,
  datetime(2017-01-03T03:00), 6,
  datetime(2017-01-05), 8,
  datetime(2017-01-05T13:40), 13,
  datetime(2017-01-06), 4,
  datetime(2017-01-07), 3,
  datetime(2017-01-08), 8,
  datetime(2017-01-08T21:00), 8,
  datetime(2017-01-09), 2,
  datetime(2017-01-09T12:00), 11,
  datetime(2017-01-10T05:00), 5,
];
let interval = 1d;
let stime = datetime(2017-01-01);
let etime = datetime(2017-01-10);
data
| take 0
| make-series avg(metric) default=1.0 on timestamp from stime to etime step interval 
| count 

Salida

Contar
0

El uso kind=nonempty de en make-series genera un resultado no vacío de los valores predeterminados:

let data=datatable(timestamp:datetime, metric: real)
[
  datetime(2016-12-31T06:00), 50,
  datetime(2017-01-01), 4,
  datetime(2017-01-02), 3,
  datetime(2017-01-03), 4,
  datetime(2017-01-03T03:00), 6,
  datetime(2017-01-05), 8,
  datetime(2017-01-05T13:40), 13,
  datetime(2017-01-06), 4,
  datetime(2017-01-07), 3,
  datetime(2017-01-08), 8,
  datetime(2017-01-08T21:00), 8,
  datetime(2017-01-09), 2,
  datetime(2017-01-09T12:00), 11,
  datetime(2017-01-10T05:00), 5,
];
let interval = 1d;
let stime = datetime(2017-01-01);
let etime = datetime(2017-01-10);
data
| take 0
| make-series kind=nonempty avg(metric) default=1.0 on timestamp from stime to etime step interval 

Salida

avg_metric marca de tiempo
[
1,0,
1,0,
1,0,
1,0,
1,0,
1,0,
1,0,
1,0,
1,0
]
[
"2017-01-01T00:00:00.0000000Z",
"2017-01-02T00:00:00.0000000Z",
"2017-01-03T00:00:00.0000000Z",
"2017-01-04T00:00:00.0000000Z",
"2017-01-05T00:00:00.0000000Z",
"2017-01-06T00:00:00.0000000Z",
"2017-01-07T00:00:00.0000000Z",
"2017-01-08T00:00:00.000000Z",
"2017-01-09T00:00:00.0000000Z"
]

Usar make-series y mv-expand para rellenar los valores de los registros que faltan:

let startDate = datetime(2025-01-06);
let endDate = datetime(2025-02-09);
let data = datatable(Time: datetime, Value: int, other:int)
[
    datetime(2025-01-07), 10, 11,
    datetime(2025-01-16), 20, 21,
    datetime(2025-02-01), 30, 5
];
data
| make-series Value=sum(Value), other=-1 default=-2 on Time from startDate to endDate step 7d
| mv-expand Value, Time, other
| extend Time=todatetime(Time), Value=toint(Value), other=toint(other)
| project-reorder Time, Value, other 

Salida

Tiempo Importancia Otros
2025-01-06T00:00:00Z 10 -1
2025-01-13T00:00:00Z 20 -1
2025-01-20T00:00:00Z 0 -2
2025-01-27T00:00:00Z 30 -1
2025-02-03T00:00:00Z 0 -2