Kifejezések összeállítása adatfolyam-leképezésben

A KÖVETKEZŐKRE VONATKOZIK: Azure Data Factory Azure Synapse Analytics

A leképezési adatfolyamban számos átalakítási tulajdonság kifejezésként van megadva. Ezek a kifejezések olyan oszlopértékek, paraméterek, függvények, operátorok és literálokből állnak, amelyek futásidőben egy Spark-adattípust értékelnek ki. A leképezési adatfolyamok egy dedikált felhasználói élményt kínálnak, amely segít a kifejezéskészítőnek nevezett kifejezések készítésében. Az IntelliSense-kód kiegészítésének kiemeléséhez, szintaxis-ellenőrzéséhez és automatikus kiegészítéséhez a kifejezésszerkesztőt arra tervezték, hogy megkönnyíti az adatfolyamok építését. Ez a cikk azt ismerteti, hogyan használhatja a kifejezésszerkesztőt az üzleti logika hatékony építéséhez.

Kifejezésszerkesztő

Kifejezésszerkesztő megnyitása

A kifejezésszerkesztő megnyitásához több belépési pont is van. Ezek mind az adatfolyam-átalakítás adott környezetének megfelelők. A leggyakoribb eset az olyan átalakítások esetében, mint a származtatott oszlop és összesítés, ahol a felhasználók az adatfolyam-kifejezésnyelv használatával hoznak létre vagy frissítnek oszlopokat. A kifejezésszerkesztő az oszlopok listája fölötti Open expression builder (Kifejezésszerkesztő megnyitása) lehetőség kiválasztásával nyitható meg. Egy oszlopkörnyezetre is kattinthat, és közvetlenül a kifejezéshez nyithatja meg a kifejezésszerkesztőt.

Nyíltkifejezés-szerkesztő származtatása

Egyes átalakítások, például a filter(szűrés) mező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étel oszlopaira hivatkozik, egy kifejezés értékeket tud kinyerni az oszlopokból. Kifejezés létrehozásához válassza a Számított oszlop lehetőséget.

Számított oszlop lehetőség

Abban az esetben, 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 konstansértéket visszaértékelő kifejezés felépítéséhez.

Dinamikus tartalom hozzáadása lehetőség

Kifejezéselemek

Az adatfolyamok leképezése során a kifejezések oszlopértékek, paraméterek, függvények, helyi változók, operátorok és literálok alapján is alkothatóak. Ezeknek a kifejezéseknek Egy Spark-adattípust kell kiértékelnie, például sztringet, logikai értéket vagy egész értéket.

Kifejezéselemek

Functions

A leképezési adatfolyamok beépített függvényekkel és operátorokkal is rendelkezik, amelyek kifejezésekben használhatók. Az elérhető függvények listáját a leképezési adatfolyam nyelvének referenciája tartalmazza.

Címtömbindexek

Tömbtípusokat visszatartó oszlopok vagy függvények esetén szögletes zárójelek ([]) használatával férhet hozzá egy adott elemhez. Ha az index nem létezik, a kifejezés NULL értéket ad vissza.

Kifejezésszerkesztő-tömb

Fontos

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

Bemeneti séma

Ha az adatfolyam meghatározott sémát használ bármelyik forrásában, számos kifejezésben hivatkozhat név szerint egy oszlopra. Ha sémasodródást használ, explicit módon hivatkozhat az oszlopokra a vagy függvények használatával, vagy byName() byNames() megfeleltetheti az oszlopmintákat.

Speciális karaktereket tartalmazó oszlopnevek

Ha speciális karaktereket vagy szóközöket tartalmazó oszlopnevekkel rendelkezik, a nevet kapcsos zárójelek közé kell foglalnia, hogy azok kifejezésben hivatkozni tudjanak rájuk.

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

Paraméterek

A paraméterek olyan értékek, amelyek futásidőben adatokat adnak át egy adatfolyamnak egy folyamatból. Egy paraméterre való hivatkozáshoz kattintson a paraméterre a Kifejezéselemek nézetben, vagy hivatkozhat rá egy dollárjelet a neve előtt. A paraméter1 nevű paraméterre például a $parameter1 hivatkozik. További tudnivalókért lásd 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 egy gyorsítótárazott fogadó kimenetének beágyazott keresését. Minden fogadón két függvény használható: lookup() és outputs() . A függvények hivatkozási szintaxisa cacheSinkName#functionName() a következő: . További információ: gyorsítótár-fogadók.

lookup() A paraméterként az aktuális átalakítás megfelelő oszlopait veszi fel, és egy olyan összetett oszlopot ad vissza, amely megegyezik a gyorsítótár-fogadó kulcsoszlopainak megfelelő sorokkal. A visszaadott összetett oszlop egy aloszlopot tartalmaz a gyorsítótár-fogadóban leképezett összes oszlophoz. Ha például olyan hibakód-gyorsítótár-fogadója van, amely a kódban egyező kulcsoszlopot és egy nevű errorCodeCache oszlopot Message tartalmaz. A errorCodeCache#lookup(errorCode).Message hívása a megadott kódnak megfelelő üzenetet adja vissza.

