Casos de uso de exibições materializadas
Aplica-se a: ✅Microsoft Fabric✅ do Azure Data Explorer
exibições materializadas expõem uma consulta de agregação em uma tabela de origem ou outro modo de exibição materializado. Este artigo aborda casos de uso comuns e avançados para exibições materializadas.
Casos de uso comuns
Veja a seguir cenários comuns que podem ser resolvidos usando uma exibição materializada:
Atualizar dados: Atualizar dados retornando o último registro por entidade usando
arg_max()
(função de agregação). Por exemplo, crie uma exibição que apenas materialize os registros ingeridos a partir de agora:.create materialized-view ArgMax on table T { T | summarize arg_max(Timestamp, *) by User }
Reduza a resolução de dados Reduza a resolução de dados calculando estatísticas periódicas sobre os dados brutos. Use várias funções de agregação por período de tempo. Por exemplo, mantenha um instantâneo up-todata de usuários distintos por dia:
.create materialized-view UsersByDay on table T { T | summarize dcount(User) by bin(Timestamp, 1d) }
Registros de eliminação de duplicação: registros de eliminação de duplicação em uma tabela usando
take_any()
(função de agregação). Por exemplo, crie uma exibição materializada que elimina a duplicação da tabela de origem com base na colunaEventId
, usando um lookback de 6 horas. Os registros são eliminação de duplicação em relação apenas aos registros ingeridos 6 horas antes dos registros atuais..create materialized-view with(lookback=6h) DeduplicatedTable on table T { T | summarize take_any(*) by EventId }
Nota
Você pode ocultar a tabela de origem criando uma função com o mesmo nome da tabela que faz referência à exibição materializada. Esse padrão garante que os chamadores que consultam a tabela acessem a exibição materializada com eliminação de duplicação porque funções substituem tabelas com o mesmo nome. Para evitar referências cíclicas na definição de exibição, use a função table() para fazer referência à tabela de origem:
.create materialized-view DeduplicatedTable on table T { table('T') | summarize take_any(*) by EventId }
Para obter mais exemplos, consulte o comando .create materialized-view .
Cenário avançado
Você pode usar uma exibição materializada para criar/atualizar/excluir o processamento de eventos. Para registros com informações incompletas ou desatualizadas em cada coluna, uma exibição materializada pode fornecer as atualizações mais recentes para cada coluna, excluindo entidades que foram excluídas.
Considere a tabela de entrada a seguir chamada Events
:
de entrada
Timestamp | Cud | ID | col1 | col2 | col3 |
---|---|---|---|---|---|
2023-10-24 00:00:00.0000000 | C | 1 | 1 | 2 | |
2023-10-24 01:00:00.0000000 | U | 1 | 22 | 33 | |
2023-10-24 02:00:00.0000000 | U | 1 | 23 | ||
2023-10-24 00:00:00.0000000 | C | 2 | 1 | 2 | |
2023-10-24 00:10:00.0000000 | U | 2 | 4 | ||
2023-10-24 02:00:00.0000000 | D | 2 |
Crie uma exibição materializada para obter a atualização mais recente por coluna, usando a função de agregação arg_max():
executar o de consulta
.create materialized-view ItemHistory on table Events
{
Events
| extend Timestamp_col1 = iff(isnull(col1), datetime(1970-01-01), Timestamp),
Timestamp_col2 = iff(isnull(col2), datetime(1970-01-01), Timestamp),
Timestamp_col3 = iff(isnull(col3), datetime(1970-01-01), Timestamp)
| summarize arg_max(Timestamp_col1, col1), arg_max(Timestamp_col2, col2), arg_max(Timestamp_col3, col3), arg_max(Timestamp, cud) by id
}
de saída
ID | Timestamp_col1 | col1 | Timestamp_col2 | col2 | Timestamp_col3 | col3 | Timestamp | Cud |
---|---|---|---|---|---|---|---|---|
2 | 2023-10-24 00:00:00.0000000 | 1 | 2023-10-24 00:10:00.0000000 | 4 | 1970-01-01 00:00:00.0000000 | 2023-10-24 02:00:00.0000000 | D | |
1 | 2023-10-24 00:00:00.0000000 | 1 | 2023-10-24 02:00:00.0000000 | 23 | 2023-10-24 01:00:00.0000000 | 33 | 2023-10-24 02:00:00.0000000 | U |
Você pode criar uma função armazenada para limpar ainda mais os resultados:
ItemHistory
| project Timestamp, cud, id, col1, col2, col3
| where cud != "D"
| project-away cud
de saída final
A atualização mais recente para cada coluna para 1
de ID, uma vez que a ID 2
foi excluída.
Timestamp | ID | col1 | col2 | col3 |
---|---|---|---|---|
2023-10-24 02:00:00.0000000 | 1 | 1 | 23 | 33 |
Exibições materializadas versus políticas de atualização
As exibições materializadas e as políticas de atualização funcionam de forma diferente e atendem a diferentes casos de uso. Use as seguintes diretrizes para identificar qual deve ser usada:
Exibições materializadas são adequadas para agregações, enquanto as políticas de atualização não são. As políticas de atualização são executadas separadamente para cada lote de ingestão e, portanto, só podem executar agregações no mesmo lote de ingestão. Se você precisar de uma consulta de agregação, sempre use exibições materializadas.
As políticas de atualização são úteis para transformações de dados, enriquecimentos com tabelas de dimensão (geralmente usando operador de pesquisa) e outras manipulações de dados que podem ser executadas no escopo de uma única ingestão.
Políticas de atualização são executadas durante o tempo de ingestão. Os dados não estão disponíveis para consultas na tabela de origem ou na tabela de destino até que todas as políticas de atualização sejam executadas. As exibições materializadas, por outro lado, não fazem parte do pipeline de ingestão. O processo de materialização é executado periodicamente em segundo plano, após a ingestão. Os registros na tabela de origem estão disponíveis para consultas antes de serem materializados.
Políticas de atualização e exibições materializadas podem incorporar junções, mas sua eficácia é limitada a cenários específicos. Especificamente, as junções são adequadas somente quando os dados necessários para a junção de ambos os lados estiverem acessíveis no momento da política de atualização ou do processo de materialização. Se as entidades correspondentes forem ingeridas quando a política de atualização ou a materialização for executada, haverá o risco de ignorar os dados. Veja mais sobre
dimension tables
em parâmetro de consulta de exibição materializada e em tabelas de fatos e dimensões.
Nota
Se você precisar materializar junções que não são adequadas para políticas de atualização e exibições materializadas, você pode gerenciar esse processo por conta própria. Para criar e armazenar os resultados das operações de junção, use ferramentas de orquestração e ingestão de comandos de consulta.
Conteúdo relacionado
- visão geral exibições materializadas
- políticas de exibições materializadas
- limitações de exibições materializadas e problemas conhecidos
- Monitorar exibições materializadas
.create materialized view
.alter materialized-view
{.disable | .enable} materialized-view