Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Szolgáltatások váltása a Verzió legördülő listával. További információ a navigációról.
A következőre vonatkozik: ✅ Microsoft Fabric ✅ Azure Data Explorer
A frissítési szabályzatok olyan automatizálási mechanizmusok, amelyek akkor aktiválódnak, amikor új adatokat írnak egy táblába. Kiküszöbölik a speciális vezénylés szükségességét egy lekérdezés futtatásával, amely átalakítja a betöltött adatokat, és egy céltáblába menti az eredményt. Egyetlen táblán több frissítési szabályzat is definiálható, így különböző átalakításokat végezhet, és egyszerre több táblába mentheti az adatokat. A céltáblák eltérő sémával, adatmegőrzési szabályzattal és más szabályzatokkal rendelkezhetnek a forrástáblától.
A nagy sebességű nyomkövetési forrástáblák például szabadszöveges oszlopként formázott adatokat tartalmazhatnak. A céltábla tartalmazhat meghatározott nyomkövetési vonalakat, amelyek jól strukturált sémát hoznak létre a forrástábla szabadszöveges adatainak átalakításából a elemzési operátorral. További információkért gyakori forgatókönyveket.
Az alábbi ábra egy frissítési szabályzat magas szintű nézetét ábrázolja. Két frissítési szabályzatot jelenít meg, amelyek akkor aktiválódnak, amikor adatokat adnak hozzá a második forrástáblához. Az aktiválásuk után a rendszer átalakított adatokat ad hozzá a két céltáblához.
A frissítési szabályzatokra ugyanazok a korlátozások és ajánlott eljárások vonatkoznak, mint a normál betöltésekre. A szabályzat a fürt méretének megfelelően méretezhető fel, és hatékonyabb a tömeges betöltés kezelésekor.
A frissítési szabályzatokra ugyanazok a korlátozások és ajánlott eljárások vonatkoznak, mint a normál betöltésekre. A szabályzat az Eventhouse méretének megfelelően skálázható fel, és hatékonyabb a tömeges betöltés kezelésekor.
Jegyzet
- A forrás- és céltáblának ugyanabban az adatbázisban kell lennie.
- A frissítési házirendfüggvény sémájának és a céltábla sémájának meg kell egyeznie az oszloptípusokban és a sorrendben.
- A frissítési szabályzat függvény hivatkozhat más adatbázisok tábláira. Ehhez a frissítési szabályzatot egy
ManagedIdentitytulajdonsággal kell definiálni, a felügyelt identitásnak pedigviewerszerepkörrel kell rendelkeznie a hivatkozott adatbázisokban. A formázott adatok betöltése javítja a teljesítményt, és a CSV-t előnyben részesíti a jól definiált formátum miatt. Előfordulhat azonban, hogy nincs szabályozva az adatok formátuma, vagy például úgy szeretné bővíteni a betöltött adatokat, hogy a rekordokat egy statikus dimenziótáblával összekapcsolja az adatbázisban.
Jegyzet
- A forrás- és céltáblának ugyanabban az adatbázisban kell lennie.
- A frissítési házirendfüggvény sémájának és a céltábla sémájának meg kell egyeznie az oszloptípusokban és a sorrendben.
Szabályzat lekérdezésének frissítése
Ha a frissítési szabályzat a céltáblán van definiálva, több lekérdezés is futtatható egy forrástáblába betöltött adatokon. Ha több frissítési szabályzat is létezik, a végrehajtás sorrendje nem feltétlenül ismert.
Lekérdezési korlátozások
A szabályzattal kapcsolatos lekérdezés képes meghívni a tárolt függvényeket, de:
- Nem tud fürtök közötti lekérdezéseket végrehajtani.
- Nem fér hozzá külső adatokhoz vagy külső táblákhoz a következő kivétellel:
- A lekérdezés egy gyorsított külső táblára hivatkozhat a
external_table()függvény használatával, feltéve, hogy:- A külső tábla egy lekérdezésgyorsítási szabályzattal rendelkezik,
Hotamely az összes adatot lefedő időszakkal rendelkezik (jelenlegHot>= 100 év). - A frissítési szabályzat tulajdonsággal
ManagedIdentityvan konfigurálva, ha a külső tábla megszemélyesítési hitelesítést használ.
- A külső tábla egy lekérdezésgyorsítási szabályzattal rendelkezik,
- A lekérdezés egy gyorsított külső táblára hivatkozhat a
- Nem tud feliratokat készíteni (beépülő modullal).
A lekérdezés nem rendelkezik olvasási hozzáféréssel azokhoz a táblákhoz, amelyeken engedélyezve van a RestrictedViewAccess szabályzat.
A streambetöltés frissítési szabályzatának korlátozásait streamelési korlátozásokcímű témakörben talál.
A frissítési szabályzat lekérdezésének nem szabad olyan materializált nézetre hivatkoznia, amelynek lekérdezése a frissítési szabályzat céltábláját használja. Ha így tesz, az váratlan eredményeket eredményezhet.
A szabályzattal kapcsolatos lekérdezés képes meghívni a tárolt függvényeket, de:
- Nem tud eseményházközi lekérdezéseket végrehajtani.
- Nem fér hozzá külső adatokhoz vagy külső táblákhoz a következő kivétellel:
- A lekérdezés egy gyorsított külső táblára hivatkozhat a
external_table()függvény használatával, feltéve, hogy:- A külső tábla egy lekérdezésgyorsítási szabályzattal rendelkezik,
Hotamely az összes adatot lefedő időszakkal rendelkezik (jelenlegHot>= 100 év).
- A külső tábla egy lekérdezésgyorsítási szabályzattal rendelkezik,
- A lekérdezés egy gyorsított külső táblára hivatkozhat a
- Nem tud feliratokat készíteni (beépülő modullal).
A lekérdezés nem rendelkezik olvasási hozzáféréssel azokhoz a táblákhoz, amelyeken engedélyezve van a RestrictedViewAccess szabályzat.
Alapértelmezés szerint a Streambetöltési szabályzat engedélyezve van az Eventhouse összes táblájában. Ha a
joinoperátorral szeretne függvényeket használni egy frissítési szabályzatban, a streamelési betöltési szabályzatot le kell tiltani. Tiltsa le a.altertableTableNamepolicystreamingingestionPolicyObject parancsot.Az operátort
jointartalmazó kaszkádolt frissítési szabályzatok esetében le kell tiltania a streambetöltést az összes felsőbb rétegbeli táblában. Fontolja meg például a kaszkádolt frissítési szabályzatokat, amelyekben a Table1 frissíti a Table2, a Table2 a Table3 és a Table3 frissítéseket. Ha a Table4 frissítési szabályzata tartalmaz csatlakozást, le kell tiltania a streambetöltést a Table1, a Table2 és a Table3 táblában.A frissítési szabályzat lekérdezésének nem szabad olyan materializált nézetre hivatkoznia, amelynek lekérdezése a frissítési szabályzat céltábláját használja. Ha így tesz, az váratlan eredményeket eredményezhet.
Figyelmeztetés
A helytelen lekérdezések megakadályozhatják az adatok forrástáblába való betöltését. Fontos megjegyezni, hogy a korlátozások, valamint a lekérdezési eredmények és a forrás- és céltáblák sémája közötti kompatibilitás miatt helytelen lekérdezések akadályozhatják meg az adatok forrástáblába való betöltését.
Ezek a korlátozások a szabályzat létrehozása és végrehajtása során lesznek érvényesítve, de nem akkor, ha a lekérdezés által esetleg hivatkozott tetszőleges tárolt függvények frissülnek. Ezért fontos, hogy minden módosítást körültekintően hajtson végre annak biztosítása érdekében, hogy a frissítési szabályzat érintetlen maradjon.
Amikor a Source táblára hivatkozik a szabályzat Query részében, vagy a Query rész által hivatkozott függvényekben:
Ne használja a tábla minősített nevét. Ehelyett használja a
TableName.Ne használjon
database("<DatabaseName>").TableNamevagycluster("<ClusterName>").database("<DatabaseName>").TableName.
Ne használja a tábla minősített nevét. Ehelyett használja a
TableName.Ne használjon
database("<DatabaseName>").TableNamevagycluster("<EventhouseName>").database("<DatabaseName>").TableName.
A frissítési szabályzat objektuma
A táblákhoz nulla vagy több frissítési szabályzatobjektum társítható. Minden ilyen objektum JSON tulajdonságcsomagként jelenik meg, a következő tulajdonságokkal.
| Ingatlan | Típus | Leírás |
|---|---|---|
| IsEnabled | bool |
Állapotok, ha a frissítési szabályzat igaz – engedélyezve vagy hamis – le van tiltva |
| Forrás | string |
A frissítési szabályzat meghívását kiváltó tábla neve. |
| SourceIsWildCard | bool |
Ha igaz, a Source tulajdonság lehet helyettesítő karakterminta. Lásd: Szabályzat frissítése a forrástábla helyettesítő karaktermintájával |
| Lekérdezés | string |
A frissítés adatainak előállítására szolgáló lekérdezés. |
| IsTransactional | bool |
Azt jelzi, hogy a frissítési szabályzat tranzakciós-e vagy sem, az alapértelmezett érték hamis. Ha a szabályzat tranzakciós, és a frissítési szabályzat meghiúsul, a forrástábla nem frissül. |
| PropagálásIngestionProperties | bool |
Azt jelzi, hogy a forrástáblába való betöltés során megadott tulajdonságok, például hatókörcímkék és létrehozási idő, érvényesek-e a céltáblára. |
| ManagedIdentity | string |
A felügyelt identitás, amelynek nevében a frissítési szabályzat fut. A felügyelt identitás lehet objektumazonosító vagy system fenntartott szó. A frissítési szabályzatot felügyelt identitással kell konfigurálni, ha a lekérdezés más adatbázisok tábláira, az engedélyezett sorszintű biztonsági szabályzattal rendelkező táblákra vagy a megszemélyesítési hitelesítést használó gyorsított külső táblákra hivatkozik. További információ: Felügyelt identitás használata frissítési szabályzat futtatásához. |
| Ingatlan | Típus | Leírás |
|---|---|---|
| IsEnabled | bool |
Állapotok, ha a frissítési szabályzat igaz – engedélyezve vagy hamis – le van tiltva |
| Forrás | string |
A frissítési szabályzat meghívását kiváltó tábla neve |
| SourceIsWildCard | bool |
Ha igaz, a Source tulajdonság lehet helyettesítő karakterminta. |
| Lekérdezés | string |
A frissítés adatainak előállítására szolgáló lekérdezés |
| IsTransactional | bool |
Azt jelzi, hogy a frissítési szabályzat tranzakciós-e vagy sem, az alapértelmezett érték hamis. Ha a szabályzat tranzakciós, és a frissítési szabályzat meghiúsul, a forrástábla nem frissül. |
| PropagálásIngestionProperties | bool |
Azt jelzi, hogy a forrástáblába való betöltés során megadott tulajdonságok, például hatókörcímkék és létrehozási idő, érvényesek-e a céltáblára. |
| OwnerPrincipalDetails | object |
Rendszer által kitöltött, írásvédett tulajdonság. A frissítési szabályzatot létrehozó vagy módosító felhasználó fő adatait tartalmazza, amely akkor használható engedélyezésre, ha a frissítési szabályzat lekérdezése külső táblákra hivatkozik. Ezt a tulajdonságot a rendszer automatikusan beállítja, és manuálisan nem módosítható. |
Jegyzet
Éles rendszerekben állítsa be a IsTransactional:igaz, hogy a céltábla ne veszítse el az adatokat átmeneti hibák esetén.
Jegyzet
A kaszkádolt frissítések engedélyezettek, például az A táblából a B táblából a C táblába. Ha azonban a frissítési szabályzatok körkörös módon vannak definiálva, a rendszer futásidőben észleli, és a frissítési lánc megszakad. Az adatok csak egyszer kerülnek be a lánc egyes tábláiba.
Felügyeleti parancsok
A szabályzatkezelési parancsok frissítéséhez a következők tartoznak:
-
.show table *TableName* policy updateegy tábla aktuális frissítési szabályzatát jeleníti meg. -
.alter table *TableName* policy updateegy tábla aktuális frissítési szabályzatát határozza meg. -
.alter-merge table *TableName* policy updatehozzáfűzi a definíciókat egy tábla aktuális frissítési szabályzatához. -
.delete table *TableName* policy updatetörli egy tábla aktuális frissítési szabályzatát.
A frissítési szabályzat a betöltés után indul el
A frissítési szabályzatok akkor lépnek érvénybe, amikor az adatokat betöltik vagy áthelyezik egy forrástáblába, vagy a mértékek egy forrástáblában jönnek létre. Ezek a műveletek az alábbi parancsok bármelyikével elvégezhetők:
- .ingest (lekéréses)
- .ingest (beágyazott)
- .set | .append | .set-or-append | .set-or-append | .set-or-replace
- .move extents
-
.replace extents
- A
PropagateIngestionPropertiesparancs csak a betöltési műveletekben lép érvénybe. Ha a frissítési szabályzat egy.move extentsvagy.replace extentsparancs részeként aktiválódik, ennek a beállításnak nincs hatása.
- A
Figyelmeztetés
Amikor a frissítési szabályzatot egy .set-or-replace parancs részeként hívja meg, a rendszer alapértelmezés szerint a származtatott táblákban lévő adatokat ugyanúgy cseréli le, mint a forrástáblában.
A replace parancs meghívása esetén az adatok elveszhetnek a frissítési szabályzattal rendelkező összes táblában.
Fontolja meg inkább a .set-or-append használatát.
Szabályzat frissítése a forrástábla helyettesítő karaktermintájával
A frissítési szabályzat támogatja a több forrástáblából való betöltést, amelyek ugyanazt a mintát használják, miközben ugyanazt a lekérdezést használják, mint a frissítési szabályzat lekérdezése. Ez akkor hasznos, ha több forrástáblával rendelkezik, amelyek általában ugyanazt a sémát (vagy egy közös sémát használó oszlopok egy részhalmazát) használják, és a betöltést egyetlen céltáblába szeretné aktiválni, amikor valamelyik táblát betölti. Ebben az esetben ahelyett, hogy több frissítési szabályzatot határoznál meg, mindegyik egyetlen forrástáblához, egyetlen frissítési szabályzatot is megadhat helyettesítő karakterrel Source. A Query frissítési szabályzatnak meg kell felelnie a mintának megfelelő összes forrástáblának.
A forrástáblára a frissítési szabályzat lekérdezésében való hivatkozáshoz használhat egy speciális, névvel ellátott $source_tableszimbólumot. Lásd a példa a helyettesítő kártya frissítési szabályzatát.
Adatok eltávolítása a forrástáblából
Miután betöltötte az adatokat a céltáblába, tetszés szerint eltávolíthatja azokat a forrástáblából. Állítson be 0sec (vagy 00:00:00) helyreállítható törlési időtartamot a forrástábla adatmegőrzési szabályzatában, a frissítési szabályzatot pedig tranzakciósként. A következő feltételek érvényesek:
- A forrásadatok nem kérdezhetők le a forrástáblából
- A forrásadatok nem maradnak tartós tárolóban a betöltési művelet részeként
- A működési teljesítmény javul. A betöltést követő erőforrások a forrástáblában
mértékben csökkentik a háttér-ápolási műveleteket.
Jegyzet
Ha a forrástábla 0sec (vagy 00:00:00) helyreállítható törlési időszaktal rendelkezik, a táblára hivatkozó frissítési szabályzatnak tranzakciósnak kell lennie.
A teljesítményre gyakorolt hatás
A frissítési szabályzatok hatással lehetnek a teljesítményre, az adatbetöltés pedig megszorozza a céltáblák számát. Fontos, hogy optimalizálja a szabályzattal kapcsolatos lekérdezést. A frissítési szabályzat teljesítményre gyakorolt hatását úgy tesztelheti, hogy a szabályzatot a már meglévő mértékekre invesztálásával, a szabályzat létrehozása vagy módosítása előtt, vagy a lekérdezéshez használt függvényen használja.
Erőforrás-használat kiértékelése
A .show querieshasználatával értékelje ki az erőforrás-használatot (CPU, memória stb.) a következő paraméterekkel:
- Állítsa be a
Sourcetulajdonságot, a forrástábla nevétMySourceTable - A
Querytulajdonság beállítása egyMyFunction()nevű függvény meghívására
// '_extentId' is the ID of a recently created extent, that likely hasn't been merged yet.
let _extentId = toscalar(
MySourceTable
| project ExtentId = extent_id(), IngestionTime = ingestion_time()
| where IngestionTime > ago(10m)
| top 1 by IngestionTime desc
| project ExtentId
);
// This scopes the source table to the single recent extent.
let MySourceTable =
MySourceTable
| where ingestion_time() > ago(10m) and extent_id() == _extentId;
// This invokes the function in the update policy (that internally references `MySourceTable`).
MyFunction
Tranzakciós beállítások
A frissítési szabályzat IsTransactional beállítás határozza meg, hogy a frissítési szabályzat tranzakciós-e, és hatással lehet-e a szabályzatfrissítés viselkedésére az alábbiak szerint:
-
IsTransactional:false: Ha az érték az alapértelmezett értékre van állítva, hamis, a frissítési szabályzat nem garantálja a forrás- és a céltábla adatai közötti konzisztenciát. Ha egy frissítési szabályzat meghiúsul, az adatok csak a forrástáblába kerülnek, a céltáblába nem. Ebben a forgatókönyvben a betöltési művelet sikeres. : Ha az érték igaz van beállítva, a beállítás garantálja a forrás- és a céltáblák adatai közötti konzisztenciát. Ha egy frissítési szabályzat meghiúsul, az adatok nem lesznek betöltve a forrás- vagy céltáblába. Ebben a forgatókönyvben a betöltési művelet sikertelen.
Hibák kezelése
Ha a szabályzatfrissítések sikertelenek, a rendszer másképpen kezeli őket attól függően, hogy a IsTransactional beállítás true vagy false. A frissítési szabályzat hibáinak gyakori okai a következők:
- A lekérdezés kimeneti sémája és a céltábla közötti eltérés.
- Bármilyen lekérdezési hiba.
A szabályzatfrissítési hibákat a .show ingestion failures parancs a következő paranccsal tekintheti meg: Minden más esetben manuálisan is próbálkozhat a betöltéssel.
.show ingestion failures
| where FailedOn > ago(1hr) and OriginatesFromUpdatePolicy == true
Példa kinyerésre, átalakításra, betöltésre
A frissítési szabályzat beállításaival kinyerheti, átalakíthatja, betöltheti (ETL).
Ebben a példában egy egyszerű függvénnyel rendelkező frissítési szabályzatot használjon az ETL végrehajtásához. Először két táblát hozunk létre:
- A forrástábla – Egyetlen sztring típusú oszlopot tartalmaz, amelybe az adatok betöltése történik.
- A céltábla – A kívánt sémát tartalmazza. A frissítési szabályzat ezen a táblán van definiálva.
Hozzuk létre a forrástáblát:
.create table MySourceTable (OriginalRecord:string)Ezután hozza létre a céltáblát:
.create table MyTargetTable (Timestamp:datetime, ThreadId:int, ProcessId:int, TimeSinceStartup:timespan, Message:string)Ezután hozzon létre egy függvényt az adatok kinyeréséhez:
.create function with (docstring = 'Parses raw records into strongly-typed columns', folder = 'UpdatePolicyFunctions') ExtractMyLogs() { MySourceTable | parse OriginalRecord with "[" Timestamp:datetime "] [ThreadId:" ThreadId:int "] [ProcessId:" ProcessId:int "] TimeSinceStartup: " TimeSinceStartup:timespan " Message: " Message:string | project-away OriginalRecord }Most állítsa be a frissítési szabályzatot a létrehozott függvény meghívására:
.alter table MyTargetTable policy update @'[{ "IsEnabled": true, "Source": "MySourceTable", "Query": "ExtractMyLogs()", "IsTransactional": true, "PropagateIngestionProperties": false}]'Ha ki szeretné üríteni a forrástáblát az adatok céltáblába való betöltése után, adja meg a forrástábla megőrzési szabályzatát, hogy az
SoftDeletePeriod0s legyen..alter-merge table MySourceTable policy retention softdelete = 0s
Példa a helyettesítő kártya frissítési szabályzatára
Az alábbi példa egy frissítési szabályzatot hoz létre egyetlen bejegyzéssel a táblában TargetTable. A szabályzat az összes olyan táblára hivatkozik, amely megfelel a mintának SourceTable* .
A mintának megfelelő táblákba (a helyi adatbázisban) történő betöltések aktiválják a frissítési szabályzatot, és a frissítési szabályzat lekérdezése alapján betöltik az adatokat TargetTable.
Hozzon létre két forrástáblát:
.create table SourceTable1(Id:long, Value:string).create table SourceTable2(Id:long, Value:string)Hozza létre a céltáblát:
.create table TargetTable(Id:long, Value:string, Source:string)Hozzon létre egy függvényt, amely a
Queryfrissítési szabályzatot fogja szolgálni. A függvény a$source_tableszimbólum használatával hivatkozik aSourcefrissítési szabályzatra. Az ellenőrzés kihagyására használhatóskipValidation=truea létrehozási függvény során, mivel$source_tableez csak a frissítési szabályzat végrehajtása során ismert. A függvény érvényesítése a következő lépésben történik a frissítési szabályzat módosításakor..create function with(skipValidation=true) IngestToTarget() { $source_table | parse Value with "I'm from table " Source | project Id, Value, Source }Hozza létre a frissítési szabályzatot a következőn
TargetTable: . A szabályzat az összes olyan táblára hivatkozik, amely megfelel a mintánakSourceTable*..alter table TargetTable policy update ```[{ "IsEnabled": true, "Source": "SourceTable*", "SourceIsWildCard" : true, "Query": "IngestToTarget()", "IsTransactional": true, "PropagateIngestionProperties": true }]```Betöltés forrástáblákba. Mindkét betöltés aktiválja a frissítési szabályzatot:
.set-or-append SourceTable1 <| datatable (Id:long, Value:string) [ 1, "I'm from table SourceTable1", 2, "I'm from table SourceTable1" ].set-or-append SourceTable2 <| datatable (Id:long, Value:string) [ 3, "I'm from table SourceTable2", 4, "I'm from table SourceTable2" ]Lekérdezés
TargetTable:TargetTableAzonosító Érték Forrás 1 A SourceTable1 táblából származom SourceTable1 2 A SourceTable1 táblából származom SourceTable1 3 A SourceTable2 táblából származom SourceTable2 4 A SourceTable2 táblából származom SourceTable2
Kapcsolódó tartalom
- táblafrissítési szabályzatok használatának gyakori forgatókönyvei
- oktatóanyag: Adatok átirányítása táblafrissítési szabályzatokkal