Kifejezések létrehozása a leképezési adatfolyamban

Vonatkozik: Azure Data Factory Azure Synapse Analytics

Tipp.

Data Factory a Microsoft Fabric a Azure Data Factory következő generációja, egyszerűbb architektúrával, beépített AI-vel és új funkciókkal. Ha még nem ismerkedik az adatintegrációval, kezdje a Fabric Data Factoryvel. A meglévő ADF-számítási feladatok frissíthetők Fabric használatával, hogy elérjék az adatkutatás, a valós idejű elemzés és a jelentéskészítés új képességeit.

A leképezési adatfolyamban a rendszer számos átalakítási tulajdonságot kifejezésként ad meg. Ezek a kifejezések oszlopértékekből, paraméterekből, függvényekből, operátorokból és literálokból állnak, amelyek futtatáskor Spark-adattípusra értékelnek. Az adatfolyamok leképezése rendelkezik egy dedikált felülettel, amely az Expresszionális Építő néven ismert eszközt kínálja segítségül ezeknek a kifejezéseknek a megalkotásához. Az IntelliSense kódkiegészítését a kiemeléshez, a szintaxis-ellenőrzéshez és az automatikus kiegészítéshez használva a kifejezésszerkesztő úgy lett kialakítva, hogy megkönnyítse az adatfolyamok létrehozását. Ez a cikk bemutatja, hogyan hozhatja létre hatékonyan üzleti logikáját a kifejezésszerkesztő használatával.

Kifejezésszerkesztő

A Kifejezésszerkesztő megnyitása

A kifejezésszerkesztő megnyitásához több belépési pont is rendelkezésre áll. Ezek mind az adatfolyam-átalakítás adott környezetétől függenek. A leggyakoribb használati eset az olyan átalakítások, mint a származtatott oszlop és az összesítés , ahol a felhasználók az adatfolyam-kifejezés nyelvével hoznak létre vagy frissítenek oszlopokat. A kifejezésszerkesztő az oszlopok listája fölötti Kifejezésszerkesztő megnyitása lehetőséget választva nyitható meg. Kijelölhet egy oszlopkörnyezetet is, és közvetlenül az adott kifejezéshez nyithatja meg a kifejezésszerkesztőt.

Nyisd meg az Egyenletkészítő deriválást

Bizonyos átalakításokban, például a szűrőben a kék kifejezés szövegmezőre kattintva megnyílik a kifejezésszerkesztő.

Kék kifejezésmező

Ha egy egyező vagy csoportosítási feltételben lévő oszlopokra hivatkozik, egy kifejezés kinyerheti az oszlopokból az értékeket. Kifejezés létrehozásához válassza a Számított oszlop lehetőséget.

Számított oszlop lehetőség

Ha egy kifejezés vagy egy literális érték érvényes bemenet, válassza a Dinamikus tartalom hozzáadása lehetőséget egy olyan kifejezés létrehozásához, amely literális értékre értékel.

Dinamikus tartalom hozzáadása beállítás

Kifejezéselemek

Az adatfolyamok leképezése során a kifejezések oszlopértékekből, paraméterekből, függvényekből, helyi változókból, operátorokból és literálokból állhatnak. Ezeknek a kifejezéseknek Spark-adattípusra, például sztringre, logikai értékre vagy egész számra kell kiértékelniük.

Kifejezéselemek

Functions

Az adatfolyamok leképezése beépített függvényekkel és operátorokkal rendelkezik, amelyek a kifejezésekben használhatók. Az elérhető függvények listájáért lásd a leképezési adatfolyam nyelvi hivatkozásra.

Felhasználó által definiált függvények (előzetes verzió)

Az adatfolyamok leképezése támogatja a felhasználó által definiált függvények létrehozását és használatát. A felhasználó által definiált függvények létrehozásáról és használatáról a felhasználó által definiált függvények című témakörben olvashat.

Címtömbindexek

Ha tömbtípusokat visszaadó oszlopokkal vagy függvényekkel foglalkozik, szögletes zárójelek ([]) használatával érhet el egy adott elemet. Ha az index nem létezik, a kifejezés null értékű lesz.

Kifejezésszerkesztő tömb

Fontos

Az adatfolyamok leképezése során a tömbök egy-alapúak, ami azt jelenti, hogy az első elemre az index 1 hivatkozik. A myArray[1] például a "myArray" nevű tömb első eleméhez fog hozzáférni.

Bemeneti séma

