Gerealiseerde gebruiksvoorbeelden voor weergaven
Van toepassing op: ✅Microsoft Fabric✅Azure Data Explorer-
gerealiseerde weergaven een aggregatie query beschikbaar maken via een brontabel of een andere gerealiseerde weergave. In dit artikel worden veelvoorkomende en geavanceerde gebruiksvoorbeelden voor gerealiseerde weergaven behandeld.
Veelvoorkomende gebruiksvoorbeelden
Hier volgen veelvoorkomende scenario's die kunnen worden opgelost met behulp van een gerealiseerde weergave:
Gegevens bijwerken: Gegevens bijwerken door de laatste record per entiteit te retourneren met behulp van
arg_max()
(aggregatiefunctie). Maak bijvoorbeeld een weergave waarmee alleen records worden gerealiseerd die vanaf nu zijn opgenomen:.create materialized-view ArgMax on table T { T | summarize arg_max(Timestamp, *) by User }
Verminder de resolutie van gegevens Verminder de resolutie van gegevens door periodieke statistieken over de onbewerkte gegevens te berekenen. Gebruik verschillende aggregatiefuncties per periode. Onderhoud bijvoorbeeld een up-to-datummomentopname van afzonderlijke gebruikers per dag:
.create materialized-view UsersByDay on table T { T | summarize dcount(User) by bin(Timestamp, 1d) }
records ontdubbelen: records in een tabel ontdubbelen met
take_any()
(aggregatiefunctie). Maak bijvoorbeeld een gerealiseerde weergave die de brontabel ontdubbelt op basis van de kolomEventId
, met behulp van een lookback van 6 uur. Records worden ontdubbeld voor alleen records die 6 uur vóór de huidige records zijn opgenomen..create materialized-view with(lookback=6h) DeduplicatedTable on table T { T | summarize take_any(*) by EventId }
Notitie
U kunt de brontabel verbergen door een functie te maken met dezelfde naam als de tabel die verwijst naar de gerealiseerde weergave. Dit patroon zorgt ervoor dat aanroepers die een query uitvoeren op de tabel toegang krijgen tot de ontdubbelde gerealiseerde weergave, omdat functies tabellen met dezelfde naam overschrijven. Als u cyclische verwijzingen in de weergavedefinitie wilt voorkomen, gebruikt u de functie table() om te verwijzen naar de brontabel:
.create materialized-view DeduplicatedTable on table T { table('T') | summarize take_any(*) by EventId }
Zie de opdracht .create materialized-viewvoor meer voorbeelden.
Geavanceerd scenario
U kunt een gerealiseerde weergave gebruiken voor het maken/bijwerken/verwijderen van gebeurtenisverwerking. Voor records met onvolledige of verouderde informatie in elke kolom kan een gerealiseerde weergave de meest recente updates bieden voor elke kolom, met uitzondering van entiteiten die zijn verwijderd.
Bekijk de volgende invoertabel met de naam Events
:
invoer
Tijdstempel | Cud | LEGITIMATIEBEWIJS | col1 | kolom2 | 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 |
Maak een gerealiseerde weergave om de meest recente update per kolom op te halen met behulp van de aggregatiefunctie arg_max():
.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
}
uitvoer
LEGITIMATIEBEWIJS | Timestamp_col1 | col1 | Timestamp_col2 | kolom2 | Timestamp_col3 | col3 | Tijdstempel | 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 |
U kunt een opgeslagen functie maken om de resultaten verder op te schonen:
ItemHistory
| project Timestamp, cud, id, col1, col2, col3
| where cud != "D"
| project-away cud
uiteindelijke uitvoer
De meest recente update voor elke kolom voor id 1
, omdat id 2
is verwijderd.
Tijdstempel | LEGITIMATIEBEWIJS | col1 | kolom2 | col3 |
---|---|---|---|---|
2023-10-24 02:00:00.0000000 | 1 | 1 | 23 | 33 |
Gerealiseerde weergaven versus updatebeleid
Gerealiseerde weergaven en updatebeleid werken anders en dienen verschillende gebruiksvoorbeelden. Gebruik de volgende richtlijnen om te bepalen welke u moet gebruiken:
Gerealiseerde weergaven zijn geschikt voor aggregaties, terwijl updatebeleidsregels niet zijn. Updatebeleid wordt afzonderlijk uitgevoerd voor elke opnamebatch en kan daarom alleen aggregaties uitvoeren binnen dezelfde opnamebatch. Als u een aggregatiequery nodig hebt, gebruikt u altijd gerealiseerde weergaven.
Updatebeleid is handig voor gegevenstransformaties, verrijkingen met dimensietabellen (meestal met behulp van opzoekoperator) en andere gegevensbewerkingen die kunnen worden uitgevoerd in het bereik van één opname.
Updatebeleid wordt uitgevoerd tijdens opnametijd. Gegevens zijn niet beschikbaar voor query's in de brontabel of de doeltabel totdat alle updatebeleidsregels worden uitgevoerd. Gerealiseerde weergaven maken daarentegen geen deel uit van de opnamepijplijn. Het materialisatieproces wordt periodiek uitgevoerd op de achtergrond, na opname. Records in de brontabel zijn beschikbaar voor query's voordat ze worden gerealiseerd.
Zowel updatebeleid als gerealiseerde weergaven kunnen joinsbevatten, maar hun effectiviteit is beperkt tot specifieke scenario's. Joins zijn met name alleen geschikt wanneer de gegevens die nodig zijn voor de join van beide zijden toegankelijk zijn op het moment van het updatebeleid of materialisatieproces. Als overeenkomende entiteiten worden opgenomen wanneer het updatebeleid of de materialisatie wordt uitgevoerd, is er een risico dat gegevens worden overgeslagen. Meer informatie over
dimension tables
in gerealiseerde weergavequeryparameter en in feiten- en dimensietabellen.
Notitie
Als u joins moet materialiseren die niet geschikt zijn voor updatebeleid en gerealiseerde weergaven, kunt u dit proces zelf beheren. Als u de resultaten van joinbewerkingen wilt maken en opslaan, gebruikt u indelingshulpprogramma's en opname uit queryopdrachten.
Verwante inhoud
- Overzicht van gerealiseerde weergaven
- beleid voor gerealiseerde weergaven
- beperkingen voor gerealiseerde weergaven en bekende problemen
- Gerealiseerde weergaven bewaken
.create materialized view
.alter materialized-view
{.disable | .enable} materialized-view