Use o KQL de forma eficaz
Os bancos de dados KQL em casas de eventos são otimizados para grandes volumes de dados em tempo real. Para obter os melhores resultados, existem algumas boas práticas que deve ter em mente.
Tabelas baseadas em fluxos de dados em tempo real podem se tornar grandes. Minimizar os dados retornados por uma consulta pode ajudar a otimizar o desempenho e evitar erros devido a limites de dados excedidos.
Colunas de filtro
Use a palavra-chave project para recuperar apenas as colunas necessárias. Por exemplo, a consulta a seguir retorna apenas quatro colunas de dados:
Automotive
| project trip_id, vendor_id, pickup_datetime, fare_amount
Filtrar linhas
Use a palavra-chave where para filtrar as linhas retornadas com base em critérios específicos. Por exemplo, a consulta a seguir retorna dados somente para viagens que ocorreram no mês atual:
Automotive
| where getmonth(pickup_datetime) == getmonth(now())
and getyear(pickup_datetime) == getyear(now())
| project trip_id, vendor_id, pickup_datetime, fare_amount
Observe o getmonth
uso das funções e getyear
neste exemplo. Dado que os dados em tempo real geralmente envolvem um elemento temporal (baseado no tempo), o KQL fornece um forte suporte para filtragem com base no tempo. Por exemplo, a consulta a seguir usa a função ago para restringir os resultados apenas aos eventos que ocorreram nos últimos 30 minutos.
Automotive
| where pickup_datetime > ago(30min)
| project trip_id, vendor_id, pickup_datetime, fare_amount
Quando os dados estão sendo carregados perpetuamente de uma fonte de streaming (por exemplo, por um fluxo de eventos), você pode usar a função ingestion_time para filtrar com base em quando os dados foram carregados na tabela, mesmo que os dados não incluam um valor baseado em tempo para filtrar. Por exemplo, a consulta a seguir recupera os eventos que foram carregados na tabela na última hora.
Automotive
| where ingestion_time() > ago(1h)
| project trip_id, vendor_id, pickup_datetime, fare_amount
Resumir dados
Às vezes, você não precisa recuperar dados no nível de evento individual. Em vez disso, você pode resumir os dados para ajudá-lo a analisar padrões - geralmente com base em intervalos de tempo.
Por exemplo, a consulta a seguir recupera a tarifa média coletada por cada fornecedor de táxi a cada hora nos eventos ingeridos no último dia.
Automotive
| where ingestion_time() > ago(1d)
| summarize average_fare = avg(fare_amount) by vendor_id, pickup_hour = hourofday(pickup_datetime)
| project pickup_hour, vendor_id, average_fare
| sort by pickup_hour