Növekményes frissítés a Dataflow Gen2-ben (előzetes verzió)
Ebben a cikkben növekményes adatfrissítést vezetünk be a Dataflow Gen2-ben a Microsoft Fabric Data Factoryhez. Amikor adatfolyamokat használ az adatok betöltéséhez és átalakításához, vannak olyan helyzetek, amikor kifejezetten csak új vagy frissített adatokat kell frissítenie – különösen az adatok növekedésének növekedésében. A növekményes frissítési funkció úgy oldja meg ezt az igényt, hogy lehetővé teszi a frissítési idő csökkentését, a megbízhatóság növelését a hosszan futó műveletek elkerülése és az erőforrás-használat minimalizálása révén.
Ha növekményes frissítést szeretne használni a Dataflow Gen2-ben, meg kell felelnie a következő előfeltételeknek:
- Hálókapacitással kell rendelkeznie.
- Az adatforrás támogatja az összecsukást (ajánlott), és olyan Date/DateTime oszlopot kell tartalmaznia, amely az adatok szűréséhez használható.
- Olyan adatcélt kell megadnia, amely támogatja a növekményes frissítést. További információ: Céltámogatás.
- Az első lépések előtt győződjön meg arról, hogy áttekintette a növekményes frissítés korlátait. További információ: Korlátozások.
A növekményes frissítéshez a következő adatcélok támogatottak:
- Hálóraktár
- Azure SQL Database
- Azure Synapse Analytics
Más célhelyek, például a Lakehouse növekményes frissítéssel kombinálva is használhatók egy második lekérdezéssel, amely a szakaszos adatokra hivatkozik az adat célhelyének frissítéséhez. Így továbbra is növekményes frissítés használatával csökkentheti a forrásrendszerből feldolgozandó és lekérendő adatok mennyiségét. De teljes frissítést kell végeznie a szakaszos adatokról az adat célhelyére.
Hozzon létre egy új Adatfolyam Gen2-t, vagy nyisson meg egy meglévő Adatfolyam Gen2-t.
Az adatfolyam-szerkesztőben hozzon létre egy új lekérdezést, amely beolvassa a frissíteni kívánt adatokat növekményesen.
Ellenőrizze az adatok előnézetét, és győződjön meg arról, hogy a lekérdezés egy DateTime, Date vagy DateTimeZone oszlopot tartalmazó adatokat ad vissza, amelyekkel szűrheti az adatokat.
Győződjön meg arról, hogy a lekérdezés teljesen összecsukható, ami azt jelenti, hogy a lekérdezés teljes mértékben le lesz küldve a forrásrendszerbe. Ha a lekérdezés nem hajtja össze teljesen, módosítania kell a lekérdezést, hogy teljesen összecsukható legyen. A lekérdezésszerkesztőben található lekérdezési lépések ellenőrzésével biztosíthatja, hogy a lekérdezés teljes mértékben összecsukható legyen.
Kattintson a jobb gombbal a lekérdezésre, és válassza a Növekményes frissítés lehetőséget.
Adja meg a növekményes frissítéshez szükséges beállításokat.
- Válasszon egy DateTime oszlopot, amely alapján szűrni szeretne.
- Adatok kinyerése a múltból.
- Gyűjtő mérete.
- Csak akkor nyer ki új adatokat, ha az oszlop maximális értéke megváltozik.
Szükség esetén konfigurálja a speciális beállításokat.
- A növekményes frissítési lekérdezés teljes összecsukásához szükséges.
A beállítások mentéséhez kattintson az OK gombra.
Ha szeretné, beállíthat egy adatcélt a lekérdezéshez. Győződjön meg arról, hogy ezt a beállítást az első növekményes frissítés előtt hajtja végre, mert ellenkező esetben az adatcél csak a növekményesen módosított adatokat tartalmazza az utolsó frissítés óta.
Tegye közzé az Adatfolyam Gen2-t.
A növekményes frissítés konfigurálása után az adatfolyam a megadott beállítások alapján automatikusan frissíti az adatokat. Az adatfolyam csak az utolsó frissítés óta megváltozott adatokat kéri le. Az adatfolyam tehát gyorsabban fut, és kevesebb erőforrást használ fel.
A növekményes frissítés úgy működik, hogy az adatokat a DateTime oszlop alapján gyűjtőkre osztja. Minden gyűjtő tartalmazza azokat az adatokat, amelyek az utolsó frissítés óta megváltoztak. Az adatfolyam a megadott oszlop maximális értékének ellenőrzésével tudja, hogy mi változott. Ha a gyűjtő maximális értéke módosult, az adatfolyam lekéri a teljes gyűjtőt, és lecseréli a célhelyen lévő adatokat. Ha a maximális érték nem változott, az adatfolyam nem kér le adatokat. A következő szakaszok a növekményes frissítés lépésről lépésre történő működésének magas szintű áttekintését tartalmazzák.
Az adatfolyam futtatásakor először kiértékeli az adatforrás változásait. Ezt a kiértékelést úgy végzi el, hogy összehasonlítja a DateTime oszlop maximális értékét az előző frissítés maximális értékével. Ha a maximális érték módosult, vagy ez az első frissítés, az adatfolyam módosítottként jelöli meg a gyűjtőt, és felsorolja feldolgozásra. Ha a maximális érték nem változott, az adatfolyam kihagyja a gyűjtőt, és nem dolgozza fel.
Most az adatfolyam készen áll az adatok lekérésére. Lekéri a módosított gyűjtők adatait. Az adatfolyam ezt a lekérést párhuzamosan végzi el a teljesítmény javítása érdekében. Az adatfolyam lekéri az adatokat a forrásrendszerből, és betölti az előkészítési területre. Az adatfolyam csak a gyűjtőtartományon belüli adatokat kéri le. Más szóval az adatfolyam csak az utolsó frissítés óta megváltozott adatokat kéri le.
Az adatfolyam a célhelyen lévő adatokat az új adatokra cseréli. Az adatfolyam a replace
célhelyen lévő adatok cseréjére használja a metódust. Ez azt jelzi, hogy az adatfolyam először törli az adatokat a gyűjtő célhelyében, majd beszúrja az új adatokat. Az adatfolyam nincs hatással a gyűjtőtartományon kívüli adatokra. Ezért ha az első gyűjtőnél régebbi adatokkal rendelkezik a célhelyen, a növekményes frissítés semmilyen módon nem befolyásolja ezeket az adatokat.
A növekményes frissítés konfigurálásához meg kell adnia a következő beállításokat.
Az általános beállítások megadása kötelező, és adja meg a növekményes frissítés alapkonfigurációját.
Ez a beállítás kötelező, és megadja azt az oszlopot, amelyet az adatfolyamok az adatok szűréséhez használnak. Ennek az oszlopnak DateTime, Date vagy DateTimeZone oszlopnak kell lennie. Az adatfolyam ezt az oszlopot használja az adatok szűrésére, és csak az utolsó frissítés óta megváltozott adatokat kéri le.
Ez a beállítás kötelező, és meghatározza, hogy az adatfolyam mennyi idő alatt nyerjen ki adatokat. Ez a beállítás a kezdeti adatbetöltés lekérésére szolgál. Az adatfolyam lekéri az összes adatot a forrásrendszerből, amely a megadott időtartományon belül található. A lehetséges értékek a következők:
- x nap
- x hét
- x hónap
- x negyed
- x év
Ha például 1 hónapot ad meg, az adatfolyam lekéri az összes új adatot a forrásrendszerből, amely az elmúlt hónapban található.
Ez a beállítás kötelező, és megadja az adatfolyam által az adatok szűréséhez használt gyűjtők méretét. Az adatfolyam a DateTime oszlop alapján gyűjtőkre osztja az adatokat. Minden gyűjtő tartalmazza azokat az adatokat, amelyek az utolsó frissítés óta megváltoztak. A gyűjtőméret határozza meg, hogy az egyes iterációk mennyi adatot dolgozzanak fel. A kisebb gyűjtőméret azt jelenti, hogy az adatfolyam kevesebb adatot dolgoz fel az egyes iterációkban, de azt is jelenti, hogy az összes adat feldolgozásához több iterációra van szükség. A nagyobb gyűjtőméret azt jelenti, hogy az adatfolyam több adatot dolgoz fel az egyes iterációkban, de azt is jelenti, hogy kevesebb iterációra van szükség az összes adat feldolgozásához.
Ez a beállítás kötelező, és megadja azt az oszlopot, amelyet az adatfolyam használ annak megállapításához, hogy az adatok megváltoztak-e. Az adatfolyam összehasonlítja az oszlopban található maximális értéket az előző frissítés maximális értékével. Ha a maximális érték módosul, az adatfolyam lekéri a legutóbbi frissítés óta megváltozott adatokat. Ha a maximális érték nem változik, az adatfolyam nem kér le adatokat.
Ez a beállítás nem kötelező, és azt határozza meg, hogy az adatfolyamnak csak a befejezett időszakokra kell-e adatokat kinyernie. Ha ez a beállítás engedélyezve van, az adatfolyam csak a befejezett időszakokra nyeri ki az adatokat. Az adatfolyam tehát csak olyan időszakokra nyer ki adatokat, amelyek teljesek, és nem tartalmaznak jövőbeli adatokat. Ha ez a beállítás le van tiltva, az adatfolyam minden időszakra kinyeri az adatokat, beleértve azokat az időszakokat is, amelyek nem teljesek, és jövőbeli adatokat tartalmaznak.
Ha például van egy DateTime oszlopa, amely tartalmazza a tranzakció dátumát, és csak a teljes hónapokat szeretné frissíteni, ezt a beállítást a gyűjtőmérettel month
kombinálva engedélyezheti. Ezért az adatfolyam csak teljes hónapokra nyer ki adatokat, és nem nyer ki adatokat hiányos hónapokra.
Egyes beállítások speciálisnak minősülnek, és a legtöbb forgatókönyv esetében nem szükségesek.
Ez a beállítás nem kötelező, és megadja, hogy a növekményes frissítéshez használt lekérdezésnek teljes mértékben össze kell-e hajtania. Ha ez a beállítás engedélyezve van, a növekményes frissítéshez használt lekérdezésnek teljes mértékben össze kell hajtania. Más szóval a lekérdezést teljes mértékben le kell küldeni a forrásrendszerbe. Ha ez a beállítás le van tiltva, a növekményes frissítéshez használt lekérdezésnek nem kell teljesen összecsuknia. Ebben az esetben a lekérdezés részben leküldhető a forrásrendszerbe. Határozottan javasoljuk, hogy engedélyezze ezt a beállítást a teljesítmény javítása érdekében, hogy elkerülje a szükségtelen és szűretlen adatok beolvasását.
Jelenleg csak az SQL-alapú adatcélok támogatottak a növekményes frissítéshez. Így csak a Fabric Warehouse, az Azure SQL Database vagy az Azure Synapse Analytics használható adathelyként a növekményes frissítéshez. Ennek a korlátozásnak az az oka, hogy ezek az adatcélok támogatják a növekményes frissítéshez szükséges SQL-alapú műveleteket. Törlési és beszúrási műveletekkel helyettesítjük az adatokat az adat célhelyén, ami más adatcélokon nem végezhető el párhuzamosan.
Az adatcélt rögzített sémára kell állítani, ami azt jelenti, hogy az adat céltáblájának sémáját ki kell javítani, és nem lehet módosítani. Ha az adat céltáblájának sémája dinamikus sémára van állítva, a növekményes frissítés konfigurálása előtt módosítania kell azt rögzített sémára.
Az adat célhelyen az egyetlen támogatott frissítési módszer az replace
, ami azt jelenti, hogy az adatfolyam az adatcél minden egyes gyűjtőjének adatait lecseréli az új adatokra. A gyűjtőtartományon kívül eső adatokra azonban nincs hatással. Ha tehát az első gyűjtőnél régebbi adatokkal rendelkezik az adat célhelyén, a növekményes frissítés semmilyen módon nem befolyásolja ezeket az adatokat.
Az adatfolyam által támogatott lekérdezésenkénti gyűjtők maximális száma 50. Ha több mint 50 gyűjtője van, növelnie kell a gyűjtő méretét, vagy csökkentenie kell a gyűjtőtartományt a gyűjtők számának csökkentéséhez. A teljes adatfolyam esetében a gyűjtők maximális száma 150. Ha több mint 150 gyűjtő van az adatfolyamban, csökkentenie kell a növekményes frissítési lekérdezések számát, vagy növelnie kell a gyűjtő méretét a gyűjtők számának csökkentéséhez.
Az Adatfolyam Gen1 és a Dataflow Gen2 között van néhány különbség a növekményes frissítés működésében. Az alábbi lista az 1. generációs adatfolyam és a 2. adatfolyam növekményes frissítése közötti fő különbségeket ismerteti.
- A növekményes frissítés mostantól a Dataflow Gen2 első osztályú funkciója. Az Adatfolyam Gen1-ben növekményes frissítést kellett konfigurálnia az adatfolyam közzététele után. A Dataflow Gen2-ben a növekményes frissítés mostantól egy első osztályú funkció, amelyet közvetlenül az adatfolyam-szerkesztőben konfigurálhat. Ez a funkció megkönnyíti a növekményes frissítés konfigurálását, és csökkenti a hibák kockázatát.
- A Dataflow Gen1-ben meg kellett adnia az előzményadat-tartományt a növekményes frissítés konfigurálásakor. A Dataflow Gen2-ben nem kell megadnia az előzményadat-tartományt. Az adatfolyam nem távolít el adatokat a gyűjtőtartományon kívüli célhelyről. Ezért ha az első gyűjtőnél régebbi adatokkal rendelkezik a célhelyen, a növekményes frissítés semmilyen módon nem befolyásolja ezeket az adatokat.
- Az 1. adatfolyamban meg kellett adnia a növekményes frissítés paramétereit a növekményes frissítés konfigurálásakor. A Dataflow Gen2-ben nem kell megadnia a növekményes frissítés paramétereit. Az adatfolyam automatikusan hozzáadja a szűrőket és paramétereket a lekérdezés utolsó lépéseként. Így nem kell manuálisan megadnia a növekményes frissítés paramétereit.
Figyelmeztetést kaptam, hogy ugyanazt az oszlopot használtam a módosítások és a szűrés észleléséhez. Mit jelent ez?
Ha figyelmeztetést kap arról, hogy ugyanazt az oszlopot használta a módosítások és a szűrés észleléséhez, az azt jelenti, hogy a módosítások észleléséhez megadott oszlop is az adatok szűrésére szolgál. Ezt a használatot nem javasoljuk, mert az váratlan eredményekhez vezethet. Ehelyett azt javasoljuk, hogy egy másik oszlopot használjon a módosítások észleléséhez és az adatok szűréséhez. Ha az adatok gyűjtők között változnak, előfordulhat, hogy az adatfolyam nem tudja megfelelően észlelni a módosításokat, és ismétlődő adatokat hozhat létre a célhelyen. Ezt a figyelmeztetést egy másik oszlop használatával oldhatja meg a módosítások észleléséhez és az adatok szűréséhez. Vagy figyelmen kívül hagyhatja a figyelmeztetést, ha biztos benne, hogy az adatok nem változnak a megadott oszlop frissítései között.
Ha növekményes frissítést szeretne használni egy nem támogatott adathelyhez, engedélyezheti a növekményes frissítést a lekérdezésben, és használhat egy második lekérdezést, amely a szakaszos adatokra hivatkozik az adat célhelyének frissítéséhez. Így továbbra is használhat növekményes frissítést a forrásrendszerből feldolgozandó és lekérendő adatok mennyiségének csökkentéséhez, de teljes frissítést kell végrehajtania a szakaszos adatokról az adatcélra. Győződjön meg arról, hogy helyesen állította be az ablak- és gyűjtőméretet, mivel nem garantáljuk, hogy az átmeneti adatok a gyűjtőtartományon kívül maradnak.
Láthatja, hogy a lekérdezés növekményes frissítés engedélyezve van-e, ha az adatfolyam-szerkesztőben a lekérdezés melletti ikont ellenőrzi. Ha az ikon kék háromszöget tartalmaz, a növekményes frissítés engedélyezve van. Ha az ikon nem tartalmaz kék háromszöget, a növekményes frissítés nincs engedélyezve.
Hozzáadtunk egy beállítást, amely lehetővé teszi a párhuzamos lekérdezések maximális számának beállítását. Ez a beállítás az adatfolyam globális beállításai között található. Ha ezt az értéket alacsonyabb számra állítja, csökkentheti a forrásrendszernek küldött kérések számát. Ez a beállítás segíthet az egyidejű kérések számának csökkentésében és a forrásrendszer teljesítményének javításában. A párhuzamos lekérdezés-végrehajtások maximális számának beállításához nyissa meg az adatfolyam globális beállításait, lépjen a Méretezés lapra, és állítsa be a párhuzamos lekérdezések maximális számát. Javasoljuk, hogy csak akkor engedélyezze ezt a korlátot, ha problémákat tapasztal a forrásrendszerrel kapcsolatban.
Növekményes frissítést szeretnék használni, de látom, hogy az engedélyezés után az adatfolyam frissítése hosszabb időt vesz igénybe. Mit tehetek?
A jelen cikkben ismertetett növekményes frissítés célja, hogy csökkentse a forrásrendszerből feldolgozandó és lekérendő adatok mennyiségét. Azonban, ha a növekményes frissítés engedélyezése után az adatfolyam frissítése tovább tart, annak oka lehet, hogy az adatváltozások ellenőrzése és az adatgyűjtők feldolgozásának többletköltsége nagyobb, mint amennyi időt a kevesebb adat feldolgozása megtakarít. Ebben az esetben javasoljuk, hogy tekintse át a növekményes frissítés beállításait, és módosítsa őket a forgatókönyvnek megfelelően. Növelheti például a vödör méretét, hogy csökkentse a vödrök számát és a feldolgozásuk többletterhelését. Vagy csökkentheti a gyűjtők számát a gyűjtő méretének növelésével. Ha továbbra is alacsony teljesítményt tapasztal a beállítások módosítása után, letilthatja a növekményes frissítést, és teljes frissítést használhat helyette, mivel ez hatékonyabb lehet a forgatókönyvben.