Copiare e trasformare i dati in Azure Synapse Analytics usando Azure Data Factory

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

In questo articolo viene illustrato come usare l'attività di copia in Azure Data Factory per copiare dati da e in Azure Synapse Analytics e come usare Flusso di dati per trasformare i dati in Azure Data Lake Storage Gen2. Per altre informazioni su Azure Data Factory, vedere l'articolo introduttivo.

Funzionalità supportate

Questo connettore di Azure Synapse Analytics è supportato per le attività seguenti:

Per l'attività di copia, questo connettore di Azure Synapse Analytics supporta le funzioni seguenti:

  • La copia di dati tramite l'autenticazione SQL e l'autenticazione token dell'applicazione Azure Active Directory (Azure AD) con entità servizio o identità gestite per le risorse di Azure.
  • Come origine, il recupero di dati tramite query SQL o stored procedure. È anche possibile scegliere di eseguire la copia parallela da un'origine Azure Synapse Analytics, vedere la sezione Copia parallela da Azure Synapse Analytics per informazioni dettagliate.
  • Come sink, caricare i dati usando l'istruzione PolyBase o COPY o l'inserimento bulk. È consigliabile usare l'istruzione PolyBase o COPY per migliorare le prestazioni di copia. Il connettore supporta anche la creazione automatica della tabella di destinazione se non esiste in base allo schema di origine.

Importante

Se si copiano dati usando Azure Data Factory Integration Runtime, configurare una regola del firewall a livello di server in modo che i servizi di Azure possano accedere al server SQL logico. Se si copiano dati usando un runtime di integrazione self-hosted, configurare il firewall per consentire l'intervallo IP appropriato. Questo intervallo include l'indirizzo IP del computer usato per connettersi ad Azure Synapse Analytics.

Introduzione

Suggerimento

Per ottenere prestazioni ottimali, usare l'istruzione PolyBase o COPY per caricare i dati Azure Synapse Analytics. L'istruzione Use PolyBase to load data into Azure Synapse Analytics and Use COPY to load data into Azure Synapse Analytics (Usare PolyBase per caricare i dati in Azure Synapse Analytics'istruzione COPY). Per una procedura dettagliata con un caso d'uso, vedere Caricare 1 TB di dati in Azure Synapse Analytics in meno di 15 minuti con Azure Data Factory.

Per eseguire l'attività di copia con una pipeline, è possibile usare uno degli strumenti o SDK seguenti:

Le sezioni seguenti forniscono informazioni dettagliate sulle proprietà che definiscono entità di Data Factory specifiche per un connettore di Azure Synapse Analytics.

Proprietà del servizio collegato

Per un servizio collegato ad Azure Synapse Analytics sono supportate le proprietà seguenti:

Proprietà Descrizione Obbligatoria
type La proprietà type deve essere impostata su AzureSqlDW.
connectionString Specificare le informazioni necessarie per connettersi all'istanza di Azure Synapse Analytics per la proprietà connectionString.
Contrassegnare questo campo come SecureString per archiviare la chiave in modo sicuro in Data Factory. È anche possibile inserire la password/chiave entità servizio in Azure Key Vault e, se si tratta dell'autenticazione SQL, estrarre la configurazione password dalla stringa di connessione. Vedere gli esempi JSON sotto la tabella e l'articolo Archiviare le credenziali in Azure Key Vault per altri dettagli.
servicePrincipalId Specificare l'ID client dell'applicazione. Sì, quando si usa l'autenticazione Azure AD con un'entità servizio.
servicePrincipalKey Specificare la chiave dell'applicazione. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro in Azure Data Factory oppure fare riferimento a un segreto archiviato in Azure Key Vault. Sì, quando si usa l'autenticazione Azure AD con un'entità servizio.
tenant Specificare le informazioni sul tenant (nome di dominio o ID tenant) in cui si trova l'applicazione. È possibile recuperarlo passando il cursore del mouse sull'angolo superiore destro del portale di Azure. Sì, quando si usa l'autenticazione Azure AD con un'entità servizio.
azureCloudType Per l'autenticazione dell'entità servizio, specificare il tipo di ambiente cloud di Azure in cui è Azure AD'applicazione.
I valori AzurePublic consentiti sono AzureChina , , AzureUsGovernment e AzureGermany . Per impostazione predefinita, viene data factory'ambiente cloud dell'utente.
No
connectVia Runtime di integrazione da usare per la connessione all'archivio dati. È possibile usare il runtime di integrazione di Azure o un runtime di integrazione self-hosted (se l'archivio dati si trova in una rete privata). Se non specificato, viene usato il runtime di integrazione di Azure predefinito. No

Per altri tipi di autenticazione, fare riferimento alle sezioni seguenti relative, rispettivamente, ai prerequisiti e agli esempi JSON:

Suggerimento

Quando si crea un servizio collegato per Azure Synapse pool SQL serverless dall'interfaccia utente, scegliere "Immettere manualmente" invece di esplorare la sottoscrizione.

Suggerimento

Se viene restituito l'errore con codice "UserErrorFailedToConnectToSqlServer" e un messaggio quale "Il limite di sessioni per il database è XXX ed è stato raggiunto.", aggiungere Pooling=false alla stringa di connessione e riprovare.

Autenticazione SQL