Ha az adatfolyam egy meghatározott sémát használ bármelyik forrásában, számos kifejezésben hivatkozhat név szerint egy oszlopra. Ha sémaeltérést használ, az oszlopokra kifejezetten hivatkozhat az byName() vagy byNames() függvények használatával, vagy oszlopminták használatával egyezhet.

Speciális karaktereket tartalmazó oszlopnevek

Ha speciális karaktereket vagy szóközöket tartalmazó oszlopneveket használ, a nevet kapcsos zárójelekkel körülvéve hivatkozzon rájuk egy kifejezésben.

{[dbo].this_is my complex name$$$}

Paraméterek

A paraméterek olyan értékek, amelyeket egy futási folyamat során egy pipeline ad át egy adatfolyamba. Ha egy paraméterre szeretne hivatkozni, válassza ki a paramétert a Kifejezéselemek nézetből, vagy hivatkozzon rá egy dollárjellel a neve előtt. Például egy paraméter1 nevű paraméterre hivatkozik a $parameter1függvény. További információkért tekintse meg a leképezési adatfolyamok paraméterezését.

Gyorsítótárazott keresés

A gyorsítótárazott keresés lehetővé teszi a gyorsítótárazott cél kimenetének soros keresését. Az egyes fogadókhoz két funkció használható, lookup() és outputs(). A függvények hivatkozásának szintaxisa: cacheSinkName#functionName(). További információ: cache-helyek.

lookup() az aktuális átalakítás megfelelő oszlopait veszi fel paraméterekként, és a gyorsítótár-fogadó kulcsoszlopainak megfelelő sornak megfelelő komplex oszlopot ad vissza. A visszaadott komplex oszlop a gyorsítótár tárolóban leképezett összes oszlophoz tartalmaz egy aloszlopot. Ha például lenne egy hibakód-gyorsítótár-kezelőd errorCodeCache, amelynek kulcsoszlopa a kódhoz illeszkedne, és lenne egy Message nevű oszlop. A hívás errorCodeCache#lookup(errorCode).Message a megadott kódnak megfelelő üzenetet adja vissza.

outputs() nem vesz fel semmilyen paramétert, és az egész gyorsítótárat komplex oszlopok tömbjeként adja vissza. Ez nem hívható meg, ha a fogadóban kulcsoszlopok vannak megadva, és csak akkor használható, ha a gyorsítótár-fogadóban van néhány sor. Gyakori használati eset egy növekményes kulcs maximális értékének hozzáfűzése. Ha egy gyorsítótárazott egyetlen összesített sor CacheMaxKey tartalmaz egy oszlopot MaxKey, az első értékre hivatkozhat a hívással CacheMaxKey#outputs()[1].MaxKey.

Gyorsítótár alapú keresés

Helyiek

Ha több oszlopban osztja meg a logikát, vagy el szeretné osztani a logikát, létrehozhat egy helyi változót. Egy helyi logikai készlet, amely nem lesz továbbítva a következő átalakításnak. A lokálisok a kifejezésszerkesztőben úgy hozhatók létre, hogy a Kifejezéselemek menüpontra megy, és a Lokálisok lehetőséget választja. Hozzon létre egy újat az Új létrehozása gombra kattintva.

Helyi létrehozása

A helyiek bármilyen kifejezéselemre hivatkozhatnak, beleértve a függvényeket, a bemeneti sémát, a paramétereket és más helyi elemeket. Más helyiekre való hivatkozáskor a sorrend nem számít, mivel a hivatkozott helyinek a jelenleginél "feljebb" kell lennie.

Helyi 2 létrehozása

Ha helyire szeretne hivatkozni egy átalakításban, válassza ki a helyit a Kifejezéselemek nézetből, vagy hivatkozzon rá kettősponttal a neve előtt. Például egy local1 nevű helyire hivatkozik :local1. Helyi definíció szerkesztéséhez mutasson rá a kifejezéselemek nézetben, és válassza a ceruza ikont.

Helyiek használata

Előnézeti kifejezés eredményei

Ha a hibakeresési mód be van kapcsolva, interaktív módon használhatja a hibakeresési fürtöt a kifejezés kiértékelésének előnézetéhez. Az adatok előnézete mellett válassza a Frissítés lehetőséget az adatelőnézet eredményeinek frissítéséhez. Az egyes sorok kimenetét a bemeneti oszlopok alapján tekintheti meg.

Folyamatban lévő előzetes verzió

Sztring interpolációja

