Surrogaatsleuteltransformatie 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 .
Gegevensstromen zijn beschikbaar in Zowel Azure Data Factory als Azure Synapse Pipelines. Dit artikel is van toepassing op toewijzingsgegevensstromen. Als u geen ervaring hebt met transformaties, raadpleegt u het inleidende artikel Gegevens transformeren met behulp van een toewijzingsgegevensstroom.
Gebruik de surrogaatsleuteltransformatie om een incrementele sleutelwaarde toe te voegen aan elke rij met gegevens. Dit is handig bij het ontwerpen van dimensietabellen in een analytisch gegevensmodel met een stervormig schema. In een stervormig schema vereist elk lid in uw dimensietabellen een unieke sleutel die een niet-zakelijke sleutel is.
Configuratie
Sleutelkolom: de naam van de gegenereerde surrogaatsleutelkolom.
Beginwaarde: de laagste sleutelwaarde die wordt gegenereerd.
Sleutels uit bestaande bronnen verhogen
Als u uw reeks wilt starten vanaf een waarde die in een bron bestaat, raden we u aan om een cache-sink te gebruiken om die waarde op te slaan en een afgeleide kolomtransformatie te gebruiken om de twee waarden samen te voegen. Gebruik een opzoekactie in de cache om de uitvoer op te halen en toe te voegen aan de gegenereerde sleutel. Meer informatie over cache-sinks en opzoekacties in de cache.
Verhogen van bestaande maximumwaarde
Als u de sleutelwaarde wilt seeden met het vorige maximum, zijn er twee technieken die u kunt gebruiken op basis van waar uw brongegevens zich bevinden.
Databasebronnen
Gebruik een SQL-queryoptie om MAX() te selecteren in uw bron. Bijvoorbeeld: Select MAX(<surrogateKeyName>) as maxval from <sourceTable>
.
Bestandsbronnen
Als uw vorige maximumwaarde zich in een bestand bevindt, gebruikt u de max()
functie in de statistische transformatie om de vorige maximumwaarde op te halen:
In beide gevallen moet u schrijven naar een cache-sink en de waarde opzoeken.
Script voor gegevensstroom
Syntaxis
<incomingStream>
keyGenerate(
output(<surrogateColumnName> as long),
startAt: <number>L
) ~> <surrogateKeyTransformationName>
Opmerking
Het script voor de gegevensstroom voor de bovenstaande surrogaatsleutelconfiguratie bevindt zich in het onderstaande codefragment.
AggregateDayStats
keyGenerate(
output(key as long),
startAt: 1L
) ~> SurrogateKey1
Gerelateerde inhoud
In deze voorbeelden worden de transformaties Join en Afgeleide kolommen gebruikt.