Esempio di servizio collegato tramite l'autenticazione SQL

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Password in Azure Key Vault:

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30",
            "password": {
                "type": "AzureKeyVaultSecret",
                "store": {
                    "referenceName": "<Azure Key Vault linked service name>",
                    "type": "LinkedServiceReference"
                },
                "secretName": "<secretName>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Autenticazione di un'entità servizio

Per usare l'autenticazione token dell'applicazione Azure AD basata sull'entità servizio, seguire questa procedura:

  1. Creare un'applicazione Azure Active Directory nel portale di Azure. Prendere nota del nome dell'applicazione e dei valori seguenti che definiscono il servizio collegato:

    • ID applicazione
    • Chiave applicazione
    • ID tenant
  2. Effettuare il provisioning Azure Active Directory amministratore del server nel portale di Azure se non è già stato fatto. L'amministratore di Azure AD può essere un utente di Azure AD o gruppo di Azure AD. Se si concede al gruppo con identità gestita un ruolo di amministratore, ignorare i passaggi 3 e 4. L'amministratore avrà accesso completo al database.

  3. Creare utenti del database indipendente per l'entità servizio. Connettersi al data warehouse da o in cui si vogliono copiare i dati usando strumenti come SSMS, con un'identità di Azure AD che abbia almeno l'autorizzazione ALTER ANY USER. Eseguire il codice T-SQL seguente:

    CREATE USER [your application name] FROM EXTERNAL PROVIDER;
    
  4. Concedere all'entità servizio le autorizzazioni necessarie, come si fa di norma per gli utenti SQL o altri utenti. Eseguire il codice seguente o vedere altre opzioni qui. Se si vuole usare PolyBase per caricare i dati, vedere le informazioni sull'autorizzazione necessaria per il database.

    EXEC sp_addrolemember db_owner, [your application name];
    
  5. Configurare un servizio collegato ad Azure Synapse Analytics in Azure Data Factory.

Esempio di servizio collegato tramite l'autenticazione basata su entità servizio

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<service principal key>"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Autenticazione di identità gestite per le risorse di Azure

Una data factory può essere associata a un'identità gestita per le risorse di Azure, che rappresenta la factory specifica. È possibile usare questa identità gestita per l'autenticazione di Azure Synapse Analytics. La factory designata può accedere ai dati e copiarli da o nel data warehouse tramite questa identità.

Per usare l'autenticazione tramite identità gestita, eseguire questa procedura:

  1. Effettuare il provisioning Azure Active Directory amministratore del server nel portale di Azure se non è già stato fatto. L'amministratore di Azure AD può essere un utente di Azure AD o gruppo di Azure AD. Se si concede al gruppo con identità gestita un ruolo di amministratore, ignorare i passaggi 3 e 4. L'amministratore avrà accesso completo al database.

  2. Creare utenti del database indipendente per l'identità gestita di Data Factory. Connettersi al data warehouse da o in cui si vogliono copiare i dati usando strumenti come SSMS, con un'identità di Azure AD che abbia almeno l'autorizzazione ALTER ANY USER. Eseguire il comando in T-SQL seguente.

    CREATE USER [your Data Factory name] FROM EXTERNAL PROVIDER;
    
  3. Concedere le autorizzazioni necessarie per l'identità gestita di Data Factory, come si fa normalmente per gli utenti SQL e altri utenti. Eseguire il codice seguente o vedere altre opzioni qui. Se si vuole usare PolyBase per caricare i dati, vedere le informazioni sull'autorizzazione necessaria per il database.

    EXEC sp_addrolemember db_owner, [your Data Factory name];
    
  4. Configurare un servizio collegato ad Azure Synapse Analytics in Azure Data Factory.

Esempio:

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Proprietà del set di dati

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione dei set di dati, vedere l'articolo Set di dati.

Per un set di dati di Azure Synapse Analytics sono supportate le proprietà seguenti:

Proprietà Descrizione Obbligatoria
type La proprietà type del set di dati deve essere impostata su AzureSqlDWTable.
schema Nome dello schema. No per l'origine, Sì per il sink
tabella Nome della tabella/vista. No per l'origine, Sì per il sink
tableName Nome della tabella/vista con schema. Questa proprietà è supportata per garantire la compatibilità con le versioni precedenti. Per i nuovi carichi di lavoro, usare schema e table. No per l'origine, Sì per il sink

Esempio di proprietà dei set di dati

{
    "name": "AzureSQLDWDataset",
    "properties":
    {
        "type": "AzureSqlDWTable",
        "linkedServiceName": {
            "referenceName": "<Azure Synapse Analytics linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        }
    }
}

Proprietà dell'attività di copia

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere l'articolo sulle pipeline. Questa sezione presenta un elenco delle proprietà supportate dall'origine e dal sink di Azure Synapse Analytics.

Azure Synapse Analytics come origine

Suggerimento

Per caricare i dati da Azure Synapse Analytics in modo efficiente usando il partizionamento dei dati, vedere Copia parallela da Azure Synapse Analytics.

Per copiare dati da Azure Synapse Analytics, impostare la proprietà type nell'origine dell'attività di copia su SqlDWSource. Nella sezione source dell'attività di copia sono supportate le proprietà seguenti:

Proprietà Descrizione Obbligatoria
type La proprietà type dell'origine dell'attività di copia deve essere impostata su SqlDWSource.
sqlReaderQuery Usare la query SQL personalizzata per leggere i dati. Esempio: select * from MyTable. No
sqlReaderStoredProcedureName Nome della stored procedure che legge i dati dalla tabella di origine. L'ultima istruzione SQL deve essere un'istruzione SELECT nella stored procedure. No
storedProcedureParameters Parametri per la stored procedure.
I valori consentiti sono coppie nome-valore. I nomi e le maiuscole e minuscole dei parametri devono corrispondere ai nomi e alle maiuscole e minuscole dei parametri della stored procedure.
No
isolationLevel Specifica il comportamento di blocco della transazione per l'origine SQL. I valori consentiti sono: ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Snapshot. Se non specificato, viene utilizzato il livello di isolamento predefinito del database. Per altre informazioni, vedere system.data.isolationlevel. No
partitionOptions Specifica le opzioni di partizionamento dei dati utilizzate per caricare i dati Azure Synapse Analytics.
I valori consentiti sono: None (impostazione predefinita), PhysicalPartitionsOfTable e DynamicRange.
Quando un'opzione di partizione è abilitata (ovvero non ), il grado di parallelismo per caricare contemporaneamente i dati da un Azure Synapse Analytics è controllato dall'impostazione None parallelCopies nell'attività di copia.
No
partitionSettings Specifica il gruppo di impostazioni per il partizionamento dei dati.
Applicare quando l'opzione di partizione non è None .
No
In partitionSettings :
partitionColumnName Specificare il nome della colonna di origine nel tipo integer o date/datetime ( , , , , , , o ) che verrà usato dal partizionamento dell'intervallo per la int smallint copia bigint date smalldatetime datetime datetime2 datetimeoffset parallela. Se non specificato, l'indice o la chiave primaria della tabella viene rilevata automaticamente e utilizzata come colonna di partizione.
Si applica quando l'opzione di partizione è DynamicRange. Se si usa una query per recuperare i dati di origine, eseguire l'hook ?AdfDynamicRangePartitionCondition nella clausola WHERE. Per un esempio, vedere la sezione Copia parallela dal database SQL.
No
partitionUpperBound Valore massimo della colonna di partizione per la suddivisione dell'intervallo di partizioni. Questo valore viene usato per decidere lo stride della partizione, non per filtrare le righe nella tabella. Tutte le righe nella tabella o nel risultato della query verranno partizionate e copiate. Se non specificato, l'attività di copia rileva automaticamente il valore.
Si applica quando l'opzione di partizione è DynamicRange. Per un esempio, vedere la sezione Copia parallela dal database SQL.
No
partitionLowerBound Valore minimo della colonna di partizione per la suddivisione dell'intervallo di partizioni. Questo valore viene usato per decidere lo stride della partizione, non per filtrare le righe nella tabella. Tutte le righe nella tabella o nel risultato della query verranno partizionate e copiate. Se non specificato, l'attività di copia rileva automaticamente il valore.
Si applica quando l'opzione di partizione è DynamicRange. Per un esempio, vedere la sezione Copia parallela dal database SQL.
No

Si noti il punto seguente:

  • Quando si usa stored procedure nell'origine per recuperare i dati, si noti che se il stored procedure è progettato per restituire uno schema diverso quando viene passato un valore di parametro diverso, è possibile che si verifichi un errore o venga visualizzato un risultato imprevisto durante l'importazione dello schema dall'interfaccia utente o quando si copiano dati nel database SQL con la creazione automatica di tabelle.

Esempio: uso della query SQL

"activities":[
    {
        "name": "CopyFromAzureSQLDW",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure Synapse Analytics input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlDWSource",
                "sqlReaderQuery": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Esempio: uso della stored procedure

"activities":[
    {
        "name": "CopyFromAzureSQLDW",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure Synapse Analytics input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlDWSource",
                "sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
                "storedProcedureParameters": {
                    "stringData": { "value": "str3" },
                    "identifier": { "value": "$$Text.Format('{0:yyyy}', <datetime parameter>)", "type": "Int"}
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Stored procedure di esempio:

CREATE PROCEDURE CopyTestSrcStoredProcedureWithParameters
(
    @stringData varchar(20),
    @identifier int
)
AS
SET NOCOUNT ON;
BEGIN
    select *
    from dbo.UnitTestSrcTable
    where dbo.UnitTestSrcTable.stringData != stringData
    and dbo.UnitTestSrcTable.identifier != identifier
END
GO

Azure Synapse Analytics come sink

Azure Data Factory supporta tre modi per caricare i dati in Azure Synapse Analytics.

Azure Synapse Analytics opzioni di copia sink

Il modo più rapido e scalabile per caricare i dati è tramite PolyBase o l'istruzione COPY.

Per copiare i dati Azure Synapse Analytics, impostare il tipo di sink in Attività di copia su SqlDWSink. Nella sezione sink dell'attività di copia sono supportate le proprietà seguenti:

Proprietà Descrizione Obbligatoria
type La proprietà type del sink dell'attività di copia deve essere impostata su SqlDWSink.
allowPolyBase Indica se usare PolyBase per caricare i dati in Azure Synapse Analytics. allowCopyCommand e allowPolyBase non possono essere entrambi true.

Per i vincoli e i dettagli, vedere Usare PolyBase per caricare Azure Synapse Analytics dati.

I valori consentiti sono True e False (predefinito).
No.
Applicare quando si usa PolyBase.
polyBaseSettings Gruppo di proprietà che è possibile specificare quando la proprietà allowPolybase è impostata su true. No.
Applicare quando si usa PolyBase.
allowCopyCommand Indica se usare l'istruzione COPY per caricare i dati Azure Synapse Analytics. allowCopyCommand e allowPolyBase non possono essere entrambi true.

Per i vincoli e i dettagli, vedere Usare l'istruzione COPY per Azure Synapse Analytics dati in una sezione.

I valori consentiti sono True e False (predefinito).
No.
Applicare quando si usa COPY.
copyCommandSettings Gruppo di proprietà che è possibile specificare quando la proprietà allowCopyCommand è impostata su TRUE. No.
Applicare quando si usa COPY.
writeBatchSize Numero di righe da inserire nella tabella SQL per batch.

Il valore consentito è integer (numero di righe). Per impostazione predefinita, Data Factory determina in modo dinamico le dimensioni del batch appropriate in base alle dimensioni della riga.
No.
Applicare quando si usa l'inserimento bulk.
writeBatchTimeout Tempo di attesa per il completamento dell'operazione di inserimento batch prima del timeout.

Il valore consentito è timespan. Esempio: "00:30:00" (30 minuti).
No.
Applicare quando si usa l'inserimento bulk.
preCopyScript Specificare una query SQL per l'esecuzione dell'attività di copia prima di scrivere i Azure Synapse Analytics in ogni esecuzione. Usare questa proprietà per pulire i dati precaricati. No
tableOption Specifica se creare automaticamente la tabella sink se non esiste in base allo schema di origine. I valori consentiti sono: none (impostazione predefinita), autoCreate. No
disableMetricsCollection Data Factory raccoglie metriche, ad esempio Azure Synapse Analytics DWU per l'ottimizzazione delle prestazioni di copia e raccomandazioni, che introducono l'accesso al database master aggiuntivo. Se questo comportamento non è desiderato, specificare true per disattivarlo. No (il valore predefinito è false)
maxConcurrentConnections Limite massimo di connessioni simultanee stabilite all'archivio dati durante l'esecuzione dell'attività. Specificare un valore solo quando si desidera limitare le connessioni simultanee. No

Azure Synapse Analytics sink di esempio

"sink": {
    "type": "SqlDWSink",
    "allowPolyBase": true,
    "polyBaseSettings":
    {
        "rejectType": "percentage",
        "rejectValue": 10.0,
        "rejectSampleValue": 100,
        "useTypeDefault": true
    }
}

Copia parallela da Azure Synapse Analytics

Il connettore Azure Synapse Analytics nell'attività di copia fornisce il partizionamento dei dati incorporato per copiare i dati in parallelo. Le opzioni di partizionamento dei dati sono disponibili nella scheda Origine dell'attività di copia.

Screenshot delle opzioni di partizione

Quando si abilita la copia partizionata, l'attività di copia esegue query parallele sull'origine Azure Synapse Analytics per caricare i dati in base alle partizioni. Il grado di parallelismo è controllato dall'impostazione parallelCopies sull'attività di copia. Ad esempio, se si imposta su quattro, Data Factory genera ed esegue contemporaneamente quattro query in base all'opzione di partizione e alle impostazioni specificate e ogni query recupera una parte di dati dal parallelCopies Azure Synapse Analytics.

È consigliabile abilitare la copia parallela con il partizionamento dei dati, soprattutto quando si caricano grandi quantità di dati dal Azure Synapse Analytics. Di seguito sono riportate le configurazioni consigliate per i diversi scenari: Quando si copiano dati in un archivio dati basato su file, è consigliabile scrivere in una cartella come più file (specificare solo il nome della cartella), nel qual caso le prestazioni sono migliori rispetto alla scrittura in un singolo file.

Scenario Impostazioni consigliate
Carico completo da tabelle di grandi dimensioni, con partizioni fisiche. Opzione di partizione: partizioni fisiche della tabella.

Durante l'Data Factory rileva automaticamente le partizioni fisiche e copia i dati in base alle partizioni.

Per verificare se la tabella include o meno una partizione fisica, è possibile fare riferimento a questa query.
Caricamento completo da tabelle di grandi dimensioni, senza partizioni fisiche, con una colonna integer o datetime per il partizionamento dei dati. Opzioni di partizione: Partizione a intervalli dinamici.
Colonna di partizione (facoltativo): specificare la colonna usata per partizionare i dati. Se non specificato, viene utilizzato l'indice o la colonna chiave primaria.
Limite superiore della partizione e limite inferiore della partizione (facoltativo): specificare se si vuole determinare lo stride della partizione. Questo non è necessario per filtrare le righe nella tabella, tutte le righe della tabella verranno partizionate e copiate. Se non specificato, l'attività di copia rileva automaticamente i valori.

Ad esempio, se la colonna di partizione "ID" ha valori da 1 a 100 e si imposta il limite inferiore su 20 e il limite superiore su 80, con copia parallela su 4, Data Factory recupera i dati da 4 partizioni - ID nell'intervallo <=20, [21, 50], [51, 80] e >=81, rispettivamente.
Caricare una grande quantità di dati usando una query personalizzata, senza partizioni fisiche, mentre con una colonna integer o date/datetime per il partizionamento dei dati. Opzioni di partizione: Partizione a intervalli dinamici.
Query: SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>.
Colonna di partizione: Specificare la colonna usata per partizionare i dati.
Limite superiore della partizione e limite inferiore della partizione (facoltativo): specificare se si vuole determinare lo stride della partizione. Non è per filtrare le righe nella tabella, tutte le righe nel risultato della query verranno partizionate e copiate. Se non specificato, l'attività di copia rileva automaticamente il valore.

Durante l'esecuzione, Data Factory con il nome della colonna e gli intervalli di valori effettivi per ogni partizione e li invia ?AdfRangePartitionColumnName Azure Synapse Analytics.
Ad esempio, se la colonna di partizione "ID" ha valori da 1 a 100 e si imposta il limite inferiore su 20 e il limite superiore su 80, con copia parallela su 4, Data Factory recupera i dati da 4 partizioni- ID nell'intervallo <=20, [21, 50], [51, 80] e >=81, rispettivamente.

Di seguito sono disponibili altre query di esempio per scenari diversi:
1. Eseguire una query sull'intera tabella:
SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition
2. Eseguire una query da una tabella con la selezione della colonna e filtri clausola where aggiuntivi:
SELECT <column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>
3. Eseguire query con sottoquery:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>
4. Eseguire query con la partizione nella sottoquery:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition) AS T

Procedure consigliate per caricare i dati con l'opzione di partizione:

  1. Scegliere colonna distintiva come colonna di partizione ,ad esempio chiave primaria o chiave univoca, per evitare l'avallata dei dati.
  2. Se la tabella include una partizione predefinita, usare l'opzione di partizione "Partizioni fisiche della tabella" per ottenere prestazioni migliori.
  3. Se si usa Azure Integration Runtime per copiare i dati, è possibile impostare " Unità di integrazione dati(DIU)" (>4) più grandi per usare più risorse di calcolo. Controllare gli scenari applicabili.
  4. " Grado diparallelismodi copia " controlla i numeri di partizione, impostando questo numero troppo grande in alcuni casi si danneggiano le prestazioni, è consigliabile impostare questo numero su (DIU o numero di nodi di IR self-hosted) * (da 2 a 4).
  5. Si Azure Synapse Analytics possibile eseguire un massimo di 32 query in un momento, l'impostazione di "Grado di parallelismo di copia" troppo grande può causare un problema di limitazione di Synapse.

Esempio: carico completo da tabelle di grandi dimensioni con partizioni fisiche

"source": {
    "type": "SqlDWSource",
    "partitionOption": "PhysicalPartitionsOfTable"
}

Esempio: query con partizione a intervalli dinamici

"source": {
    "type": "SqlDWSource",
    "query": "SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column (optional) to decide the partition stride, not as data filter>",
        "partitionLowerBound": "<lower_value_of_partition_column (optional) to decide the partition stride, not as data filter>"
    }
}

Query di esempio per controllare la partizione fisica

SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, c.name AS ColumnName, CASE WHEN c.name IS NULL THEN 'no' ELSE 'yes' END AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT JOIN sys.types AS y ON c.system_type_id = y.system_type_id
WHERE s.name='[your schema]' AND t.name = '[your table name]'

Se la tabella ha una partizione fisica, "HasPartition" viene visualizzato come "sì".

Usare PolyBase per caricare i dati in Azure Synapse Analytics

PolyBase consente di caricare in modo efficiente grandi quantità di dati in Azure Synapse Analytics con una velocità effettiva elevata. L'uso di PolyBase consente un miglioramento significativo della velocità effettiva rispetto al meccanismo BULKINSERT predefinito. Per una procedura dettagliata con un caso d'uso, vedere Caricare 1 TB di dati in Azure Synapse Analytics.

  • Se i dati di origine sono in BLOB di Azure, Azure Data Lake Storage Gen1 o Azure Data Lake Storage Gen2 e il formato è compatibile con PolyBase, è possibile usare l'attività di copia per richiamare direttamente PolyBase per consentire Azure Synapse Analytics il pull dei dati dall'origine. Per maggiori dettagli, vedere Copia diretta tramite PolyBase .
  • Se l'archivio e il formato dei dati di origine non sono supportati in origine da PolyBase, usare la funzionalità copia di staging tramite PolyBase . La funzionalità copia di staging assicura inoltre una migliore velocità effettiva, Converte automaticamente i dati in un formato compatibile con PolyBase, li archivia nell'archivio BLOB di Azure e quindi chiama PolyBase per caricare i dati in Azure Synapse Analytics.

Suggerimento

Per altre informazioni, vedere Procedure consigliate per l'uso di PolyBase. Quando si usa PolyBase con Azure Integration Runtime, le unità di integrazione dati (DIU) efficaci per l'archiviazione diretta o in gestione di gestione remota a Synapse sono sempre 2. L'ottimizzazione delle diu non influisce sulle prestazioni, perché il caricamento dei dati dall'archiviazione è basato sul motore Synapse.

Le impostazioni di PolyBase seguenti sono supportate in polyBaseSettings nell'attività di copia:

Proprietà Descrizione Obbligatoria
rejectValue Specifica il numero o la percentuale di righe che è possibile rifiutare prima che la query abbia esito negativo.

Per altre informazioni sulle opzioni di rifiuto di PolyBase, vedere la sezione Argomenti in CREATE EXTERNAL TABLE (Transact-SQL).

I valori consentiti sono 0 (predefinito), 1, 2 e così via.
No
rejectType Indica se l'opzione rejectValue viene specificata come valore letterale o come percentuale.

I valori consentiti sono Value (predefinito) e Percentage.
No
rejectSampleValue Determina il numero di righe da recuperare prima che PolyBase ricalcoli la percentuale di righe rifiutate.

I valori consentiti sono 1, 2 e così via.
Sì se rejectType è percentage.
useTypeDefault Specifica come gestire valori mancanti nei file di testo delimitato quando PolyBase recupera i dati dal file di testo.

Per altre informazioni su questa proprietà, vedere la sezione Arguments (Argomenti) in CREATE EXTERNAL FILE FORMAT (Transact-SQL).

I valori consentiti sono True e False (predefinito).

No

Copia diretta tramite PolyBase

Azure Synapse Analytics PolyBase supporta direttamente BLOB di Azure, Azure Data Lake Storage Gen1 e Azure Data Lake Storage Gen2. Se i dati di origine soddisfano i criteri descritti in questa sezione, usare PolyBase per copiare direttamente dall'archivio dati di origine ad Azure Synapse Analytics. In caso contrario, usare la copia di staging tramite PolyBase.

Suggerimento

Per copiare i dati in modo efficiente in Azure Synapse Analytics, altre informazioni sono disponibili in Azure Data Factory rende ancora più semplice e pratico individuare informazioni dettagliate dai dati quando si usa Data Lake Store con Azure Synapse Analytics.

Se i requisiti non vengono soddisfatti, Azure Data Factory controlla le impostazioni e usa automaticamente il meccanismo BULKINSERT per lo spostamento dei dati.

  1. Il servizio collegato all'origine ha i tipi e i metodi di autenticazione seguenti:

    Tipo di archivio dati di origine supportato Tipo di autenticazione di origine supportato
    BLOB di Azure Autenticazione della chiave dell'account, autenticazione tramite identità gestita
    Azure Data Lake Storage Gen1 Autenticazione di un'entità servizio
    Azure Data Lake Storage Gen2 Autenticazione della chiave dell'account, autenticazione tramite identità gestita

    Importante

    • Quando si usa l'autenticazione dell'identità gestita per il servizio collegato di archiviazione, vedere le configurazioni necessarie rispettivamente per BLOB Azure Data Lake Storage Gen2 Azure.
    • Se il Archiviazione di Azure è configurato con l'endpoint del servizio di rete virtuale, è necessario usare l'autenticazione dell'identità gestita con l'opzione "Consenti servizio Microsoft attendibile" abilitata nell'account di archiviazione. Vedere Impatto dell'uso degli endpoint del servizio di rete virtuale con Archiviazione di Azure.
  2. Il formato dei dati di origine è Parquet, ORC o Testo delimitato, con le configurazioni seguenti:

    1. Il percorso della cartella non contiene il filtro con caratteri jolly.
    2. Il nome file è vuoto o punta a un singolo file. Se si specifica il nome file con caratteri jolly nell'attività di copia, può essere solo * o *.*.
    3. rowDelimiter è impostazione predefinita, \n, \r\n o \r.
    4. nullValue è impostato sul valore predefinito o su una stringa vuota ("") e treatEmptyAsNull è impostato sul valore predefinito o su true.
    5. encodingName è impostato sul valore predefinito o su utf-8.
    6. quoteChar, escapeChar e skipLineCount non sono specificati. Il supporto di PolyBase ignora la riga di intestazione che può essere configurata come firstRowAsHeader in Azure Data Factory.
    7. compression può essere senza compressione, GZip o deflate.
  3. Se l'origine è una cartella, recursive nell'attività di copia deve essere impostato su true.

  4. wildcardFolderPath , wildcardFilename , , , , e non sono modifiedDateTimeStart modifiedDateTimeEnd prefix enablePartitionDiscovery additionalColumns specificati.

Nota

Se l'origine è una cartella, PolyBase recupera i file dalla cartella e da tutte le relative sottocartelle e non recupera i dati dai file il cui nome inizia con un carattere di sottolineatura (_) o un punto (.), come documentato nella sezione Argomenti in relazione all'argomento LOCATION.

"activities":[
    {
        "name": "CopyFromAzureBlobToSQLDataWarehouseViaPolyBase",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "ParquetDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "ParquetSource",
                "storeSettings":{
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                }
            },
            "sink": {
                "type": "SqlDWSink",
                "allowPolyBase": true
            }
        }
    }
]

Copia di staging tramite PolyBase

Quando i dati di origine non sono compatibili in modo nativo con PolyBase, abilitare la copia dei dati tramite un BLOB di Azure di staging provvisorio o Azure Data Lake Storage Gen2 (non può essere Azure Archiviazione Premium). In questo caso, Azure Data Factory converte automaticamente i dati in modo che soddisfino i requisiti di formato dei dati di PolyBase. Quindi richiama PolyBase per caricare i dati in Azure Synapse Analytics. Infine, pulisce i dati temporanei dall'archiviazione. Per informazioni dettagliate sulla copia dei dati tramite una gestione temporanea, vedere Copia a fasi.

Per usare questa funzionalità, creare un servizio collegato Archiviazione BLOB di Azure o un servizio collegato Azure Data Lake Storage Gen2 con la chiave dell'account o l'autenticazione dell'identità gestita che fa riferimento all'account di archiviazione di Azure come archiviazione provvisoria.

Importante

  • Quando si usa l'autenticazione dell'identità gestita per il servizio collegato di staging, apprendere le configurazioni necessarie rispettivamente per BLOB Azure Data Lake Storage Gen2 Azure.
  • Se il Archiviazione di Azure di staging è configurato con l'endpoint del servizio di rete virtuale, è necessario usare l'autenticazione dell'identità gestita con l'opzione "Consenti servizio Microsoft attendibile" abilitata nell'account di archiviazione. Vedere Impatto dell'uso degli endpoint del servizio di rete virtuale con Archiviazione di Azure.

Importante

Se il Archiviazione di Azure di staging è configurato con l'endpoint privato gestito e il firewall di archiviazione è abilitato, è necessario usare l'autenticazione dell'identità gestita e concedere le autorizzazioni di lettore dati blob di archiviazione al server Synapse SQL per assicurarsi che possa accedere ai file a fasi durante il caricamento di PolyBase.

"activities":[
    {
        "name": "CopyFromSQLServerToSQLDataWarehouseViaPolyBase",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "SQLServerDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlSource",
            },
            "sink": {
                "type": "SqlDWSink",
                "allowPolyBase": true
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingStorage",
                    "type": "LinkedServiceReference"
                }
            }
        }
    }
]

