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ával
arg_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ával
take_any()
. Létrehozhat például egy materializált nézetet, amely deduplikálja a forrástáblát azEventId
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ó 1
minden 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ól
dimension 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.
Kapcsolódó tartalom
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: