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.
Vonatkozik:
Azure Data Factory
Azure Synapse Analytics
Tipp.
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.
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.
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ő.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 amulti-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.
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.