Procedure consigliate per l'uso di PolyBase

Le sezioni seguenti forniscono le procedure consigliate oltre a quelle indicate in Procedure consigliateper Azure Synapse Analytics .

Autorizzazione database obbligatoria

Per usare PolyBase, l'utente che carica i dati Azure Synapse Analytics deve avere l'autorizzazione "CONTROL" per il database di destinazione. Un modo per ottenere questo risultato consiste nell'aggiungere l'utente come membro del ruolo db_owner. Informazioni su come eseguire questa operazione sono Azure Synapse Analytics panoramica.

Limitazioni alle dimensioni delle righe e al tipo di dati

Le operazioni di caricamento di PolyBase sono limitate alle righe inferiori a 1 MB, e non è possibile usare PolyBase per caricare dati in VARCHR(MAX), NVARCHAR(MAX), or VARBINARY(MAX). Per altre informazioni, vedere Limiti Azure Synapse Analytics capacità del servizio.

Quando i dati di origine hanno righe di dimensioni superiori a 1 MB, è consigliabile suddividere verticalmente le tabelle di origine in tabelle più piccole. Assicurarsi che le dimensioni massime di ogni riga non superino il limite previsto. Le tabelle più piccole possono essere quindi caricate usando PolyBase e unite in Azure Synapse Analytics.

In alternativa, per i dati con colonne di grandi dimensioni, è possibile usare un'opzione diversa da PolyBase per caricare i dati tramite Azure Data Factory, disattivando l'impostazione "Allow PolyBase" (Consenti PolyBase).

Azure Synapse Analytics di risorse

Per ottenere la migliore velocità effettiva possibile, assegnare una classe di risorse più grande all'utente che carica i dati Azure Synapse Analytics tramite PolyBase.

Risoluzione dei problemi di PolyBase

Caricamento nella colonna Decimal

Se i dati di origine sono in formato testo o in altri archivi non compatibili con PolyBase (usando la copia di gestione di gestione delle fasi e PolyBase) e contengono un valore vuoto da caricare nella colonna decimale di Azure Synapse Analytics, è possibile che venga visualizzato l'errore seguente:

ErrorCode=FailedDbOperation, ......HadoopSqlException: Error converting data type VARCHAR to DECIMAL.....Detailed Message=Empty string can't be converted to DECIMAL.....

La soluzione consiste nel deselezionare l'opzione "Use type default" (Tipo di uso predefinito) (false) nel sink dell'attività di copia -> PolyBase Settings (Impostazioni PolyBase). "USE_TYPE_DEFAULT" è una configurazione nativa di PolyBase che specifica come gestire valori mancanti nei file di testo delimitato quando PolyBase recupera i dati dal file di testo.

Controllare la proprietà tableName in Azure Synapse Analytics

La tabella seguente fornisce alcuni esempi di come specificare la proprietà tableName nel set di dati JSON, mostrando diverse combinazioni di nomi di schema e di tabella.

Schema di database Nome tabella Proprietà JSON tableName
dbo MyTable MyTable o dbo.MyTable o [dbo].[MyTable]
dbo1 MyTable dbo1.MyTable o [dbo1].[MyTable]
dbo My.Table [My.Table] o [dbo].[My.Table]
dbo1 My.Table [dbo1].[My.Table]

Se viene visualizzato l'errore seguente, il problema potrebbe essere costituito dal valore specificato per la proprietà tableName. Per informazioni sul modo corretto di specificare i valori per la proprietà JSON tableName, vedere la tabella precedente.

Type=System.Data.SqlClient.SqlException,Message=Invalid object name 'stg.Account_test'.,Source=.Net SqlClient Data Provider

Colonne con valori predefiniti

Attualmente, la funzionalità PolyBase in Data Factory accetta solo lo stesso numero di colonne disponibili nella tabella di destinazione. Nel caso di una tabella con quattro colonne di cui una definita con un valore predefinito, ad esempio, i dati di input devono comunque contenere quattro colonne. Un set di dati di input con tre colonne restituisce un errore simile al messaggio seguente:

All columns of the table must be specified in the INSERT BULK statement.

Il valore NULL è una forma speciale di valore predefinito. Se la colonna ammette valori Null, i dati di input nel BLOB per tale colonna possono essere vuoti, ma non possono essere mancanti dal set di dati di input. PolyBase inserisce NULL per i valori mancanti in Azure Synapse Analytics.

Accesso al file esterno non riuscito

Se viene visualizzato l'errore seguente, assicurarsi di usare l'autenticazione dell'identità gestita e di aver concesso le autorizzazioni di lettore dei dati dei BLOB di archiviazione all'identità gestita dell'area di lavoro Azure Synapse archiviazione.

Job failed due to reason: at Sink '[SinkName]': shaded.msdataflow.com.microsoft.sqlserver.jdbc.SQLServerException: External file access failed due to internal error: 'Error occurred while accessing HDFS: Java exception raised on call to HdfsBridge_IsDirExist. Java exception message:\r\nHdfsBridge::isDirExist 

Per altre informazioni, vedere Concedere le autorizzazioni all'identità gestita dopo la creazione dell'area di lavoro.

Usare l'istruzione COPY per caricare i dati Azure Synapse Analytics

Azure Synapse Analytics'istruzione COPY supporta direttamente il caricamento di dati dal BLOB di Azure Azure Data Lake Storage Gen2. Se i dati di origine soddisfano i criteri descritti in questa sezione, è possibile scegliere di usare l'istruzione COPY in AdF per caricare i dati in Azure Synapse Analytics. Azure Data Factory controlla le impostazioni e, se i criteri non vengono soddisfatti, l'esecuzione dell'attività di copia non riesce.

Nota

