Delen via


Expressies bouwen in toewijzingsgegevensstroom

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

In de toewijzingsgegevensstroom worden veel transformatie-eigenschappen ingevoerd als expressies. Deze expressies bestaan uit kolomwaarden, parameters, functies, operators en letterlijke waarden die tijdens runtime een Spark-gegevenstype evalueren. Toewijzingsgegevensstromen hebben een speciale ervaring om u te helpen bij het bouwen van deze expressies, de opbouwfunctie voor expressies. Door gebruik te maken van IntelliSense-codevoltooiing voor het markeren, controleren van syntaxis en automatisch aanvullen, is de opbouwfunctie voor expressies ontworpen om het bouwen van gegevensstromen eenvoudig te maken. In dit artikel wordt uitgelegd hoe u de opbouwfunctie voor expressies gebruikt om uw bedrijfslogica effectief te bouwen.

Opbouwfunctie voor expressies

Opbouwfunctie voor expressies openen

Er zijn meerdere toegangspunten voor het openen van de opbouwfunctie voor expressies. Deze zijn allemaal afhankelijk van de specifieke context van de gegevensstroomtransformatie. De meest voorkomende use case is in transformaties zoals afgeleide kolom en aggregatie waarbij gebruikers kolommen maken of bijwerken met behulp van de expressietaal voor gegevensstromen. De opbouwfunctie voor expressies kan worden geopend door de opbouwfunctie voor open expressies boven de lijst met kolommen te selecteren. U kunt ook een kolomcontext selecteren en de opbouwfunctie voor expressies rechtstreeks naar die expressie openen.

Opbouwfunctie voor open expressies afleiden

In sommige transformaties, zoals filteren, wordt de opbouwfunctie voor expressies geopend wanneer u op een blauw expressievak klikt.

Blauw expressievak

Wanneer u verwijst naar kolommen in een overeenkomende of group-by-voorwaarde, kan een expressie waarden extraheren uit kolommen. Als u een expressie wilt maken, selecteert u de berekende kolom.

Optie berekende kolom

Als een expressie of een letterlijke waarde geldige invoer is, selecteert u Dynamische inhoud toevoegen om een expressie te maken die resulteert in een letterlijke waarde.

Optie Dynamische inhoud toevoegen

Expressie-elementen

In toewijzingsgegevensstromen kunnen expressies bestaan uit kolomwaarden, parameters, functies, lokale variabelen, operators en letterlijke waarden. Deze expressies moeten resulteren in een Spark-gegevenstype, zoals tekenreeks, booleaanse waarde of geheel getal.

Expressie-elementen

Functies

Toewijzingsgegevensstromen hebben ingebouwde functies en operators die kunnen worden gebruikt in expressies. Zie de taalverwijzing voor toewijzingsgegevensstromen voor een lijst met beschikbare functies.

Door de gebruiker gedefinieerde functies (preview)

Toewijzingsgegevensstromen ondersteunen het maken en gebruiken van door de gebruiker gedefinieerde functies. Zie door de gebruiker gedefinieerde functies om te zien hoe u door de gebruiker gedefinieerde functies maakt en gebruikt.

Adresmatrixindexen

Wanneer u te maken hebt met kolommen of functies die matrixtypen retourneren, gebruikt u vierkante haken ([]) om toegang te krijgen tot een specifiek element. Als de index niet bestaat, wordt de expressie geëvalueerd in NULL.

Opbouwfunctiematrix voor expressies

Belangrijk

In toewijzingsgegevensstromen zijn matrices één gebaseerd, wat betekent dat het eerste element wordt verwezen door index één. MyArray[1] krijgt bijvoorbeeld toegang tot het eerste element van een matrix met de naam 'myArray'.

Invoerschema

Als uw gegevensstroom gebruikmaakt van een gedefinieerd schema in een van de bronnen, kunt u in veel expressies verwijzen naar een kolom op naam. Als u schemadrift gebruikt, kunt u expliciet verwijzen naar kolommen met behulp van de byName() of byNames() functies of overeenkomsten met behulp van kolompatronen.

Kolomnamen met speciale tekens

Wanneer u kolomnamen hebt die speciale tekens of spaties bevatten, zet u de naam tussen accolades om ernaar te verwijzen in een expressie.

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

Parameters

Parameters zijn waarden die tijdens runtime worden doorgegeven aan een gegevensstroom vanuit een pijplijn. Als u naar een parameter wilt verwijzen, selecteert u de parameter in de weergave Expressie-elementen of verwijst u ernaar met een dollarteken vóór de naam. Er wordt bijvoorbeeld naar een parameter met de naam parameter1 verwezen $parameter1. Zie voor meer informatie het parameteriseren van toewijzingsgegevensstromen.

In de cache opgeslagen zoekopdrachten

Met een opzoekactie in de cache kunt u inline zoeken naar de uitvoer van een sink in de cache. Er zijn twee functies beschikbaar voor gebruik op elke sink en lookup() outputs(). De syntaxis die naar deze functies verwijst, is cacheSinkName#functionName(). Zie cache-sinks voor meer informatie.

lookup() neemt de overeenkomende kolommen in de huidige transformatie op als parameters en retourneert een complexe kolom die gelijk is aan de rij die overeenkomt met de sleutelkolommen in de cache-sink. De geretourneerde complexe kolom bevat een subkolom voor elke kolom die is toegewezen in de cache-sink. Als u bijvoorbeeld een cache-sink errorCodeCache voor foutcodes hebt die een sleutelkolom bevat die overeenkomt met de code en een kolom met de naam Message. Als u aanroept errorCodeCache#lookup(errorCode).Message , wordt het bericht geretourneerd dat overeenkomt met de code die is doorgegeven.

outputs() neemt geen parameters en retourneert de volledige cache-sink als een matrix van complexe kolommen. Dit kan niet worden aangeroepen als sleutelkolommen zijn opgegeven in de sink en alleen mogen worden gebruikt als er een paar rijen in de cache-sink staan. Een veelvoorkomende use-case is het toevoegen van de maximale waarde van een incrementele sleutel. Als één samengevoegde rij CacheMaxKey in de cache een kolom MaxKeybevat, kunt u verwijzen naar de eerste waarde door aan te roepen CacheMaxKey#outputs()[1].MaxKey.

In de cache opgeslagen zoekopdrachten

Lokale instellingen

Als u logica deelt over meerdere kolommen of uw logica wilt opdelen, kunt u een lokale variabele maken. Een lokale is een set logica die niet downstream wordt doorgegeven aan de volgende transformatie. Lokale bevolking kan worden gemaakt in de opbouwfunctie voor expressies door naar Expressie-elementen te gaan en Locals te selecteren. Maak een nieuwe door Nieuwe maken te selecteren.

Lokaal maken

Locals kan verwijzen naar elk expressie-element, waaronder functies, invoerschema, parameters en andere lokale bevolking. Wanneer u naar andere lokale bevolking verwijst, doet bestelling er toe omdat de lokale waarnaar wordt verwezen, 'boven' de huidige moet zijn.

Lokaal 2 maken

Als u naar een lokale in een transformatie wilt verwijzen, selecteert u de lokale in de weergave Expressie-elementen of verwijst u ernaar met een dubbele punt vóór de naam. Er wordt bijvoorbeeld naar een lokaal met de naam local1 verwezen :local1. Als u een lokale definitie wilt bewerken, plaatst u de muisaanwijzer erop in de weergave expressie-elementen en selecteert u het potloodpictogram.

Lokale bevolking gebruiken

Voorbeeld van expressieresultaten

Als de foutopsporingsmodus is ingeschakeld, kunt u het foutopsporingscluster interactief gebruiken om een voorbeeld te bekijken van wat uw expressie evalueert. Selecteer Vernieuwen naast gegevensvoorbeeld om de resultaten van de voorbeeldweergave van de gegevens bij te werken. U kunt de uitvoer van elke rij zien op basis van de invoerkolommen.

Preview-versie wordt uitgevoerd

Tekenreeksinterpolatie

Wanneer u lange tekenreeksen maakt die expressie-elementen gebruiken, gebruikt u tekenreeksinterpolatie om eenvoudig complexe tekenreekslogica op te bouwen. Tekenreeksinterpolatie voorkomt uitgebreid gebruik van tekenreekssamenvoeging wanneer parameters worden opgenomen in queryreeksen. Gebruik dubbele aanhalingstekens om letterlijke tekenreekstekst samen met expressies te plaatsen. U kunt expressiefuncties, kolommen en parameters opnemen. Als u de syntaxis van de expressie wilt gebruiken, plaatst u deze tussen accolades,

Enkele voorbeelden van tekenreeksinterpolatie:

  • "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"

Notitie

Wanneer u tekenreeksinterpolatiesyntaxis gebruikt in SQL-bronquery's, moet de querytekenreeks zich op één regel, zonder '/n'.

Expressies voor opmerkingen

Voeg opmerkingen toe aan uw expressies met behulp van de syntaxis voor opmerkingen met één regel en meerdere regels.

De volgende voorbeelden zijn geldige opmerkingen:

  • /* This is my comment */

  • /* This is a

  • multi-line comment */

Als u een opmerking boven aan de expressie plaatst, wordt deze weergegeven in het tekstvak transformatie om uw transformatie-expressies te documenteren.

Opmerking in het tekstvak voor transformatie

Reguliere expressies

Veel expressietaalfuncties gebruiken reguliere expressiesyntaxis. Wanneer u reguliere expressiefuncties gebruikt, probeert Opbouwfunctie voor expressies een backslash (\) te interpreteren als een escape-tekenreeks. Wanneer u backslashes in uw reguliere expressie gebruikt, plaatst u de hele regex in backticks (') of gebruikt u een dubbele backslash.

Een voorbeeld waarin backticks worden gebruikt:

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

Een voorbeeld waarin dubbele slashes worden gebruikt:

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

Sneltoetsen

Hieronder ziet u een lijst met sneltoetsen die beschikbaar zijn in de opbouwfunctie voor expressies. De meeste intelliSense-snelkoppelingen zijn beschikbaar bij het maken van expressies.

  • Ctrl+K Ctrl+C: Hele regel voor opmerkingen plaatsen.
  • Ctrl+K Ctrl+U: opmerking verwijderen.
  • F1: Help-opdrachten voor editors opgeven.
  • Alt+pijl-omlaag: De huidige regel omlaag verplaatsen.
  • Alt+pijl-omhoog: de huidige regel omhoog verplaatsen.
  • Ctrl+spatiebalk: Help voor context weergeven.

Veelgebruikte expressies

Converteren naar datums of tijdstempels

Als u letterlijke tekenreeksen wilt opnemen in de uitvoer van uw tijdstempel, verpakt u de conversie in toString().

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

Als u milliseconden van epoch wilt converteren naar een datum of tijdstempel, gebruikt u toTimestamp(<number of milliseconds>). Als de tijd binnen seconden komt, vermenigvuldigt u met 1000.

toTimestamp(1574127407*1000l)

De afsluitende 'l' aan het einde van de vorige expressie geeft een conversie aan naar een lang type als inlinesyntaxis.

Tijd zoeken uit tijdsperiode of Unix-tijd

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

Evaluatie van tijd van gegevensstroom

Gegevensstroom verwerkt tot milliseconden. Voor 2018-07-31T20:00:00.2170000 ziet u 2018-07-31T20:00:00.217 in uitvoer. In de portal voor de service wordt de tijdstempel weergegeven in de huidige browserinstelling, waardoor 217 kan worden geëlimineerd, maar wanneer u de gegevensstroom end-to-end uitvoert, wordt het onderdeel 217 (milliseconden ook verwerkt). U kunt toString (myDateTimeColumn) als expressie gebruiken en volledige precisiegegevens bekijken in preview. Verwerkt datum/tijd als datum/tijd in plaats van tekenreeks voor alle praktische doeleinden.

Begin met het bouwen van expressies voor gegevenstransformatie.