outputs() A nem vesz fel paramétereket, és a teljes gyorsítótár-fogadót komplex oszlopok tömbjeként adja vissza. Ez nem hívható meg, ha a kulcsoszlopok meg vannak adva a fogadóban, és csak akkor érdemes használni, ha kevés sor található a gyorsítótár-fogadóban. Gyakori eset egy növekvő kulcs maximális értékének hozzáfűzése. Ha egy gyorsítótárazott összesített sor tartalmaz egy oszlopot, a hívásával hivatkozhat az CacheMaxKey MaxKey első CacheMaxKey#outputs()[1].MaxKey értékre.

Gyorsítótárazott keresés

Helyiek

Ha több oszlop között oszt meg logikát, vagy szeretné feldarabosítani a logikát, létrehozhat egy helyit egy származtatott oszlopban. Helyi felhasználóra való hivatkozáshoz kattintson a helyi elemre a Kifejezéselemek nézetben, vagy hivatkozhat rá egy kettősponttal a neve előtt. Egy local1 nevű helyire például a :local1 hivatkozik. A helyi adatokkal kapcsolatos további információkért olvassa el a származtatott oszlop dokumentációját.

Kifejezés eredményeinek előnézete

Ha a hibakeresési mód be van kapcsolva, interaktív módon használhatja a hibakeresési fürtöt, hogy megtekintsen egy előnézetet a kifejezés kiértékeléséhez. Az adatelőnézet eredményeinek frissítéséhez válassza az Adatelőnézet melletti Frissítés lehetőséget. Az egyes sorok kimenetét a bemeneti oszlopok alapján láthatja.

Előzetes verzió a folyamatban

Sztring-interpoláció

Kifejezéselemeket használó hosszú sztringek létrehozásakor sztring-interpolációval egyszerűen építhet ki összetett sztringlogikát. A sztring-interpoláció elkerüli a sztringek össze concatenálásának széles körű használatát, ha a lekérdezési sztringek paramétereket tartalmaznak. Használjon dupla idézőjelet a literális sztring szövegének kifejezésekhez való összezárásaként. Kifejezési függvényeket, oszlopokat és paramétereket is tartalmazhat. A kifejezésszintaxist kapcsos zárójelek közé kell csatolni,

Néhány példa sztring-interpoláció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"

Megjegyzés

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

Megjegyzések fűzői kifejezésekhez

Megjegyzéseket fűz a kifejezésekhez egysoros és többsoros megjegyzésszintaxissal.

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éshez, az megjelenik az átalakítási szövegmezőben az átalakítási kifejezések dokumentálása érdekében.

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

Reguláris kifejezések

Számos kifejezésnyelvi függvény reguláriskifejezés-szintaxist használ. Reguláriskifejezés-függvények használatakor a Kifejezésszerkesztő a perjelet ( ) próbálja escape-karaktersorozatként \ értelmezni. Ha a reguláris kifejezésben a perjeleket használja, zárja a teljes reguláris kifejezést a backticks ( ) közé, vagy használjon ` kettős perjelet.

Egy példa, amely a backtickset használja:

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

Két perjelet használó példa:

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

Billentyűparancsok

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

  • Ctrl+K Ctrl+C: Megjegyzés a teljes sorhoz.
  • Ctrl+K Ctrl+U: A nem kívánt billentyűkombináció.
  • F1: Biztosítson szerkesztői súgóparancsokat.
  • Alt+Le nyílbillentyű: Az aktuális sor lefelé mozgatása.
  • Alt+Fel nyílbillentyű: Az aktuális sor felfelé mozgatása.
  • Ctrl+szóköz: A környezeti súgó megjelenítése.

Gyakran használt kifejezések

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

Ha sztringkonstansokat is fel kell foglalnia az időbélyegző kimenetbe, burkossa az átalakítást a toString() fájlba.

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

Az ezredmásodpercek dátumká vagy időbélyeggé való átalakításához használja a toTimestamp(<number of milliseconds>) et. Ha az idő másodpercben érkezik, szorozza meg 1000-et.

toTimestamp(1574127407*1000l)

Az előző kifejezés végén található záró "l" azt jelenti, hogy hosszú típusra, beágyazott szintaxisként való átalakítást eredményez.

Alapidő vagy Unix-idő megkeresi az időt

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

Adatfolyam-idő kiértékelése

Adatfolyam-folyamatok ezredmásodpercig. A 2018-07-31T20:00:00.2170000 esetén a kimenetben a 2018-07-31T20:00:00.217 látható. A szolgáltatás portálján az időbélyegző megjelenik az aktuális böngészőbeállításban, amely megszüntetheti a 217-et, de az adatfolyam teljes futtatásakor 217 (ezredmásodpercek része is fel lesz feldolgozva). Kifejezésként használhatja a toString(myDateTimeColumn) karakterláncot, és megtekintheti a teljes pontosságú adatokat az előzetes verzióban. A datetime feldolgozása datetime-ként, és nem sztringként minden gyakorlati célra.

Következő lépések

Adatátalakítási kifejezések építésének megkezdése