Attualmente Data Factory supporta la copia solo dalle origini compatibili con l'istruzione COPY indicate di seguito.

Suggerimento

Quando si usa l'istruzione COPY Azure Integration Runtime, le unità di integrazione dati effettive (DIU) sono sempre 2. L'ottimizzazione delle diu non influisce sulle prestazioni, perché il caricamento dei dati dall'archiviazione è basato sul motore Synapse.

L'uso dell'istruzione COPY supporta la configurazione seguente:

  1. Il servizio collegato all'origine e il formato hanno i tipi e i metodi di autenticazione seguenti:

    Tipo di archivio dati di origine supportato Formato supportato Tipo di autenticazione di origine supportato
    BLOB di Azure Testo delimitato Autenticazione della chiave dell'account, autenticazione con firma di accesso condiviso, autenticazione basata su entità servizio, autenticazione tramite identità gestita
      Parquet Autenticazione della chiave dell'account, autenticazione con firma di accesso condiviso
      ORC Autenticazione della chiave dell'account, autenticazione con firma di accesso condiviso
    Azure Data Lake Storage Gen2 Testo delimitato
    Parquet
    ORC
    Autenticazione della chiave dell'account, autenticazione basata su entità servizio, autenticazione tramite identità gestita

    Importante

    • Quando si usa l'autenticazione dell'identità gestita per il servizio collegato di archiviazione, vedere le configurazioni necessarie rispettivamente per BLOB Azure Data Lake Storage Gen2 Azure.
    • Se il Archiviazione di Azure è configurato con l'endpoint del servizio di rete virtuale, è necessario usare l'autenticazione dell'identità gestita con l'opzione "Consenti servizio Microsoft attendibile" abilitata nell'account di archiviazione. Vedere Impatto dell'uso degli endpoint del servizio di rete virtuale con Archiviazione di Azure.
  2. Le impostazioni del formato sono le seguenti:

    1. Per Parquet: compression può essere senza compressione, Snappy o GZip .
    2. Per ORC: compression può essere no compression, zlib o Snappy.
    3. Per Testo delimitato:
      1. rowDelimiter è impostato in modo esplicito come single character o " \r\n", il valore predefinito non è supportato.
      2. nullValue è impostato sul valore predefinito o su empty string ("").
      3. encodingName è impostato sul valore predefinito o su utf-8 o utf-16.
      4. escapeChar deve essere uguale a quoteChar e non è vuoto.
      5. skipLineCount è impostato sul valore predefinito o su 0.
      6. compression può essere senza compressione o GZip .
  3. Se l'origine è una cartella, recursive nell'attività di copia deve essere impostato su true e wildcardFilename deve essere *.

  4. wildcardFolderPath , wildcardFilename (diverso da * ), , , e non sono modifiedDateTimeStart modifiedDateTimeEnd prefix enablePartitionDiscovery additionalColumns specificati.

Le impostazioni dell'istruzione COPY seguenti sono supportate in allowCopyCommand nell'attività di copia:

Proprietà Descrizione Obbligatoria
defaultValues Specifica i valori predefiniti per ogni colonna di destinazione in Azure Synapse Analytics. I valori predefiniti nella proprietà sovrascrivono il vincolo DEFAULT impostato nel data warehouse e la colonna Identity non può avere un valore predefinito. No
additionalOptions Opzioni aggiuntive che verranno passate a un Azure Synapse Analytics'istruzione COPY direttamente nella clausola "With" nell'istruzione COPY. Racchiudere il valore tra virgolette come previsto dai requisiti dell'istruzione COPY. No
"activities":[
    {
        "name": "CopyFromAzureBlobToSQLDataWarehouseViaCOPY",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "ParquetDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "ParquetSource",
                "storeSettings":{
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                }
            },
            "sink": {
                "type": "SqlDWSink",
                "allowCopyCommand": true,
                "copyCommandSettings": {
                    "defaultValues": [
                        {
                            "columnName": "col_string",
                            "defaultValue": "DefaultStringValue"
                        }
                    ],
                    "additionalOptions": {
                        "MAXERRORS": "10000",
                        "DATEFORMAT": "'ymd'"
                    }
                }
            },
            "enableSkipIncompatibleRow": true
        }
    }
]

Proprietà del flusso di dati per mapping

Durante la trasformazione dei dati in un flusso di dati per mapping è possibile leggere e scrivere in tabelle di Azure Synapse Analytics. Per altre informazioni, vedere la trasformazione origine e la trasformazione sink nei flussi di dati per mapping.

Trasformazione origine

Le impostazioni specifiche di Azure Synapse Analytics sono disponibili nella scheda Source Options (Opzioni origine) della trasformazione origine.

Input Scegliere se puntare l'origine a una tabella (equivalente a ) o Select * from <table-name> immettere una query SQL personalizzata.

Abilitare la gestione temporanea È consigliabile usare questa opzione nei carichi di lavoro di produzione con Azure Synapse Analytics origini. Quando si esegue un'attività flusso di dati con origini Azure Synapse Analytics da una pipeline, ADF richiederà un account di archiviazione del percorso di staging e lo userà per il caricamento dei dati in fasi. È il meccanismo più rapido per caricare i dati da Azure Synapse Analytics.

  • Quando si usa l'autenticazione dell'identità gestita per il servizio collegato di archiviazione, apprendere le configurazioni necessarie rispettivamente per BLOB Azure Data Lake Storage Gen2 Azure.
  • Se il Archiviazione di Azure è configurato con l'endpoint del servizio di rete virtuale, è necessario usare l'autenticazione dell'identità gestita con l'opzione "Consenti servizio Microsoft attendibile" abilitata nell'account di archiviazione. Vedere Impatto dell'uso degli endpoint del servizio di rete virtuale con Archiviazione di Azure.
  • Quando si usa Azure Synapse pool SQL serverless come origine, l'abilitazione dello staging non è supportata.

Query: se si seleziona Query nel campo di input, immettere una query SQL per l'origine. Questa impostazione esegue l'override di qualsiasi tabella scelta nel set di dati. Le clausole Order By non sono supportate, ma è possibile impostare un'istruzione SELECT FROM completa. È possibile usare anche funzioni di tabella definite dall'utente. select * from udfGetData() è un UDF in SQL che restituisce una tabella. Questa query produrrà una tabella di origine che può essere usata nel flusso di dati. L'uso di query è anche un ottimo modo per ridurre le righe per i test o le ricerche.

Esempio SQL: Select * from MyTable where customerId > 1000 and customerId < 2000

