Delen via


Gerealiseerde gebruiksvoorbeelden voor weergaven

Van toepassing op: ✅Microsoft FabricAzure 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 kolom EventId, 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.