Esiste una trasformazione nel flusso di dati di mapping
SI APPLICA A: Azure Data Factory Azure Synapse Analytics
Suggerimento
Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!
I flussi di dati sono disponibili nelle pipeline sia di Azure Data Factory che di Azure Synapse. Questo articolo si applica ai flussi di dati per mapping. Se non si ha esperienza con le trasformazioni, vedere l'articolo introduttivo Trasformare i dati con un flusso di dati per mapping.
La trasformazione exists è una trasformazione di filtro delle righe che controlla se i dati esistono in un'altra origine o flusso. Il flusso di output include tutte le righe nel flusso di sinistra esistenti o che non esistono nel flusso di destra. La trasformazione exists è simile a SQL WHERE EXISTS
e SQL WHERE NOT EXISTS
.
Impostazione
- Scegliere il flusso di dati che si sta verificando nell'elenco a discesa Flusso destro .
- Specificare se si desidera che i dati esistano o non esistano nell'impostazione Tipo esistente .
- Selezionare se si vuole o meno un'espressione personalizzata.
- Scegliere le colonne chiave da confrontare in base alle condizioni esistenti. Per impostazione predefinita, il flusso di dati cerca l'uguaglianza tra una colonna per ogni flusso. Per eseguire il confronto tramite un valore calcolato, passare il puntatore del mouse sull'elenco a discesa della colonna e selezionare Colonna calcolata.
Più condizioni esistono
Per confrontare più colonne da ogni flusso, aggiungere una nuova condizione esistente facendo clic sull'icona con il segno più accanto a una riga esistente. Ogni condizione aggiuntiva viene unita da un'istruzione "and". Il confronto di due colonne è identico a quello dell'espressione seguente:
source1@column1 == source2@column1 && source1@column2 == source2@column2
Espressione personalizzata
Per creare un'espressione in formato libero contenente operatori diversi da "and" e "uguale a", selezionare il campo Espressione personalizzata . Immettere un'espressione personalizzata tramite il generatore di espressioni del flusso di dati facendo clic sulla casella blu.
Se si creano modelli dinamici nei flussi di dati usando il "binding tardivo" delle colonne tramite deviazione dello schema, è possibile usare la funzione di espressione per usare la byName()
trasformazione exists senza hardcoding (ad esempio l'associazione anticipata) i nomi delle colonne. Esempio: toString(byName('ProductNumber','source1')) == toString(byName('ProductNumber','source2'))
Ottimizzazione della trasmissione
Nella trasformazione di join, ricerche ed exists, se uno o entrambi i flussi di dati rientrano nella memoria del nodo di lavoro, è possibile ottimizzare le prestazioni abilitando la trasmissione. Per impostazione predefinita, il motore Spark deciderà automaticamente se trasmettere o meno un lato. Per scegliere manualmente il lato da trasmettere, selezionare Fisso.
Non è consigliabile disabilitare la trasmissione tramite l'opzione Off a meno che i join non siano in errore di timeout.
Script del flusso di dati
Sintassi
<leftStream>, <rightStream>
exists(
<conditionalExpression>,
negate: { true | false },
broadcast: { 'auto' | 'left' | 'right' | 'both' | 'off' }
) ~> <existsTransformationName>
Esempio
L'esempio seguente è una trasformazione esistente denominata checkForChanges
che accetta flusso sinistro NameNorm2
e flusso TypeConversions
destro. La condizione exists è l'espressione NameNorm2@EmpID == TypeConversions@EmpID && NameNorm2@Region == DimEmployees@Region
che restituisce true se entrambe le EMPID
colonne e Region
in ogni flusso corrispondono. Mentre stiamo controllando l'esistenza, negate
è false. Non è possibile abilitare alcuna trasmissione nella scheda Ottimizza, quindi broadcast
ha valore 'none'
.
Nell'esperienza dell'interfaccia utente questa trasformazione è simile all'immagine seguente:
Lo script del flusso di dati per questa trasformazione si trova nel frammento di codice seguente:
NameNorm2, TypeConversions
exists(
NameNorm2@EmpID == TypeConversions@EmpID && NameNorm2@Region == DimEmployees@Region,
negate:false,
broadcast: 'auto'
) ~> checkForChanges