Kifejezéselemeket használó hosszú sztringek létrehozásakor sztringinterpolációval egyszerűen hozhat létre összetett sztringlogikát. A sztringek interpolációja elkerüli a sztringösszefűzés széles körű használatát, ha a paramétereket a lekérdezési sztringek tartalmazzák. Kettős idézőjelek használatával konstans sztringszöveget csatolhat kifejezésekhez. Kifejezésfüggvényeket, oszlopokat és paramétereket is tartalmazhat. A kifejezés szintaxisának használatához kapcsos zárójelekbe kell tenni,

Néhány példa a sztring interpolációjára:

  • "My favorite movie is {iif(instr(title,', The')>0,"The {split(title,', The')[1]}",title)}"

  • "select * from {$tablename} where orderyear > {$year}"

  • "Total cost with sales tax is {round(totalcost * 1.08,2)}"

  • "{:playerName} is a {:playerRating} player"

Feljegyzés

Ha sztringinterpolációs szintaxist használ az SQL-forrás lekérdezésekben, a lekérdezési sztringnek egyetlen sorban kell lennie, "/n" nélkül.

Megjegyzésre vonatkozó kifejezések

Megjegyzések hozzáadása a kifejezésekhez egysoros és többsoros megjegyzésszintaxis használatával.

Az alábbi példák érvényes megjegyzések:

  • /* This is my comment */

  • /* This is a

  • multi-line comment */

Ha megjegyzést fűz a kifejezés elejéhez, az az átalakítási szövegmezőben jelenik meg az átalakítási kifejezések dokumentálásához.

Megjegyzés az átalakítás szövegmezőjében

Reguláris kifejezések

Számos kifejezésnyelvi függvény használ reguláris kifejezésszintaxist. Reguláris kifejezésfüggvények használata esetén a Expression Builder egy fordított perjelet (\) próbál feloldó karaktersorozatként értelmezni. Ha fordított perjeleket használ a reguláris kifejezésben, akkor vagy a teljes regexet mellékelje a backticks (') alá, vagy használjon dupla fordított perjelet.

Példa a backticks használatára:

regex_replace('100 and 200', `(\d+)`, 'digits')

Példa kettős perjelekre:

regex_replace('100 and 200', '(\\d+)', 'digits')

Billentyűparancsok

Az alábbiakban a kifejezésszerkesztőben elérhető billentyűparancsok listája látható. A kifejezések létrehozásakor a legtöbb IntelliSense parancsikon elérhető.

  • Ctrl+K Ctrl+C: Teljes sor megjegyzése.
  • Ctrl+K Ctrl+U: Megjegyzés feloldása.
  • F1: Adjon meg szerkesztői súgóparancsokat.
  • Alt+Le nyílbillentyű: Lépés lefelé az aktuális vonalon.
  • Alt+Fel nyílbillentyű: Feljebb az aktuális vonalon.
  • Ctrl+Szóköz: A kontextus súgójának megjelenítése.

Gyakran használt kifejezések

Konvertálás dátumokra vagy időbélyegekké

Ha sztringkonstansokat szeretne belefoglalni az időbélyeg kimenetbe, csomagolja be a konvertálást toString() címkébe.

toString(toTimestamp('12/31/2016T00:12:00', 'MM/dd/yyyy\'T\'HH:mm:ss'), 'MM/dd /yyyy\'T\'HH:mm:ss')

Az ezredmásodperceket a korszakból dátummá vagy időbélyeggé alakíthatja, használja a következőt toTimestamp(<number of milliseconds>): . Ha az idő másodpercben van, szorozza meg 1000-rel.

toTimestamp(1574127407*1000l)

Az előző kifejezés végén található záró "l" azt jelzi, hogy az átalakítás hosszú típusra történik, mint közvetlen szintaxis.

Idő meghatározása Epoch-időből vagy Unix-időből

toLong( currentTimestamp() - toTimestamp('1970-01-01 00:00:00.000', 'yyyy-MM-dd HH:mm:ss.SSS') ) * 1000l

Adatfolyam-idő kiértékelése

Az adatfolyamok ezredmásodpercig feldolgozhatók. A 2018-07-31T20:00:00.2170000 esetében a 2018-07-31T20:00:00.217 kimenet jelenik meg. A szolgáltatás portálján az időbélyeg a jelenlegi böngészőbeállítások szerint jelenik meg, ami kiküszöbölheti a 217-et, de amikor az adatfolyamot teljes egészében futtatja, a 217 (milliszekundum rész is feldolgozásra kerül). A toString(myDateTimeColumn) kifejezésként használható, és megtekintheti a teljes pontosságú adatokat előzetes verzióban. A datetime-et karakterlánc helyett dátum-időként dolgozza fel minden gyakorlati célból.

Kezdje el az adatátalakítási kifejezések készítését.