Conheça o uso e os exemplos das instruções de transformação de dados (nova versão).
pack-fields
Agrupa vários campos em um novo campo como uma string serializada em JSON, adequada para cenários de transmissão estruturada, como a criação de corpos de solicitação de API.
-
Por padrão, campos que não são do tipo Varchar não são processados. Isso inclui os campos
__time__e__time_ns_part__. -
Por padrão, os dados de origem não são mantidos.
Sintaxe
| pack-fields -keep -ltrim -include=<include> -exclude=<exclude> as <output>
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
output |
String |
Sim |
O nome do campo de saída após o agrupamento. O valor do campo está no formato JSON. |
|
include |
RegExp |
Não |
A configuração de lista de permissões. Os campos que correspondem à expressão regular são agrupados. O valor padrão é ".*", que corresponde a todos os campos. Para obter mais informações, consulte Expressões regulares. |
|
exclude |
RegExp |
Não |
A configuração de lista de bloqueios, que tem precedência sobre a lista de permissões. Os campos que correspondem à expressão regular não são agrupados. O valor padrão é vazio, o que significa que nenhuma correspondência é realizada. Para obter mais informações, consulte Expressões regulares. |
|
ltrim |
String |
Não |
Remove o prefixo do nome do campo de saída. |
|
keep |
Bool |
Não |
Especifica se os dados de origem devem ser mantidos após o agrupamento. True: mantém os dados de origem agrupados na saída. False (padrão): não mantém os dados de origem agrupados na saída. |
Exemplos
-
Exemplo 1: agrupe todos os campos de log no campo test. Por padrão, os campos originais agrupados são excluídos.
-
Instrução SPL
* | pack-fields -include='\w+' as test -
Dados de entrada
test1:123 test2:456 test3:789 -
Saída
test:{"test1": "123", "test2": "456", "test3": "789"}
-
-
Exemplo 2: agrupe todos os campos de log no campo test sem excluir os campos originais agrupados.
-
Instrução SPL
* | pack-fields -keep -include='\w+' as test -
Dados de entrada
test1:123 test2:456 test3:789 -
Saída
test:{"test1": "123", "test2": "456", "test3": "789"} test1:123 test2:456 test3:789
-
-
Exemplo 3: agrupe os campos test e abcd no campo content e mantenha os campos originais.
-
Instrução SPL
* | pack-fields -keep -include='\w+' as content -
Dados de entrada
abcd@#%:123 test:456 abcd:789 -
Saída
abcd:789 abcd@#%:123 content:{"test": "456", "abcd": "789"} test:456
-
-
Exemplo 4: agrupe todos os campos, exceto os campos test e abcd, no campo content e exclua os campos originais agrupados.
-
Instrução SPL
* | pack-fields -exclude='\w+' as content -
Dados de entrada
abcd@#%:123 test:456 abcd:789 -
Saída
abcd:789 content:{"abcd@#%": "123"} test:456
-
-
Exemplo 5: extraia todos os pares chave-valor que correspondem à expressão regular especificada de um valor de campo e agrupe-os no campo name.
-
Instrução SPL
* | parse-kv -prefix='k_' -regexp dict, '(\w+):(\w+)' | pack-fields -include='k_.*' -ltrim = 'k_' as name -
Dados de entrada
dict: x:123, y:456, z:789 -
Saída
dict:x:123, y:456, z:789 name:{"x": "123", "y": "456", "z": "789"}
-
log-to-metric
Transforma logs no formato necessário para armazenar dados de séries temporais.
-
Por padrão, dados de log que não atendem aos requisitos de Métrica são ignorados.
-
A unidade de tempo do campo de timestamp nos dados de log brutos é detectada automaticamente. As unidades compatíveis incluem segundos, milissegundos, microssegundos e nanossegundos.
-
A gravação baseada em hash é usada por padrão.
Sintaxe
| log-to-metric -wildcard -format -names=<names> -labels=<labels> -time_field=<time_field> -buckets=<buckets>
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
wildcard |
Bool |
Não |
Especifica se a correspondência por curinga deve ser ativada para os nomes de campo especificados por Por padrão, a correspondência exata de campos é usada. Para ativar a correspondência por curinga, adicione este parâmetro. |
|
format |
Bool |
Não |
Especifica se a formatação automática deve ser ativada. Por padrão, essa opção está desativada e dados de rótulo inválidos são ignorados durante a transformação. Se ativada, os dados de rótulo inválidos são formatados. Os valores de rótulo não podem conter caracteres como |
|
names |
FieldList |
Sim |
Uma lista de campos de log usada para gerar pontos de dados de métrica correspondentes. Se um campo nos dados de entrada corresponder a pelo menos um dos nomes de campo ou padrões de curinga especificados, um ponto de dados de métrica será gerado para esse campo. O nome da métrica é o nome do campo e o valor da métrica é o valor do campo. Por exemplo, Importante
Para obter o formato de dados de séries temporais, consulte Dados de séries temporais (métrica). |
|
labels |
FieldList |
Não |
Uma lista de campos de log usada para construir as informações de rótulo de série temporal correspondentes. Se um campo nos dados de entrada corresponder a pelo menos um dos nomes de campo ou padrões de curinga especificados, o campo será adicionado aos rótulos do ponto de dados. O nome do rótulo é o nome do campo e o valor do rótulo é o valor do campo. Por exemplo, Importante
Para obter o formato de dados de séries temporais, consulte Dados de séries temporais (métrica). |
|
time_field |
String |
Não |
O campo de tempo para os dados de série temporal. Por padrão, o campo Importante
O campo de entrada deve ser um timestamp. O tipo de dados correspondente deve ser BIGINT ou VARCHAR. Se o campo for do tipo texto VARCHAR, seu valor deve ser conversível em um tipo BIGINT válido. |
|
buckets |
Integer |
Não |
O valor padrão é 32. Defina este parâmetro como o número de shards de destino. Ele ajusta o intervalo de hash para otimizar o desempenho de gravação do operador log-to-metric. Este parâmetro controla o número de buckets de hash, o que afeta a distribuição de dados e o desempenho de consulta no metricstore. |
Exemplos
-
Exemplo 1: transforme um log que contém o campo rt no formato de dados de série temporal.
-
Instrução SPL
* | log-to-metric -names='["rt"]' -
Dados de entrada
__time__: 1614739608 rt: 123 -
Saída
__labels__: __name__:rt __time_nano__:1614739608 __value__:123
-
-
Exemplo 2: transforme um log que contém o campo rt no formato de dados de série temporal e use o campo host como um novo rótulo.
-
Instrução SPL
* | log-to-metric -names='["rt"]' -labels='["host"]' -
Dados de entrada
__time__: 1614739608 rt: 123 host: myhost -
Saída
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608 __value__:123
-
-
Exemplo 3: transforme um log com os campos
rteqpsno formato de dados de série temporal e use o campo host como rótulo.-
Instrução SPL
* | log-to-metric -names='["rt", "qps"]' -labels='["host"]' -
Dados de entrada
__time__: 1614739608 rt: 123 qps: 10 host: myhost -
Saída
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608 __value__:123 __labels__:host#$#myhost __name__:qps __time_nano__:1614739608 __value__:10
-
-
Exemplo 4: use correspondência por curinga para transformar um log que contém os campos rt1 e rt2 no formato de dados de série temporal e use o campo host como um novo rótulo.
-
Instrução SPL
* | log-to-metric -wildcard -names='["rt*"]' -labels='["host"]' -
Dados de entrada
__time__: 1614739608 rt1: 123 rt2: 10 host: myhost -
Saída
__labels__:host#$#myhost __name__:rt1 __time_nano__:1614739608 __value__:123 __labels__:host#$#myhost __name__:rt2 __time_nano__:1614739608 __value__:10
-
-
Exemplo 5: transforme um log que contém os campos
rteqpsno formato de dados de série temporal, use o campohostcomo um novo rótulo e formate automaticamente o valor do novo rótulo.-
Instrução SPL
* | log-to-metric -format -names='["rt", "qps"]' -labels='["host"]' -
Dados de entrada
__time__: 1614739608 rt: 123 qps: 10 host: myhost1|myhost2 -
Saída
__labels__:host#$#myhost1_myhost2 __name__:rt __time_nano__:1614739608 __value__:123 __labels__:host#$#myhost1_myhost2 __name__:qps __time_nano__:1614739608 __value__:10
-
-
Exemplo 6: transforme um log que contém os campos
rteqpsno formato de dados de série temporal. Substitua os nomes dos campos pormax_rtetotal_qpse use o campohostcomo um novo rótulo.-
Instrução SPL
* | project-rename max_rt = rt, total_qps = qps| log-to-metric -names='["max_rt", "total_qps"]' -labels='["host"]' -
Dados de entrada
__time__: 1614739608 rt: 123 qps: 10 host: myhost -
Saída
__labels__:host#$#myhost __name__:max_rt __time_nano__:1614739608 __value__:123 __labels__:host#$#myhost __name__:total_qps __time_nano__:1614739608 __value__:10
-
-
Exemplo 7: transforme um log que contém os campos
rteqpsno formato de dados de série temporal. Os campos são renomeados para max_rt e total_qps, e o campo host é renomeado para hostname para servir como um novo rótulo.-
Instrução SPL
* | project-rename max_rt = rt, total_qps = qps, hostname=host| log-to-metric -names='["max_rt", "total_qps"]' -labels='["hostname"]' -
Dados de entrada
__time__: 1614739608 rt: 123 qps: 10 host: myhost -
Saída
__labels__:hostname#$#myhost __name__:max_rt __time_nano__:1614739608 __value__:123 __labels__:hostname#$#myhost __name__:total_qps __time_nano__:1614739608 __value__:10
-
-
Exemplo 8: transforme um log que contém o campo remote_user no formato de dados de série temporal. Use o campo status como um novo rótulo e o campo time como o timestamp para os dados de série temporal.
-
Instrução SPL
* | log-to-metric -names='["remote_user"]' -labels='["status"]' -time_field='time' -
Dados de entrada
time:1652943594 remote_user:89 request_length:4264 request_method:GET status:200 -
Saída
__labels__:status#$#200 __name__:remote_user __time_nano__:1652943594 __value__:89
-
metric-to-metric
Transforma ainda mais os dados de série temporal existentes ao adicionar, modificar ou remover rótulos.
-
O nome do campo de entrada deve corresponder à expressão regular
[a-zA-Z_][a-zA-Z0-9_]*. Caso contrário, o rótulo do ponto de série temporal gerado não incluirá este campo. -
Se os três parâmetros de opção contiverem o mesmo campo, a prioridade será a seguinte: add_labels > del_labels > rename_labels.
Para obter mais informações sobre o formato de dados de série temporal de saída, consulte Dados de séries temporais (métrica).
Sintaxe
| metric-to-metric -format -add_labels=<add_labels> -del_labels=<del_labels> -rename_labels=<rename_labels> -buckets=<buckets>
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
add_labels |
Array |
Não |
Uma lista de campos de rótulo a serem adicionados. Usada para construir novas informações de rótulo de série temporal. Adiciona os dados brutos aos rótulos do ponto de série temporal. Apenas o tipo VARCHAR é compatível. Por exemplo, se os dados brutos forem |
|
del_labels |
Array |
Não |
Uma lista de campos de rótulo a serem removidos. Usada para construir novas informações de rótulo de série temporal. Se um nome de campo na entrada corresponder a um nome de campo nos rótulos originais, o campo correspondente será excluído dos rótulos originais. Por exemplo, se o valor do rótulo original for |
|
rename_labels |
Map |
Não |
Uma lista de campos de rótulo a serem renomeados. Usada para construir novas informações de rótulo de série temporal. Atualiza os rótulos do ponto de série temporal original com base nas informações do mapa. A chave é o nome do campo original e o valor é o novo nome do campo. Por exemplo, |
|
format |
Bool |
Não |
Especifica se a formatação automática deve ser ativada. Por padrão, essa opção está desativada e dados inválidos são ignorados durante a transformação. Se ativada:
|
|
buckets |
Integer |
Não |
O valor padrão é 32. Defina este parâmetro como o número de shards de destino. Ele ajusta o intervalo de hash para otimizar o desempenho de gravação do operador metric-to-metric. Este parâmetro controla o número de buckets de hash, o que afeta a distribuição de dados e o desempenho de consulta no metricstore. |
Exemplos
-
Exemplo 1: adicione um rótulo.
-
Instrução SPL
* | extend qps = '10'|metric-to-metric -add_labels='["qps"]' -
Dados de entrada
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608 __value__:123 -
Saída
__labels__:host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123
-
-
Exemplo 2: remova um rótulo.
-
Instrução SPL
* | metric-to-metric -del_labels='["qps"]' -
Dados de entrada
__labels__:host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123 -
Saída
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608 __value__:123
-
-
Exemplo 3: renomeie um rótulo.
-
Instrução SPL
* | metric-to-metric -rename_labels='{"host":"etl_host"}' -
Dados de entrada
__labels__:host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123 -
Saída
__labels__:etl_host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123
-
-
Exemplo 4: formate dados inválidos.
-
Instrução SPL
* | metric-to-metric -format -
Dados de entrada
__labels__:host#$#myhost|qps#$#10|asda$cc#$#j|ob|schema#$#|#$#|#$#xxxx __name__:rt __time_nano__:1614739608 __value__:123 -
Saída
__labels__:asda_cc#$#j|host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123
-