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.
A következőkre vonatkozik:✅ SQL Analytics-végpont a Microsoft Fabricben
Ebben az útmutatóban megtanulhatja, hogyan hozhat létre egy Microsoft Fabric-folyamatot intelligens táblakarbantartás végrehajtására.
Ez a megoldás meghívja a sys.sp_get_table_health_metrics T-SQL tárolt eljárást a Lakehouse SQL Analytics-végponton, kiértékeli az eredményt, és csak akkor fut, OPTIMIZE ha a tábla valóban karbantartást igényel. Ez a „check-then-act” minta megakadályozza a megfelelően működő táblákon felmerülő felesleges számítási költségeket, miközben biztosítja, hogy a leromlott állapotú táblák karbantartása automatikusan történjen.
Miért van szükség karbantartásra?
A Lakehouse-táblák idővel túl sok kis Parquet-fájlt halmozhatnak fel, ami rontja a lekérdezési teljesítményt az SQL Analytics-végponton.
Ahelyett, hogy a táblázat állapotától függetlenül rögzített ütemezésben fut OPTIMIZE , ez a folyamat megalapozott döntést hoz: először ellenőrzi a tábla állapotát, és csak anomália észlelésekor aktiválja az optimalizálást.
Prerequisites
Mielőtt hozzákezdene, győződjön meg arról, hogy:
- Egy Microsoft Fabric-munkaterület, amelyen közreműködői vagy annál magasabb szintű jogosultságokkal rendelkezik.
- Egy Lakehouse a munkaterületen, amely legalább egy figyelni kívánt Delta-táblát tartalmaz. Ez az oktatóanyag egy
SalesDataLakehousenevű Lakehouse-t használja. - Az Fabric adatfolyamok ismerete.
- A Fabric-jegyzetfüzetek ismerete.
Megoldásstruktúra
A befejezett folyamat a következő struktúrával rendelkezik:
-
Szkripttevékenység: A céltáblán hajtja végre a(z)
sp_get_table_health_metricselemet, és a tábla állapotára vonatkozó mérőszámokat strukturált kimenet formájában adja vissza. -
If Condition tevékenység: Közvetlenül a Script kimenetéből olvassa ki a
PotentialAnomalyTypeértékét, és ellenőrzi, hogy nagyobb-e nullánál. További információ aPotentialAnomalyTypelehetséges anomáliák típuskódjairól. -
Jegyzetfüzet-tevékenység (a(z) True ágon belül): A táblán futtatja a(z)
OPTIMIZEelemet egy Spark-jegyzetfüzetből.
Ennek az oktatóanyagnak a végére lesz egy jegyzetfüzete, amely a folyamatból kap paramétereket, és indításkor optimalizál egy táblát.
1. lépés: Az optimalizálási jegyzetfüzet létrehozása
A jegyzetfüzet paraméterként fogadja el a cél Lakehouse-t, sémát és táblanevet a folyamatból, majd a Spark SQL használatával hajtja OPTIMIZE végre.
- A Fabric munkaterületen válassza az + Új elem>jegyzetfüzete lehetőséget.
- Nevezze el a jegyzetfüzet Optimize-Table nevét.
- A Hely területen válassza ki azt a Lakehouse-t, ahol az ellenőrizni kívánt táblákat tárolja a rendszer. Ez a gyakorlat egy
SalesDataLakehousenevű Lakehouse-t használ. - Válassza a Create gombot.
A paramétercella hozzáadása
Az első cella határozza meg azokat a változókat, amelyeket a folyamat futásidőben felülbírál.
Az első cellába írja be a következő paramétereket. Az értékek nem fontosak, és a folyamat futásidőben felülbírálja őket.
# Parameters lakehouse_name = "<LakehouseName>" schema_name = "<SchemaName>" table_name = "<TableName>"Important
A paraméterezés működése Fabric jegyzetfüzetekben: Futásidőben Fabric közvetlenül azután injektál egy új cellát, hogy a paramétercella újra hozzárendeli ezeket a változókat a folyamat által átadott értékekkel. Az itt megadott értékek csak inicializálják a változókat, és javítják az olvashatóságot.
Válassza ki a cellamenüt (...) >A paramétercella váltása a cella paramétercelláként való megjelöléséhez.
Az OPTIMIZE cella hozzáadása
A OPTIMIZE parancs egy Spark SQL-parancs, nem T-SQL-parancs. Spark-környezetekben, például jegyzetfüzetekben, Spark-feladatdefiníciókban vagy a Lakehouse Karbantartási felületén kell futtatnia. Az SQL Analytics-végpont és a Warehouse SQL-lekérdezésszerkesztő nem támogatja közvetlenül ezt a parancsot.
A második cellába írja be a következőt:
full_name = f"{lakehouse_name}.{schema_name}.{table_name}" print(f"Optimizing {full_name} ...") result = spark.sql(f"OPTIMIZE {full_name}") result.show(truncate=False)Szükség szerint vegye fel a Markdown-cellákat a jegyzetfüzet más felhasználók számára történő megfelelő dokumentálásához. A véglegesített jegyzetfüzetnek az alábbihoz hasonlóan kell kinéznie:
Note
Ez a példa egy olyan Lakehouse-t tekint, amelynek sémái engedélyezve vannak. Ha nem használ Lakehouse-sémákat, módosítsa ennek megfelelően a full_name háromrészes nevet.
2. lépés: A folyamat létrehozása
A Fabric-munkaterületen válassza az + Új elem>Folyamat lehetőséget.
Nevezze el a folyamat ellenőrző és optimalizáló táblájának nevét.
Válassza ki a folyamatvászon hátterét, majd nyissa meg a Paraméterek lapot. Adjon hozzá három paramétert:
Name Típus Alapértelmezett érték lakehouse_nameString SalesDataLakehouseschema_nameString dbotable_nameString FactSales
3. lépés: A szkripttevékenység hozzáadása
A szkripttevékenység az SQL Analytics-végponton fut sys.sp_get_table_health_metrics , és rögzíti az eredményt.
Important
Használja a szkripttevékenységet , nem a Tárolt eljárás tevékenységet. Csak a szkripttevékenység teszi elérhetővé az eredményhalmazt strukturált JSON-kimenetként, amelyet az alsóbb rétegbeli tevékenységek elemezhetnek.
- A Tevékenységek lapon válassza a Szkript lehetőséget a vászonra való felvételhez.
- Nevezze el Táblák állapotának ellenőrzése-nek.
- A Beállítások lapon:
Kapcsolat: Válassza ki a Lakehouse SQL Analytics-végpontját. Ha nem szerepel a listában, válassza a legördülő lista alján található Tallózás az összes között lehetőséget, majd keresse meg a Lakehouse SQL-analitikai végpontját.
Szkript típusa: Válassza a Lekérdezés lehetőséget.
Szkript: Válassza a Dinamikus tartalom hozzáadása lehetőséget, és írja be a következő kifejezést:
@concat('EXEC sys.sp_get_table_health_metrics ''', pipeline().parameters.schema_name, '.', pipeline().parameters.table_name, '''')
Ez a kifejezés létrehozza azt az SQL-parancsot, amely végrehajtja a tárolt eljárást a céltáblán, például: EXEC sys.sp_get_table_health_metrics 'dbo.FactSales'.
A szkript kimenetének ellenőrzése
Futtassa egyszer a folyamatot, és vizsgálja meg a szkripttevékenység kimenetét. A következőhöz hasonló JSON-objektum jelenik meg:
{
"resultSetCount": 1,
"resultSets": [
{
"rowCount": 1,
"rows": [
{
"PotentialAnomalyType": 3,
"PotentialAnomalyDescription": "Too many small files...",
"FileCount": 2688,
"...": "..."
}
]
}
]
}
Important
A tényleges eredmény a tábla állapotától függően változhat. A lényeg az, hogy az sys.sp_get_table_health_metrics által elérhetővé tett oszlopokat adja vissza.
4. lépés: Az If Condition tevékenység hozzáadása
Az If Condition tevékenység közvetlenül a PotentialAnomalyType kimenetéből olvas be, és az eredmény alapján dönt. Kövesse az alábbi lépéseket:
A Tevékenységek lapon válassza a Ha feltétel lehetőséget, ha tevékenységet szeretne hozzáadni a vászonhoz.
Nevezze el Anomália keresése-nek.
Rajzoljon egy Siker (zöld) nyilat a Tábla állapotának ellenőrzése és a Anomália ellenőrzése közé.
A Ha feltétel tevékenység Tevékenységek lapján állítsa a Kifejezés értékét a következőre:
@greater(int(activity('Check Table Health').output.resultSets[0].rows[0]['PotentialAnomalyType']), 0)
Ez a kifejezés kiolvassa az sys.sp_get_table_health_metrics által visszaadott első sort, a(z) PotentialAnomalyType értékét egész számmá alakítja, és értéke true, ha az érték nullánál nagyobb, ami a céltáblában észlelt rendellenességet jelez.
5. lépés: A jegyzetfüzet-tevékenység hozzáadása (igaz ág)
Ha a Ha feltétel tevékenység van kiválasztva, válassza a Szerkesztés (ceruza ikon) lehetőséget az Igaz mellett. A vászon a True ághoz tartozó alvászonra vált.
Húzza a Notebook tevékenységet a True részvászonra.
Nevezze el OPTIMIZE-nak.
A Beállítások lapon:
Jegyzetfüzet: Válassza ki az 1. lépésben létrehozott Optimize-Table jegyzetfüzetet.
Bontsa ki az Alapparamétereket, majd adjon hozzá három sort:
Name Típus Value lakehouse_nameString @pipeline().parameters.lakehouse_nameschema_nameString @pipeline().parameters.schema_nametable_nameString @pipeline().parameters.table_name
A három névoszlop értékének pontosan meg kell egyeznie a jegyzetfüzet paramétercellájában lévő változónevekkel.
Note
A hamis tevékenységeket üresen hagyhatja. Az If Condition tevékenység egy üres False ágat úgy kezel, hogy nem hajt végre műveletet, és a folyamatot sikeresként jelenti.
A befejezett folyamatnak a következőképpen kell kinéznie:
6. lépés: Ellenőrzés és futtatás
A konfigurációs hibák ellenőrzéséhez válassza az Ellenőrzés lehetőséget a folyamat eszköztárán.
Válassza a Futtatás lehetőséget a folyamat manuális végrehajtásához.
Figyelje a futást, és erősítse meg:
-
Tábla állapotának ellenőrzése: ellenőrizze a tevékenység kimenetét a futtatáskor. A tárolt eljárás kimenetének
sys.sp_get_table_health_metricsJSON formátumban kell megjelennie. -
Ellenőrizze az anomáliát: helyesen kiértékeli a szkript kimenetéből való közvetlen olvasással
PotentialAnomalyType. -
Futtassa az OPTIMIZE parancsot (csak akkor, ha
PotentialAnomalyType > 0): ha az Anomália ellenőrzése tevékenység true értéket ad vissza, tekintse át a Run OPTIMIZE tevékenység bemenetét annak ellenőrzéséhez, hogy a megfelelő paramétereket (Lakehouse-név, séma és táblanév) használja-e, és ellenőrizze a kimenetet aOPTIMIZEművelet üzeneteinek áttekintéséhez.
-
Tábla állapotának ellenőrzése: ellenőrizze a tevékenység kimenetét a futtatáskor. A tárolt eljárás kimenetének
Erőforrások tisztítása
Ha csak ehhez az oktatóanyaghoz hozott létre erőforrásokat, és már nincs rájuk szüksége, törölje a következő elemeket a munkaterületről:
- A Táblaellenőrzési és -optimalizálási folyamat.
- Az Optimize-Table jegyzetfüzet.