Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
APPLICABILE A:
Azure Data Factory
Azure Synapse Analytics
Suggerimento
Data Factory in Microsoft Fabric è la nuova generazione di Azure Data Factory, con un'architettura più semplice, un'intelligenza artificiale predefinita e nuove funzionalità. Se non si ha familiarità con l'integrazione dei dati, iniziare con Fabric Data Factory. I carichi di lavoro di Azure Data Factory esistenti possono eseguire l'aggiornamento a Fabric per accedere a nuove funzionalità tra data science, analisi in tempo reale e creazione di report.
I flussi di dati sono disponibili sia nelle pipeline Azure Data Factory che nelle pipeline di Azure Synapse Analytics. Questo articolo si applica ai flussi di dati di mapping. Se non si ha familiarità con le trasformazioni, vedere l'articolo introduttivo Trasformare i dati usando flussi di dati di mapping.
Usare la trasformazione Alter Row per impostare criteri di inserimento, eliminazione, aggiornamento e upsert per le righe. È possibile aggiungere condizioni uno-a-molti come espressioni. È necessario specificare queste condizioni in ordine di priorità, poiché ogni riga viene contrassegnata con il criterio corrispondente alla prima espressione associata. Ognuna di queste condizioni può provocare l'inserimento, l'aggiornamento, l'eliminazione o l'inserimento/aggiornamento di una o più righe. Alter Row può produrre azioni DDL e DML sul database.
Le trasformazioni Alter Row operano solo su sink di database, REST o Azure Cosmos DB nel flusso di dati. Le azioni assegnate alle righe (inserimento, aggiornamento, eliminazione, upsert) non vengono eseguite durante le sessioni di debug. Per applicare le politiche di modifica delle righe nelle tabelle di database, eseguire l'attività 'Esegui Flusso di Dati' all'interno di una pipeline.
Nota
Non è necessaria una trasformazione Alter Row per i flussi di dati di Change Data Capture che usano origini CDC native, ad esempio SQL Server o SAP. In questi casi, ADF rileverà automaticamente il marcatore di riga in modo che i criteri Alter Row non siano necessari.
Specificare un criterio di riga predefinito
Creare una trasformazione Alter Row e specificare un criterio di riga con una condizione di true(). Ogni riga che non corrisponde a nessuna delle espressioni definite in precedenza è contrassegnata per i criteri di riga specificati. Per impostazione predefinita, ogni riga che non corrisponde ad alcuna espressione condizionale è contrassegnata per Insert.
Nota
Per contrassegnare tutte le righe con un criterio, è possibile creare una condizione per tale criterio e specificare la condizione come true().
Visualizzare i criteri nell'anteprima dei dati
Usare la modalità di debug per visualizzare i risultati dei criteri di modifica delle righe nel riquadro di anteprima dei dati. Un'anteprima dei dati di una trasformazione Alter Row non produce azioni DDL o DML sulla destinazione.
Un'icona per ogni criterio Alter Row indica se si verifica un'azione di inserimento, aggiornamento, upsert o eliminazione. L'intestazione mostra il numero di righe interessate da ciascun criterio nell'anteprima.
Consenti criteri Alter Row nel sink
Per il funzionamento dei criteri Alter Row, il flusso di dati deve scrivere in un sink di database o di Azure Cosmos DB. Nella scheda Impostazioni del sink abilitare i criteri Alter Row consentiti per tale sink.
Il comportamento predefinito consiste nel consentire solo gli inserimenti. Per consentire aggiornamenti, upsert o eliminazioni, selezionare la casella nel sink corrispondente alla condizione specifica. Se sono abilitati aggiornamenti, upsert o eliminazioni, è necessario specificare le colonne chiave nel sink con cui effettuare il confronto.
Nota
Se gli inserimenti, gli aggiornamenti o gli upsert modificano lo schema della tabella di destinazione nel sink, il flusso di dati avrà esito negativo. Per modificare lo schema di destinazione nel database, scegliere Ricrea tabella come azione di tabella. La tabella verrà eliminata e ricreata in base alla definizione del nuovo schema.
La trasformazione sink richiede una singola chiave o una serie di chiavi per l'identificazione di una riga univoca nel database di destinazione. Per i sink SQL, specificare le chiavi nella scheda delle impostazioni del sink. Per Azure Cosmos DB, specificare la chiave di partizione nelle impostazioni e impostare anche il campo di sistema "ID" di Azure Cosmos DB nel mapping del sink. Per Azure Cosmos DB, è obbligatorio includere la colonna di sistema "ID" per gli aggiornamenti, gli upsert e le eliminazioni.
Unioni e upsert con il database SQL di Azure e Azure Synapse
I flussi di dati supportano le fusioni con database SQL di Azure e il pool di database Azure Synapse (data warehouse) utilizzando l'opzione upsert.
Tuttavia, potresti incontrare scenari in cui lo schema del database di destinazione utilizza la proprietà "Identity" delle colonne chiave. Il servizio richiede di identificare le chiavi usate per trovare le corrispondenze con i valori di riga per gli aggiornamenti e gli upsert. Tuttavia, se la colonna di destinazione ha la proprietà Identity impostata e si usano i criteri upsert, il database di destinazione non consente di scrivere nella colonna. È anche possibile che si verifichino errori quando si tenta di eseguire l'upsert sulla colonna di distribuzione di una tabella distribuita.
Ecco alcuni modi per risolvere questo problema:
Passare alle impostazioni di trasformazione sink e impostare "Ignora scrittura colonne chiave". Ciò indica al servizio di non scrivere la colonna che hai selezionato come valore chiave per il mapping.
Se la colonna chiave non è la colonna che causa il problema per le colonne Identity, è possibile usare l'opzione SQL di pre-elaborazione della trasformazione Sink:
SET IDENTITY_INSERT tbl_content ON. Disattivarla quindi con la proprietà SQL post-elaborazione:SET IDENTITY_INSERT tbl_content OFF.Sia per il caso dell'identità che della colonna di distribuzione, è possibile passare dalla logica di upsert all'uso di una condizione di aggiornamento e di una condizione di inserimento separate usando una trasformazione di suddivisione condizionale. In questo modo, è possibile impostare il mapping nel percorso di aggiornamento per ignorare il mapping delle colonne chiave.
Script del flusso di dati
Sintassi
<incomingStream>
alterRow(
insertIf(<condition>?),
updateIf(<condition>?),
deleteIf(<condition>?),
upsertIf(<condition>?),
) ~> <alterRowTransformationName>
Esempio
L'esempio seguente è una trasformazione alter row denominata CleanData che accetta un flusso in ingresso SpecifyUpsertConditions e crea tre condizioni di modifica riga. Nella trasformazione precedente viene calcolata una colonna denominata alterRowCondition che determina se una riga viene inserita, aggiornata o eliminata nel database. Se il valore della colonna ha un valore stringa che corrisponde alla regola Alter Row, viene assegnato tale criterio.
Nell'interfaccia utente questa trasformazione è simile all'immagine seguente:
Lo script del flusso di dati per questa trasformazione si trova nel frammento di codice seguente:
SpecifyUpsertConditions alterRow(insertIf(alterRowCondition == 'insert'),
updateIf(alterRowCondition == 'update'),
deleteIf(alterRowCondition == 'delete')) ~> AlterRow
Contenuto correlato
Dopo la trasformazione Alter Row, è possibile eseguire il sink dei dati in un archivio dati di destinazione.