Materializált nézetek használati esetei

A materializált nézetek egy aggregációs lekérdezést tehetnek elérhetővé egy forrástáblán vagy más materializált nézetben. Ez a cikk a materializált nézetek gyakori és speciális használati eseteit ismerteti.

Gyakori használati helyzetek

Az alábbiakban néhány gyakori forgatókönyvet ismertetünk, amelyek egy materializált nézet használatával kezelhetők:

  • Adatok frissítése: Frissítse az adatokat úgy, hogy az entitásonkénti utolsó rekordot adja vissza az (aggregációs függvény) használatávalarg_max(). Hozzon létre például egy nézetet, amely csak a mostantól betöltött rekordokat hozza létre:

    .create materialized-view ArgMax on table T
    {
        T | summarize arg_max(Timestamp, *) by User
    }
    
  • Az adatok felbontásának csökkentése Csökkentse az adatok felbontását a nyers adatok rendszeres statisztikáinak kiszámításával. Különböző aggregációs függvények használata idő szerint. Fenntarthat például egy naprakész pillanatképet a különböző felhasználókról naponta:

    .create materialized-view UsersByDay on table T
    {
        T | summarize dcount(User) by bin(Timestamp, 1d)
    }
    
  • Rekordok deduplikálása: Rekordokat deduplikálhat egy táblában az (aggregációs függvény) használatávaltake_any(). Létrehozhat például egy materializált nézetet, amely deduplikálja a forrástáblát az EventId oszlop alapján, 6 órás visszatekintés használatával. A rekordok deduplikációja csak az aktuális rekordok előtt 6 órával betöltött rekordokra vonatkozik.

    .create materialized-view with(lookback=6h) DeduplicatedTable on table T
    {
        T
        | summarize take_any(*) by EventId
    }
    

    Megjegyzés

    A forrástáblát elrejtheti úgy, hogy egy olyan függvényt hoz létre, amelynek neve megegyezik a materializált nézetre hivatkozó táblával. Ez a minta biztosítja, hogy a táblát lekérdező hívók hozzáférjenek a deduplikált materializált nézethez, mivel a függvények felülírják az azonos nevű táblákat. A nézetdefiníció ciklikus hivatkozásainak elkerülése érdekében a table() függvénnyel hivatkozzon a forrástáblára:

    .create materialized-view DeduplicatedTable on table T
    {
        table('T')
        | summarize take_any(*) by EventId
    } 
    

További példákért lásd a .create materialized-view parancsot.

Speciális forgatókönyv

Materializált nézetet használhat az eseményfeldolgozás létrehozásához/frissítéséhez/törléséhez. Ha az egyes oszlopokhoz hiányos vagy elavult adatokat tartalmazó rekordokat kezel, a materializált nézet az egyes oszlopok legújabb frissítéseit biztosíthatja, kivéve a törölt entitásokat.

Vegye figyelembe a következő nevű bemeneti táblát Events:

Bevitel

Időbélyeg Cud ID (Azonosító) 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 T 2

Hozzon létre egy materializált nézetet az oszloponkénti legújabb frissítés lekéréséhez a arg_max() aggregációs függvény használatával:

.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
}

Kimenet

ID (Azonosító) Timestamp_col1 col1 Timestamp_col2 col2 Timestamp_col3 col3 Időbélyeg 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 T
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

Az eredmények további tisztításához létrehozhat egy tárolt függvényt :

ItemHistory
| project Timestamp, cud, id, col1, col2, col3
| where cud != "D"
| project-away cud

Végső kimenet

Az azonosító 1minden oszlopának legújabb frissítése, mivel az azonosító 2 törölve lett.

Időbélyeg ID (Azonosító) col1 col2 col3
2023-10-24 02:00:00.0000000 1 1 23 33

Materializált nézetek és frissítési szabályzatok

A materializált nézetek és a frissítési szabályzatok eltérően működnek, és különböző használati eseteket szolgálnak ki. Az alábbi útmutatás segítségével állapítsa meg, hogy melyiket érdemes használnia:

  • A materializált nézetek aggregációkhoz használhatók, míg a frissítési szabályzatok nem. A frissítési szabályzatok minden betöltési köteghez külön futnak, ezért csak ugyanazon a betöltési kötegen belül hajthatnak végre összesítéseket. Ha összesítő lekérdezésre van szüksége, mindig materializált nézeteket használjon.

  • A frissítési szabályzatok hasznosak az adatátalakításokhoz, a dimenziótáblákkal való bővítésekhez (általában keresési operátor használatával) és más olyan adatkezelésekhez, amelyek egyetlen betöltés hatókörében futtathatók.

  • A frissítési szabályzatok a betöltési idő alatt futnak. A forrástáblában vagy a céltáblában lévő lekérdezésekhez nem érhetők el adatok, amíg az összes frissítési szabályzat le nem fut. A materializált nézetek viszont nem részei a betöltési folyamatnak. A materializálási folyamat rendszeres időközönként fut a háttérben, a betöltés után. A forrástáblában lévő rekordok elérhetők a lekérdezésekhez, mielőtt azok materializálva lennének.

  • A frissítési szabályzatok és a materializált nézetek is tartalmazhatnak illesztéseket, de hatékonyságuk adott forgatókönyvekre korlátozódik. Az illesztések csak akkor alkalmasak, ha az illesztéshez szükséges adatok mindkét oldalról elérhetők a frissítési szabályzat vagy a materializálási folyamat időpontjában. Ha a frissítési szabályzat vagy a materializálás futtatásakor egyező entitások lesznek betöltve, fennáll annak a kockázata, hogy figyelmen kívül hagyja az adatokat. További információ a materializált nézet lekérdezési paraméteréről, valamint a tény- és dimenziótáblákróldimension tables.

Megjegyzés

Ha olyan illesztéseket kell létrehoznia , amelyek nem alkalmasak frissítési szabályzatokra és materializált nézetekre, vezénylési eszközökkel és lekérdezési parancsokból való betöltéssel saját folyamatokat vezényelhet.