Dimensioni batch: Immettere una dimensione batch per suddividere dati di grandi dimensioni in letture. Nei flussi di dati, Azure Data Factory userà questa impostazione per impostare la memorizzazione nella cache a colonne Spark. Si tratta di un campo di opzione, che userà le impostazioni predefinite di Spark se viene lasciato vuoto.

Livello di isolamento: Il valore predefinito per le origini SQL nel flusso di dati per mapping è Read Uncommitted. È possibile cambiare il livello di isolamento in uno dei valori seguenti:

  • Read Committed
  • Read Uncommitted
  • Repeatable Read
  • Serializable
  • None (ignora il livello di isolamento)

Livello di isolamento

Trasformazione sink

Le impostazioni specifiche di Azure Synapse Analytics sono disponibili nella scheda Impostazioni della trasformazione sink.

Update method (Metodo di aggiornamento): determina le operazioni consentite nella destinazione del database. Per impostazione predefinita, sono consentiti solo gli inserimenti. Per eseguire operazioni di aggiornamento, upsert o eliminazione di righe, è necessaria una trasformazione alter-row che applichi alle righe i tag corrispondenti alle azioni. Per le operazioni di aggiornamento, upsert ed eliminazione è necessario impostare una o più colonne chiave per determinare quale riga modificare.

Table action (Azione tabella): determina se ricreare o rimuovere tutte le righe dalla tabella di destinazione prima della scrittura.

  • None (Nessuna): non verrà eseguita alcuna azione sulla tabella.
  • Recreate table (Ricrea tabella): la tabella verrà eliminata e ricreata. Questa opzione è obbligatoria se si crea una nuova tabella in modo dinamico.
  • Truncate table (Tronca tabella): verranno rimosse tutte le righe della tabella di destinazione.

Abilitare la gestione temporanea: Ciò consente il caricamento Azure Synapse Analytics pool SQL usando il comando copy ed è consigliato per la maggior parte dei sink Synpase. L'archiviazione di staging è configurata in Esegui Flusso di dati attività.

  • Quando si usa l'autenticazione dell'identità gestita per il servizio collegato di archiviazione, vedere le configurazioni necessarie rispettivamente per BLOB Azure Data Lake Storage Gen2 Azure.
  • Se il Archiviazione di Azure è configurato con l'endpoint servizio di rete virtuale, è necessario usare l'autenticazione dell'identità gestita con l'opzione "Consenti servizio Microsoft attendibile" abilitata nell'account di archiviazione. Vedere Impatto dell'uso degli endpoint di servizio di rete virtuale con Archiviazione di Azure.

Dimensioni batch: controlla il numero di righe scritte in ogni bucket. Dimensioni batch più grandi migliorano l'ottimizzazione della compressione e della memoria, ma rischiano di causare eccezioni di memoria insufficiente durante la memorizzazione nella cache dei dati.

Pre and Post SQL scripts (Pre-script e post-script SQL): immettere script SQL a più righe che verranno eseguiti prima (pre-elaborazione) e dopo (post-elaborazione) la scrittura dei dati nel database sink.

Script di pre-elaborazione e post-elaborazione

Gestione delle righe con errori

Durante la scrittura Azure Synapse Analytics, alcune righe di dati potrebbero non riuscire a causa dei vincoli impostati dalla destinazione. Alcuni errori comuni includono:

  • I dati stringa o binari vengono troncati nella tabella
  • Impossibile inserire il valore NULL nella colonna
  • Conversione non riuscita durante la conversione del valore nel tipo di dati

Per impostazione predefinita, l'esecuzione di un flusso di dati avrà esito negativo in caso di primo errore. È possibile scegliere Continua in caso di errore per consentire il completamento del flusso di dati anche se si verificano errori nelle singole righe. Azure Data Factory offre diverse opzioni per la gestione di queste righe di errore.

Commit transazione: Scegliere se i dati vengono scritti in una singola transazione o in batch. Una singola transazione offre prestazioni migliori e nessun dato scritto sarà visibile ad altri utenti fino al completamento della transazione. Le transazioni batch hanno prestazioni peggiori, ma possono funzionare per set di dati di grandi dimensioni.

Output dei dati rifiutati: Se abilitata, è possibile eseguire l'output delle righe di errore in un file CSV Archiviazione BLOB di Azure o un account Azure Data Lake Storage Gen2 di propria scelta. Le righe di errore verranno così inserite con tre colonne aggiuntive: l'operazione SQL, ad esempio INSERT o UPDATE, il codice di errore del flusso di dati e il messaggio di errore nella riga.

Segnala l'esito positivo in base all'errore: Se abilitata, il flusso di dati verrà contrassegnato come operazione riuscita anche se vengono trovate righe di errore.

Screenshot che mostra la gestione delle righe di errore

Proprietà dell'attività Lookup

Per altre informazioni sulle proprietà, vedere Attività Lookup.

Proprietà dell'attività GetMetadata

Per altre informazioni sulle proprietà, vedere Attività GetMetadata

Mapping dei tipi di dati per Azure Synapse Analytics

Quando si copiano i dati da o in Azure Synapse Analytics, vengono usati i mapping seguenti dai tipi di dati di Azure Synapse Analytics ai tipi di dati provvisori di Azure Data Factory. Vedere Mapping dello schema e del tipo di dati per informazioni su come l'attività di copia esegue il mapping dello schema di origine e del tipo di dati al sink.

Suggerimento

Vedere l'articolo Tipi di dati Azure Synapse Analytics tabella Azure Synapse Analytics tipi di dati supportati e le soluzioni alternative per quelle non supportate.

Tipo di dati di Azure Synapse Analytics Tipo di dati provvisorio di Data Factory
bigint Int64
BINARY Byte[]
bit Boolean
char String, Char[]
Data Datetime
Datetime Datetime
datetime2 Datetime
Datetimeoffset DateTimeOffset
Decimal Decimal
FILESTREAM attribute (varbinary(max)) Byte[]
Float Double
image Byte[]
INT Int32
money Decimal
NCHAR String, Char[]
NUMERIC Decimal
NVARCHAR String, Char[]
real Single
rowversion Byte[]
smalldatetime Datetime
SMALLINT Int16
SMALLMONEY Decimal
time TimeSpan
TINYINT Byte
UNIQUEIDENTIFIER Guid
varbinary Byte[]
varchar String, Char[]

Passaggi successivi

Per un elenco degli archivi dati supportati come origini o sink dall'attività di copia in Azure Data Factory, vedere Archivi dati e formati supportati.