Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
APLICA-SE A:
Azure Data Factory
Azure Synapse Analytics
Gorjeta
Data Factory em Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA incorporada e novas funcionalidades. Se és novo na integração de dados, começa pelo Fabric Data Factory. As cargas de trabalho existentes do ADF podem atualizar para o Fabric para aceder a novas capacidades em ciência de dados, análise em tempo real e relatórios.
Este artigo descreve como usar a Copy Activity no Azure Data Factory ou em pipelines do Synapse para copiar dados de e para o Azure Synapse Analytics, e usar o Fluxo de Dados para transformar dados no Azure Data Lake Storage Gen2. Para saber mais sobre Azure Data Factory, leia o artigo introdutório.
Capacidades suportadas
Este conector Azure Synapse Analytics é suportado para as seguintes capacidades:
| Capacidades suportadas | IR | Ponto de extremidade privado gerido |
|---|---|---|
| atividade Copy (fonte/sumidouro) | (1) (2) | ✓ |
| Mapeando o fluxo de dados (origem/destino) | (1) | ✓ |
| Atividade de Pesquisa | (1) (2) | ✓ |
| Atividade GetMetadata | (1) (2) | ✓ |
| Atividade de script | (1) (2) | ✓ |
| Atividade de procedimento armazenado | (1) (2) | ✓ |
(1) Runtime de integração Azure (2) Runtime de integração auto-hospedado
Para atividade Copy, este conector Azure Synapse Analytics suporta estas funções:
- Copie dados usando autenticação SQL Server e autenticação por token da aplicação Microsoft Entra com um principal de serviço ou identidades geridas para recursos da Azure.
- Como fonte, recupere dados usando uma consulta SQL ou um procedimento armazenado. Também pode optar por copiar paralelamente de uma fonte Azure Synapse Analytics, veja a secção Cópia paralela de Azure Synapse Analytics para mais detalhes.
- Como um destino de dados, carregue dados usando a instrução COPY ou PolyBase ou inserção em massa. Recomendamos a instrução COPY ou o PolyBase para um melhor desempenho de cópia. O conector também suporta a criação automática de uma tabela de destino com DISTRIBUTION = ROUND_ROBIN, caso não exista, com base no esquema de origem.
Importante
Se copiar dados usando um Azure Integration Runtime, configure uma regra de firewall ao nível do servidor para que os serviços Azure possam aceder ao servidor SQL lógico. Se copiar dados usando um runtime de integração auto-hospedado, configure o firewall para permitir o intervalo de IP apropriado. Este intervalo inclui o IP da máquina que é usado para se ligar ao Azure Synapse Analytics.
Introdução
Gorjeta
Para obter o melhor desempenho, utilize a instrução PolyBase ou COPY para carregar dados no Azure Synapse Analytics. As secções Use PolyBase para carregar dados em Azure Synapse Analytics e Use COPY para carregar dados em Azure Synapse Analytics têm detalhes. Para um guia com um caso de uso, veja Carregar 1 TB em Azure Synapse Analytics em menos de 15 minutos com Azure Data Factory.
Para executar a atividade de cópia com um pipeline, você pode usar uma das seguintes ferramentas ou SDKs:
- Ferramenta Copiar dados
- Portal do Azure
- .NET SDK
- Python SDK
- Azure PowerShell
- API REST
- Modelo do Azure Resource Manager
Crie um serviço ligado ao Azure Synapse Analytics usando UI
Use os seguintes passos para criar um serviço ligado ao Azure Synapse Analytics na interface do portal Azure.
Navegue até ao separador Gerir no seu espaço de trabalho Azure Data Factory ou Synapse e selecione Serviços Ligados, depois clique em Novo:
Procure por Synapse e selecione o conector Azure Synapse Analytics.
Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.
Detalhes de configuração do conector
As secções seguintes fornecem detalhes sobre as propriedades que definem as entidades de pipeline do Data Factory e do Synapse específicas para um conector do Azure Synapse Analytics.
Propriedades do serviço vinculado
A versão do conector Azure Synapse Analytics Recommended suporta TLS 1.3. Consulte esta secção para atualizar a versão do seu conector Azure Synapse Analytics a partir do Legacy. Para obter os detalhes da propriedade, consulte as seções correspondentes.
Gorjeta
Ao criar um serviço ligado para um pool SQL serverless no Azure Synapse através do portal do Azure:
- Para Método de seleção de conta, escolha Enter manualmente.
- Cole o nome de domínio totalmente qualificado do endpoint sem servidor. Pode encontrar isto na página de Visão Geral do portal Azure para o seu espaço de trabalho Synapse, nas propriedades em Serverless SQL endpoint. Por exemplo,
myserver-ondemand.sql-azuresynapse.net. - Para Nome do banco de dados, forneça o nome do banco de dados no pool SQL sem servidor.
Gorjeta
Se encontrares erro com código de erro como "UserErrorFailedToConnectToSqlServer" e mensagens como "O limite de sessão da base de dados é XXX e foi atingido.", adiciona Pooling=false ao teu cadeia de ligação e tenta novamente.
Versão recomendada
Estas propriedades genéricas são suportadas para um serviço ligado ao Azure Synapse Analytics ao aplicar a versão Recommended:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type deve ser definida como AzureSqlDW. | Sim |
| servidor | O nome ou endereço de rede da instância do SQL Server à qual você deseja se conectar. | Sim |
| base de dados | O nome do banco de dados. | Sim |
| tipoDeAutenticação | O tipo usado para autenticação. Os valores permitidos são SQL (padrão), ServicePrincipal, SystemAssignedManagedIdentity, UserAssignedManagedIdentity. Vá para a seção de autenticação relevante sobre propriedades e pré-requisitos específicos. | Sim |
| cifrar | Indique se a criptografia TLS é necessária para todos os dados enviados entre o cliente e o servidor. Opções: obrigatório (para verdadeiro, padrão)/opcional (para falso)/estrito. | Não |
| confiarNaCertificaçãoDoServidor | Indique se o canal será criptografado enquanto ignora a cadeia de certificados para validar a confiança. | Não |
| hostNameInCertificate | O nome do host a ser usado ao validar o certificado do servidor para a conexão. Quando não especificado, o nome do servidor é usado para validação de certificado. | Não |
| conectarVia | O runtime de integração a ser usado para se conectar ao armazenamento de dados. Pode usar Azure Integration Runtime ou um runtime de integração auto-hospedado (se o seu armazenamento de dados estiver localizado numa rede privada). Se não for especificado, usa o Azure Integration Runtime padrão. | Não |
Para obter propriedades de conexão adicionais, consulte a tabela abaixo:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| applicationIntent | O tipo de carga de trabalho do aplicativo ao se conectar a um servidor. Os valores permitidos são ReadOnly e ReadWrite. |
Não |
| connectTimeout | O período de tempo (em segundos) para aguardar uma conexão com o servidor antes de encerrar a tentativa e gerar um erro. | Não |
| connectRetryCount | O número de reconexões tentadas após a identificação de uma falha de conexão inativa. O valor deve ser um número inteiro entre 0 e 255. | Não |
| connectRetryInterval | A quantidade de tempo (em segundos) entre cada tentativa de reconexão após a identificação de uma falha de conexão ociosa. O valor deve ser um número inteiro entre 1 e 60. | Não |
| loadBalanceTimeout | O tempo mínimo (em segundos) para a conexão viver no pool de conexões antes que a conexão seja destruída. | Não |
| tempo de espera do comando | O tempo de espera padrão (em segundos) antes de encerrar a tentativa de executar um comando e gerar um erro. | Não |
| Segurança integrada | Os valores permitidos são true ou false. Ao especificar false, indique se userName e password estão especificados na conexão. Ao especificar true, indica se as credenciais atuais da conta Windows são usadas para autenticação. |
Não |
| failover partner | O nome ou endereço do servidor parceiro ao qual se conectar se o servidor primário estiver inativo. | Não |
| tamanhoMáximoDoPool | O número máximo de conexões permitido no pool de conexões para a conexão específica. | Não |
| minPoolSize | O número mínimo de conexões permitidas no pool de conexões para a conexão específica. | Não |
| multipleActiveResultSets | Os valores permitidos são true ou false. Quando você especifica true, um aplicativo pode manter vários conjuntos de resultados ativos (MARS). Quando você especifica false, um aplicativo deve processar ou cancelar todos os conjuntos de resultados de um lote antes de poder executar quaisquer outros lotes nessa conexão. |
Não |
| multiSubnetFailover | Os valores permitidos são true ou false. Se o seu aplicativo estiver a conectar-se a um grupo de disponibilidade AlwaysOn (AG) em sub-redes diferentes, ao definir esta propriedade para true, proporciona uma detecção e conexão mais rápidas com o servidor atualmente ativo. |
Não |
| tamanhoDoPacote | O tamanho em bytes dos pacotes de rede usados para se comunicar com uma instância do servidor. | Não |
| Agrupamento | Os valores permitidos são true ou false. Quando você especificar true, a conexão será agrupada. Quando você especificar false, a conexão será aberta explicitamente toda vez que a conexão for solicitada. |
Não |
Autenticação do SQL
Para usar a autenticação SQL, além das propriedades genéricas descritas na seção anterior, especifique as seguintes propriedades:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| nome de utilizador | O nome de usuário usado para se conectar ao servidor. | Sim |
| palavra-passe | A senha para o nome de usuário. Marque este campo como SecureString para armazená-lo com segurança. Ou pode referenciar um segredo armazenado em Azure Key Vault. | Sim |
Exemplo: usando a autenticação SQL
{
"name": "AzureSqlDWLinkedService",
"properties": {
"type": "AzureSqlDW",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"authenticationType": "SQL",
"userName": "<user name>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Exemplo: palavra-passe em Azure Key Vault
{
"name": "AzureSqlDWLinkedService",
"properties": {
"type": "AzureSqlDW",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"authenticationType": "SQL",
"userName": "<user name>",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Autenticação do principal de serviço
Para usar a autenticação do principal de serviço, além das propriedades genéricas descritas na seção anterior, especifique as seguintes propriedades:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| servicePrincipalId | Especifique o ID do cliente do aplicativo. | Sim |
| servicePrincipalCredential | A credencial do principal de serviço. Especifique a chave do aplicativo. Marque este campo como SecureString para o armazenar de forma segura, ou reference um segredo guardado em Azure Key Vault. | Sim |
| inquilino | Especifique as informações do locatário (nome de domínio ou ID do locatário) sob as quais seu aplicativo reside. Pode recuperá-lo ao passar o cursor no canto superior direito do Portal do Azure. | Sim |
| azureCloudType | Para a autenticação de entidade de serviço, especifique o tipo de ambiente Azure de nuvem onde a sua aplicação Microsoft Entra está registada. Os valores permitidos são AzurePublic, AzureChina, AzureUsGovernmente AzureGermany. Por padrão, a fábrica de dados ou o ambiente de nuvem do pipeline Synapse é usado. |
Não |
Você também precisa seguir os passos abaixo:
Criar uma aplicação Microsoft Entra a partir do portal Azure. Anote o nome do aplicativo e os seguintes valores que definem o serviço vinculado:
- ID da aplicação
- Chave de aplicação
- ID de Locatário
Provisiona um administrador de Microsoft Entra para o teu servidor no portal Azure, caso ainda não o tenhas feito. O administrador da Microsoft Entra pode ser um utilizador da Microsoft Entra ou um grupo da Microsoft Entra. Se você conceder ao grupo com identidade gerenciada uma função de administrador, ignore as etapas 3 e 4. O administrador terá acesso total à base de dados.
Crie utilizadores de base de dados contidos para o principal de serviço. Ligue-se ao armazém de dados de ou para o qual pretende copiar dados usando ferramentas como o SSMS, com uma identidade Microsoft Entra que tenha pelo menos a permissão de ALTERAR QUALQUER UTILIZADOR. Execute o seguinte T-SQL:
CREATE USER [your_application_name] FROM EXTERNAL PROVIDER;Conceda à entidade de serviço as permissões necessárias como normalmente faz para utilizadores SQL ou outros. Execute o código a seguir ou consulte mais opções aqui. Se quiseres usar o PolyBase para carregar os dados, informa-te sobre a permissão necessária de base de dados.
EXEC sp_addrolemember db_owner, [your application name];Configure um serviço Azure Synapse Analytics ligado num espaço de trabalho Azure Data Factory ou Synapse.
Exemplo de serviço vinculado que usa a autenticação da entidade de serviço
{
"name": "AzureSqlDWLinkedService",
"properties": {
"type": "AzureSqlDW",
"typeProperties": {
"connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30",
"servicePrincipalId": "<service principal id>",
"servicePrincipalCredential": {
"type": "SecureString",
"value": "<application key>"
},
"tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Identidades geridas atribuídas pelo sistema para autenticação de recursos do Azure
Uma fábrica de dados ou um espaço de trabalho Synapse pode associar-se a uma identidade gerida atribuída pelo sistema para recursos do Azure que representa o recurso. Pode usar esta identidade gerida para autenticação do Azure Synapse Analytics. O recurso designado pode acessar e copiar dados de ou para seu data warehouse usando essa identidade.
Para usar a autenticação de identidade gerenciada atribuída pelo sistema, especifique as propriedades genéricas descritas na seção anterior e siga estas etapas.
Provisione um administrador de Microsoft Entra para o seu servidor no portal Azure, caso ainda não o tenha feito. O administrador da Microsoft Entra pode ser um utilizador da Microsoft Entra ou um grupo da Microsoft Entra. Se você conceder ao grupo com identidade gerenciada atribuída pelo sistema uma função de administrador, ignore as etapas 3 e 4. O administrador terá acesso total à base de dados.
Crie usuários de banco de dados contidos para a identidade gerenciada atribuída ao sistema. Ligue-se ao armazém de dados a partir ou para onde pretende copiar os dados usando ferramentas como o SSMS, com uma identidade Microsoft Entra que tenha pelo menos ALTERAR QUALQUER PERMISSÃO DE UTILIZADOR. Execute o seguinte T-SQL.
CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;Conceda as permissões necessárias à identidade gerenciada atribuída ao sistema, como você normalmente faz para usuários SQL e outros. Execute o código a seguir ou consulte mais opções aqui. Se quiseres usar o PolyBase para carregar os dados, informa-te sobre a permissão necessária de base de dados.
EXEC sp_addrolemember db_owner, [your_resource_name];Configure um serviço Azure Synapse Analytics ligado.
Exemplo:
{
"name": "AzureSqlDWLinkedService",
"properties": {
"type": "AzureSqlDW",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"authenticationType": "SystemAssignedManagedIdentity"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Autenticação de identidade gerenciada atribuída pelo usuário
Um data factory ou espaço de trabalho Synapse pode ser associado a identidades geridas atribuídas pelo utilizador que representam o recurso. Pode usar esta identidade gerida para autenticação do Azure Synapse Analytics. O recurso designado pode acessar e copiar dados de ou para seu data warehouse usando essa identidade.
Para usar a autenticação de identidade gerenciada atribuída pelo usuário, além das propriedades genéricas descritas na seção anterior, especifique as seguintes propriedades:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| credenciais | Especifique a identidade gerenciada atribuída pelo usuário como o objeto de credencial. | Sim |
Você também precisa seguir os passos abaixo:
Provisione um administrador de Microsoft Entra para o seu servidor no portal Azure, caso ainda não o tenha feito. O administrador da Microsoft Entra pode ser um utilizador da Microsoft Entra ou um grupo da Microsoft Entra. Se você conceder ao grupo com identidade gerenciada atribuída pelo usuário uma função de administrador, ignore as etapas 3. O administrador terá acesso total à base de dados.
Crie usuários de banco de dados contidos para a identidade gerenciada atribuída pelo usuário. Ligue-se ao armazém de dados a partir ou para onde pretende copiar os dados usando ferramentas como o SSMS, com uma identidade Microsoft Entra que tenha pelo menos ALTERAR QUALQUER PERMISSÃO DE UTILIZADOR. Execute o seguinte T-SQL.
CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;Crie uma ou várias identidades gerenciadas atribuídas pelo usuário e conceda à identidade gerenciada atribuída pelo usuário as permissões necessárias como você normalmente faz para usuários SQL e outros. Execute o código a seguir ou consulte mais opções aqui. Se quiseres usar o PolyBase para carregar os dados, informa-te sobre a permissão necessária de base de dados.
EXEC sp_addrolemember db_owner, [your_resource_name];Atribua uma ou várias identidades gerenciadas atribuídas pelo usuário ao seu data factory e crie credenciais para cada identidade gerenciada atribuída pelo usuário.
Configure um serviço Azure Synapse Analytics ligado.
Exemplo
{
"name": "AzureSqlDWLinkedService",
"properties": {
"type": "AzureSqlDW",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"authenticationType": "UserAssignedManagedIdentity",
"credential": {
"referenceName": "credential1",
"type": "CredentialReference"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Versão antiga
Estas propriedades genéricas são suportadas para um serviço associado Azure Synapse Analytics quando se aplica a versão Legacy:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type deve ser definida como AzureSqlDW. | Sim |
| connectionString | Especifique a informação necessária para se ligar à instância Azure Synapse Analytics para a propriedade connectionString. Marque este campo como um SecureString para armazená-lo com segurança. Também podes colocar palavra-passe/chave principal de serviço no Azure Key Vault e, se for autenticação SQL, retirar a configuração password do cadeia de ligação. Consulte o artigo Armazene credenciais em Azure Key Vault com mais detalhes. |
Sim |
| conectarVia | O runtime de integração a ser usado para se conectar ao armazenamento de dados. Pode usar Azure Integration Runtime ou um runtime de integração auto-hospedado (se o seu armazenamento de dados estiver localizado numa rede privada). Se não for especificado, usa o Azure Integration Runtime padrão. | Não |
Para diferentes tipos de autenticação, consulte as seguintes seções sobre propriedades específicas e pré-requisitos, respectivamente:
- Autenticação SQL para a versão herdada
- Autenticação de service principal para a versão herdada
- Autenticação de identidade gerenciada atribuída pelo sistema para a versão herdada
- Autenticação de identidade gerenciada atribuída pelo usuário para a versão herdada
Autenticação SQL para a versão herdada
Para usar a autenticação SQL, especifique as propriedades genéricas descritas na seção anterior.
Autenticação do principal de serviço para a versão legada
Para usar a autenticação do principal de serviço, além das propriedades genéricas descritas na seção anterior, especifique as seguintes propriedades:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| servicePrincipalId | Especifique o ID do cliente do aplicativo. | Sim |
| chavePrincipalDoServiço | Especifique a chave do aplicativo. Marque este campo como um SecureString para o armazenar de forma segura, ou referencia um segredo guardado em Azure Key Vault. | Sim |
| inquilino | Especifique as informações do locatário, como o nome de domínio ou ID do locatário, sob o qual seu aplicativo reside. Recupere-o pairando com o rato no canto superior direito do portal do Azure. | Sim |
| azureCloudType | Para a autenticação de entidade de serviço, especifique o tipo de ambiente Azure de nuvem onde a sua aplicação Microsoft Entra está registada. Os valores permitidos são AzurePublic, AzureChina, AzureUsGovernment e AzureGermany. Por padrão, a fábrica de dados ou o ambiente de nuvem do pipeline Synapse é usado. |
Não |
Você também precisa seguir as etapas em Autenticação da entidade de serviço para conceder a permissão correspondente.
Autenticação de identidade gerenciada atribuída pelo sistema para a versão herdada
Para usar a autenticação de identidade gerida atribuída pelo sistema, siga a mesma etapa para a versão recomendada em Autenticação de identidade gerida atribuída pelo sistema.
Autenticação de identidade gerida pelo usuário para versões antigas
Para usar a autenticação de identidade gerenciada atribuída pelo usuário, siga a mesma etapa para a versão recomendada em Autenticação de identidade gerenciada atribuída pelo usuário.
Propriedades do conjunto de dados
Para obter uma lista completa de seções e propriedades disponíveis para definir conjuntos de dados, consulte o artigo Conjuntos de dados.
As seguintes propriedades são suportadas para o conjunto de dados Azure Synapse Analytics:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type do conjunto de dados deve ser definida como AzureSqlDWTable. | Sim |
| esquema | Nome do esquema. | Não para a fonte, Sim para o lavatório |
| tabela | Nome da tabela/visão. | Não para a fonte, Sim para o lavatório |
| tableName | Nome da tabela/vista com esquema. Esta propriedade é suportada para compatibilidade com versões anteriores. Para nova carga de trabalho, use schema e table. |
Não para a fonte, Sim para o lavatório |
Exemplo de propriedades de conjunto de dados
{
"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>"
}
}
}
Propriedades da Atividade de Cópia
Para obter uma lista completa de seções e propriedades disponíveis para definir atividades, consulte o artigo Pipelines . Esta secção fornece uma lista de propriedades suportadas pelo Azure Synapse Analytics source and sink.
Azure Synapse Analytics como fonte
Gorjeta
Para carregar dados de Azure Synapse Analytics de forma eficiente usando particionamento de dados, aprenda mais em Copiar paralelamente de Azure Synapse Analytics.
Para copiar dados de Azure Synapse Analytics, defina a propriedade type na fonte Copy Activity para SqlDWSource. As seguintes propriedades são suportadas na seção fonte da Atividade de Cópia:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type da fonte Copy Activity deve ser definida como SqlDWSource. | Sim |
| sqlReaderQuery | Utilize uma consulta SQL personalizada para ler dados. Exemplo: select * from MyTable. |
Não |
| sqlReaderStoredProcedureName | O nome do procedimento armazenado que lê dados da tabela de origem. A última instrução SQL deve ser uma instrução SELECT no procedimento armazenado. | Não |
| parâmetrosDeProcedimentoArmazenado | Parâmetros para o procedimento armazenado. Os valores permitidos são pares de nome ou valor. Os nomes e o invólucro dos parâmetros devem corresponder aos nomes e invólucros dos parâmetros do procedimento armazenado. |
Não |
| Nível de isolamento | Especifica o comportamento de bloqueio de transação para a fonte SQL. Os valores permitidos são: ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Snapshot. Se não for especificado, o nível de isolamento padrão do banco de dados será usado. Para obter mais informações, consulte system.data.isolationlevel. | Não |
| opções de partição | Especifica as opções de particionamento de dados usadas para carregar dados do Azure Synapse Analytics. Os valores permitidos são: None (padrão), PhysicalPartitionsOfTable e DynamicRange. Quando uma opção de partição está ativada (ou seja, não None), o grau de paralelismo para carregar simultaneamente dados de um Azure Synapse Analytics é controlado pela definição parallelCopies na atividade de cópia. |
Não |
| configurações de partição | Especifique o grupo de configurações para particionamento de dados. Aplique quando a opção de partição None não for. |
Não |
Em partitionSettings: |
||
| nomeDaColunaDePartição | Especifique o nome da coluna de origem no tipo inteiro ou data/datetime (int, smallint, bigint, date, smalldatetime, datetime, datetime2, ou datetimeoffset) que será usado pelo particionamento de intervalo para cópia paralela. Se não for especificado, o índice ou a chave primária da tabela é detetado automaticamente e usado como a coluna de partição.Aplique quando a opção de partição for DynamicRange. Se utilizar uma consulta para recuperar os dados de origem, inclua ?DfDynamicRangePartitionCondition na cláusula WHERE. Para obter um exemplo, consulte a seção Cópia paralela do banco de dados SQL. |
Não |
| partiçãoLimiteSuperior | O valor máximo da coluna de partição para divisão do intervalo de partições. Este valor é usado para determinar o passo da partição, e não para filtrar as linhas na tabela. Todas as linhas na tabela ou no resultado da consulta serão particionadas e copiadas. Se não for especificado, a atividade de cópia detetará automaticamente o valor. Aplique quando a opção de partição for DynamicRange. Para obter um exemplo, consulte a seção Cópia paralela do banco de dados SQL. |
Não |
| partiçãoLowerBound | O valor mínimo da coluna de partição para divisão do intervalo de partições. Este valor é usado para determinar o passo da partição, e não para filtrar as linhas na tabela. Todas as linhas na tabela ou no resultado da consulta serão particionadas e copiadas. Se não for especificado, a atividade de cópia detetará automaticamente o valor. Aplique quando a opção de partição for DynamicRange. Para obter um exemplo, consulte a seção Cópia paralela do banco de dados SQL. |
Não |
Observe o seguinte ponto:
- Ao usar o procedimento armazenado na origem para recuperar dados, observe se o procedimento armazenado for projetado como retornando esquema diferente quando um valor de parâmetro diferente for passado, você poderá encontrar falha ou ver um resultado inesperado ao importar esquema da interface do usuário ou ao copiar dados para o banco de dados SQL com a criação automática de tabelas.
Exemplo: usando a consulta 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>"
}
}
}
]
Exemplo: usando procedimento armazenado
"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>"
}
}
}
]
Exemplo de procedimento armazenado:
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 como destino
Os pipelines Azure Data Factory e Synapse suportam três formas de carregar dados no Azure Synapse Analytics.
- Utilizar a instrução COPY
- Utilizar o PolyBase
- Usar inserção em massa
A maneira mais rápida e escalável de carregar dados é através da instrução COPY ou do PolyBase.
Para copiar dados para Azure Synapse Analytics, defina o tipo de sumidouro em Copy Activity para SqlDWSink. As seguintes propriedades são suportadas na seção sink da atividade de cópia:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type do coletor Copy Activity deve ser definida como SqlDWSink. | Sim |
| allowPolyBase | Indica se deve usar o PolyBase para carregar dados no Azure Synapse Analytics.
allowCopyCommand e allowPolyBase não pode ser ambas verdadeiras. Consulte Use PolyBase para carregar dados na secção Azure Synapse Analytics para restrições e detalhes. Os valores permitidos são True e False (padrão). |
N.º Aplique ao usar o PolyBase. |
| polyBaseSettings | Um grupo de propriedades que podem ser especificadas quando a allowPolybase propriedade é definida como true. |
N.º Aplique ao usar o PolyBase. |
| permitirComandoCopiar | Indica se deve usar a instrução COPY para carregar dados em Azure Synapse Analytics.
allowCopyCommand e allowPolyBase não pode ser ambas verdadeiras. Consulte a instrução Use COPY para carregar dados na secção Azure Synapse Analytics para restrições e detalhes. Os valores permitidos são True e False (padrão). |
N.º Aplique ao usar COPY. |
| configuraçõesDoComandoDeCópia | Um grupo de propriedades que podem ser especificadas quando allowCopyCommand a propriedade é definida como TRUE. |
N.º Aplique ao usar COPY. |
| writeBatchSize | Número de linhas a serem inseridas na tabela SQL por lote. O valor permitido é inteiro (número de linhas). Por padrão, o serviço determina dinamicamente o tamanho de lote apropriado com base no tamanho da linha. |
N.º Aplicar ao usar inserção em massa. |
| writeBatchTimeout | O tempo de espera para concluir a operação de inserção, upsert e procedimento armazenado antes de atingir o tempo limite. Os valores permitidos são para o período de tempo. Um exemplo é "00:30:00" por 30 minutos. Se nenhum valor for especificado, o tempo limite padrão será "00:30:00". |
N.º Aplicar ao usar inserção em massa. |
| preCopyScript | Especifique uma consulta SQL para o Copy Activity a executar antes de escrever dados no Azure Synapse Analytics em cada execução. Use essa propriedade para limpar os dados pré-carregados. | Não |
| opçãoTabela | Especifica se a tabela de destino deve ser criada automaticamente, caso não exista, com base no esquema de origem. Os valores permitidos são: none (padrão), autoCreate. |
Não |
| desativarColeçãoDeMétricas | O serviço recolhe métricas como DWUs do Azure Synapse Analytics para otimização do desempenho das cópias e recomendações, que introduzem acesso adicional à base de dados mestre. Se você estiver preocupado com esse comportamento, especifique true para desativá-lo. |
Não (o padrão é false) |
| Máximo de conexões simultâneas (maxConcurrentConnections) | O limite superior de conexões simultâneas estabelecidas para o armazenamento de dados durante a execução da atividade. Especifique um valor somente quando quiser limitar conexões simultâneas. | Não |
| WriteBehavior | Especifique o comportamento de escrita para a atividade de cópia para carregar dados no Azure Synapse Analytics. O valor permitido é Inserir e Upsert. Por padrão, o serviço usa inserção para carregar dados. |
Não |
| upsertSettings | Especifique o grupo de configurações para o comportamento de gravação. Aplique quando a opção WriteBehavior for Upsert. |
Não |
Em upsertSettings: |
||
| chaves | Especifique os nomes das colunas para identificação de linha exclusiva. Uma única chave ou uma série de chaves podem ser usadas. Se não for especificado, a chave primária será usada. | Não |
| interimSchemaName | Especifique o esquema provisório para a criação da tabela provisória. Nota: o usuário precisa ter a permissão para criar e excluir tabela. Por padrão, a tabela temporária compartilhará o mesmo esquema da tabela de destino. | Não |
Exemplo 1: Azure Synapse Analytics sink
"sink": {
"type": "SqlDWSink",
"allowPolyBase": true,
"polyBaseSettings":
{
"rejectType": "percentage",
"rejectValue": 10.0,
"rejectSampleValue": 100,
"useTypeDefault": true
}
}
Exemplo 2: Dados com inserção ou atualização (upsert)
"sink": {
"type": "SqlDWSink",
"writeBehavior": "Upsert",
"upsertSettings": {
"keys": [
"<column name>"
],
"interimSchemaName": "<interim schema name>"
},
}
Cópia paralela do Azure Synapse Analytics
O conector do Azure Synapse Analytics na atividade de cópia oferece particionamento de dados integrado para copiar dados em paralelo. Você pode encontrar opções de particionamento de dados na guia Origem da atividade de cópia.
Quando ativas a cópia particionada, a atividade de cópia executa consultas paralelas na tua fonte do Azure Synapse Analytics para carregar os dados por partições. O grau paralelo é controlado pela configuração parallelCopies na atividade de cópia. Por exemplo, se definir parallelCopies para quatro, o serviço gera e executa simultaneamente quatro consultas com base na opção de partição e definições especificadas, e cada consulta recupera uma parte dos dados do seu Azure Synapse Analytics.
Recomenda-se que permita a cópia paralela com partição de dados, especialmente quando carrega grandes quantidades de dados do seu Azure Synapse Analytics. A seguir estão sugeridas configurações para diferentes cenários. Ao copiar dados para o armazenamento de dados baseado em arquivo, é recomendável gravar em uma pasta como vários arquivos (especifique apenas o nome da pasta), caso em que o desempenho é melhor do que gravar em um único arquivo.
| Cenário | Configurações sugeridas |
|---|---|
| Carga total a partir de uma tabela grande, com partições físicas. |
Opção de partição: Partições físicas da tabela. Durante a execução, o serviço deteta automaticamente as partições físicas e copia os dados por partições. Para verificar se a sua tabela tem partição física ou não, pode consultar esta consulta. |
| Carga completa a partir de uma tabela grande, sem partições físicas, mas com uma coluna de tipo inteiro ou datetime para particionamento de dados. |
Opções de partição: Partição de intervalo dinâmico. Coluna de partição (opcional): especifique a coluna usada para particionar dados. Se não for especificado, o índice ou a coluna de chave primária será usado. Limite superior da partição e limite inferior da partição (opcional): Especifique se deseja determinar o passo da partição. Isso não é para filtrar as linhas na tabela, todas as linhas na tabela serão particionadas e copiadas. Se não for especificado, a atividade de cópia detetará automaticamente os valores. Por exemplo, se a coluna de partição "ID" tiver valores que variam de 1 a 100 e você definir o limite inferior como 20 e o limite superior como 80, com cópia paralela como 4, o serviço recuperará dados por 4 partições - IDs no intervalo <=20, [21, 50], [51, 80] e >=81, respectivamente. |
| Carregue uma grande quantidade de dados usando uma consulta personalizada, sem partições físicas, mas com uma coluna do tipo inteiro ou de data ou data/hora para particionamento dos dados. |
Opções de partição: Partição de intervalo dinâmico. Consulta: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>.Coluna de partição: especifique a coluna usada para particionar dados. Limite superior da partição e limite inferior da partição (opcional): Especifique se deseja determinar o passo da partição. Isso não é para filtrar as linhas na tabela, todas as linhas no resultado da consulta serão particionadas e copiadas. Se não for especificado, a atividade de cópia detetará automaticamente o valor. Por exemplo, se a coluna de partição "ID" tiver valores que variam de 1 a 100 e você definir o limite inferior como 20 e o limite superior como 80, com cópia paralela como 4, o serviço recuperará dados por 4 partições - IDs no intervalo <=20, [21, 50], [51, 80] e >=81, respectivamente. Aqui estão mais consultas de exemplo para diferentes cenários: 1. Consulte toda a tabela: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition2. Consulta de uma tabela com seleção de colunas e filtros adicionais na cláusula WHERE: SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>3. Consulta com subconsultas: SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>4. Consulta com partição em subconsulta: SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T |
Práticas recomendadas para carregar dados com a opção de partição:
- Escolha uma coluna distinta como coluna de partição (como chave primária ou chave exclusiva) para evitar distorção de dados.
- Se a tabela tiver partição incorporada, use a opção de partição "Partições físicas da tabela" para obter um melhor desempenho.
- Se usar Azure Integration Runtime para copiar dados, pode definir "Unidades de Integração de Dados (DIU)" (>4) maiores para utilizar mais recursos computacionais. Verifique os cenários aplicáveis lá.
- "Grau de paralelismo de cópia controla os números de partição, estabelecer este número demasiado grande pode por vezes prejudicar o desempenho, recomenda-se definir este número como (DIU ou número de nós IR auto-hospedados) * (2 a 4)."
- Nota: o Azure Synapse Analytics pode executar um máximo de 32 consultas ao mesmo tempo. Definir um "Grau de paralelismo de cópia" muito elevado pode causar um problema de estrangulamento do Synapse.
Exemplo: carga completa a partir de uma tabela grande com partições físicas
"source": {
"type": "SqlDWSource",
"partitionOption": "PhysicalPartitionsOfTable"
}
Exemplo: consulta com partição de intervalo dinâmico
"source": {
"type": "SqlDWSource",
"query": "SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition 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>"
}
}
Exemplo de consulta para verificar a partição física
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 a tabela tiver partição física, você verá "HasPartition" como "yes".
Use a instrução COPY para carregar dados no Azure Synapse Analytics
Usar a instrução COPY é uma forma simples e flexível de carregar dados em Azure Synapse Analytics com alto rendimento. Para saber mais detalhes, consulte Carregamento em massa de dados com o comando COPY
- Se os seus dados de origem estiverem em Azure Blob ou Azure Data Lake Storage Gen2, e o formato for compatível com a instrução COPY, pode usar a atividade de cópia para invocar diretamente a instrução COPY e permitir Azure Synapse Analytics extrair os dados da fonte. Para obter detalhes, consulte Cópia direta usando a instrução COPY.
- Se o armazenamento de dados de origem e o formato não forem originalmente suportados pela instrução COPY, use o recurso Cópia em etapas com a instrução COPY em vez disso. O recurso de cópia em fases também proporciona uma melhor taxa de transferência. Converte automaticamente os dados para o formato compatível com instruções COPY, armazena os dados no armazenamento Azure Blob e depois chama a instrução COPY para carregar os dados no Azure Synapse Analytics.
Gorjeta
Ao usar a instrução COPY com Azure Integration Runtime, as efetivas Unidades de Integração de Dados (DIU) são sempre 2. Ajustar a DIU não afeta o desempenho, pois o carregamento de dados do armazenamento é impulsionado pelo motor do Azure Synapse.
Cópia direta usando a instrução COPY
A instrução Azure Synapse Analytics COPY suporta diretamente o Azure Blob e o Azure Data Lake Storage Gen2. Se os seus dados de origem cumprirem os critérios descritos nesta secção, utilize a instrução COPY para copiar diretamente do armazenamento de dados de origem para o Azure Synapse Analytics. Caso contrário, use cópia em etapas através da instrução COPY. O serviço verifica as configurações e falha na execução da atividade de cópia se os critérios não forem atendidos.
O serviço vinculado de origem e o formato estão com os seguintes tipos e métodos de autenticação:
Tipo de armazenamento de dados de origem suportado Formato suportado Tipo de autenticação de origem suportado Azure Blob Texto delimitado Autenticação de chave de conta, autenticação de assinatura de acesso compartilhado, autenticação de entidade de serviço (usando ServicePrincipalKey), autenticação de identidade gerenciada atribuída pelo sistema Parquet Autenticação de chave de conta, autenticação de assinatura de acesso compartilhado ORC Autenticação de chave de conta, autenticação de assinatura de acesso compartilhado Azure Data Lake Storage Gen2 Texto delimitado
Parquet
ORCAutenticação de chave de conta, autenticação de entidade de serviço (usando ServicePrincipalKey), autenticação de assinatura de acesso compartilhado, autenticação de identidade gerenciada atribuída pelo sistema Importante
- Quando usar autenticação de identidade gerida para o seu serviço ligado ao armazenamento, aprenda as configurações necessárias para Azure Blob e Azure Data Lake Storage Gen2 respetivamente.
- Se a sua Conta de Armazenamento Azure estiver configurada com o endpoint de serviço VNet, deve usar autenticação de identidade gerida com "permitir serviços confiáveis da Microsoft" ativado no armazenamento, consulte Impacto de usar Endpoints de Serviço VNet com Armazenamento do Azure.
As configurações de formato são as seguintes:
- Para Parquet:
compressionpode ser sem compressão, Snappy ouGZip. - Para ORC:
compressionpode ser sem compressão,zlibou Snappy. - Para texto delimitado:
-
rowDelimiteré explicitamente definido como caractere único ou "\r\n", o valor padrão não é suportado. -
nullValueé deixado como padrão ou definido como string vazia (""). -
encodingNameé deixado como padrão ou definido como utf-8 ou utf-16. -
escapeChardeve ser igual aquoteChar, e não está vazio. -
skipLineCounté deixado como padrão ou definido como 0. -
compressionpode ser sem compressão ouGZip.
-
- Para Parquet:
Se a sua fonte for uma pasta, na atividade de cópia
recursivedeve estar definida como verdadeiro ewildcardFilenamedeve ser*ou*.*.wildcardFolderPath,wildcardFilename(exceto*ou*.*),modifiedDateTimeStart, ,modifiedDateTimeEndprefix, eenablePartitionDiscoveryadditionalColumnsnão são especificados.
As seguintes configurações de instrução COPY são suportadas sob allowCopyCommand na atividade de cópia:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| valores padrão | Especifica os valores padrão para cada coluna alvo no Azure Synapse Analytics. Os valores padrão na propriedade substituem a restrição DEFAULT definida no data warehouse, e a coluna de identidade não pode ter um valor padrão. | Não |
| opções adicionais | Opções adicionais que serão passadas para uma instrução COPY do Azure Synapse Analytics diretamente na cláusula WITH na instrução COPY. Cite o valor conforme for necessário para alinhar com os requisitos da instrução COPY. | Não |
"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
}
}
]
Cópia em etapas usando a instrução COPY
Quando os seus dados de origem não forem nativamente compatíveis com a instrução COPY, permita a cópia de dados através de um armazenamento temporário Azure Blob ou Azure Data Lake Storage Gen2 (não pode ser Azure Armazenamento Premium). Nesse caso, o serviço converte automaticamente os dados para atender aos requisitos de formato de dados da instrução COPY. Depois, invoca a instrução COPY para carregar dados no Azure Synapse Analytics. Finalmente, ele limpa seus dados temporários do armazenamento. Consulte Cópia por estágios para obter detalhes sobre como copiar dados por meio de staging.
Para usar esta funcionalidade, crie um serviço vinculado Armazenamento de Blobs do Azure ou serviço vinculado Azure Data Lake Storage Gen2 com autenticação por chave de conta ou identidade gerida pelo sistema que se refere à conta de armazenamento Azure como armazenamento interino.
Importante
- Quando usar autenticação de identidade gerida para o seu serviço ligado de staging, aprenda as configurações necessárias para Azure Blob e Azure Data Lake Storage Gen2 respetivamente. Também precisa de conceder permissões à sua identidade gerida do espaço de trabalho Azure Synapse Analytics na sua conta de staging Armazenamento de Blobs do Azure ou Azure Data Lake Storage Gen2. Para saber como conceder essa permissão, consulte Conceder permissões à identidade gerenciada do espaço de trabalho.
- Se o seu Armazenamento do Azure de staging estiver configurado com o endpoint de serviço VNet, deve usar autenticação de identidade gerida com "permitir serviço Microsoft de confiança" ativado na conta de armazenamento, consulte Impacto do uso de VNet Service Endpoints com armazenamento do Azure.
Importante
Se o seu Armazenamento do Azure de preparação estiver configurado com um Ponto Final Privado Gerido e tiver o firewall de armazenamento ativado, deve utilizar a autenticação de identidade gerida e conceder permissões do Storage Blob Data Reader ao Synapse SQL Server para garantir que consiga aceder aos ficheiros em preparação durante o carregamento da instrução COPY.
"activities":[
{
"name": "CopyFromSQLServerToSQLDataWarehouseViaCOPYstatement",
"type": "Copy",
"inputs": [
{
"referenceName": "SQLServerDataset",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "AzureSQLDWDataset",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SqlSource",
},
"sink": {
"type": "SqlDWSink",
"allowCopyCommand": true
},
"stagingSettings": {
"linkedServiceName": {
"referenceName": "MyStagingStorage",
"type": "LinkedServiceReference"
}
}
}
}
]
Use o PolyBase para carregar dados no Azure Synapse Analytics
Usar PolyBase é uma forma eficiente de carregar uma grande quantidade de dados em Azure Synapse Analytics com alto rendimento. Você verá um grande ganho na taxa de transferência usando o PolyBase em vez do mecanismo BULKINSERT padrão.
- Se os seus dados de origem estiverem em Azure Blob ou Azure Data Lake Storage Gen2, e o formato for compatível com PolyBase, pode usar a atividade de cópia para invocar diretamente o PolyBase e permitir Azure Synapse Analytics extrair os dados da fonte. Para obter detalhes, consulte Cópia direta usando PolyBase.
- Se a sua origem de dados e o respetivo formato não forem suportados originalmente pelo PolyBase, utilize a funcionalidade Cópia em Estágios com PolyBase. O recurso de cópia em fases também proporciona uma melhor taxa de transferência. Converte automaticamente os dados para o formato compatível com PolyBase, armazena-os no armazenamento Azure Blob e depois chama o PolyBase para carregar os dados no Azure Synapse Analytics.
Gorjeta
Saiba mais sobre Práticas recomendadas para usar o PolyBase. Ao usar PolyBase com Azure Integration Runtime, as Unidades de Integração de Dados (DIU) previstas para o armazenamento direto ou em etapas para o Synapse são sempre 2. O ajuste da DIU não afeta o desempenho, pois o carregamento de dados do armazenamento é alimentado pelo mecanismo Synapse.
As seguintes configurações do PolyBase são suportadas na polyBaseSettings atividade de cópia:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| rejectValue | Especifica o número ou a porcentagem de linhas que podem ser rejeitadas antes que a consulta falhe. Saiba mais sobre as opções de rejeição do PolyBase na secção Argumentos do CRIAR TABELA EXTERNA (Transact-SQL). Os valores permitidos são 0 (padrão), 1, 2, etc. |
Não |
| tipoDeRejeição | Especifica se a opção rejectValue é um valor literal ou uma porcentagem. Os valores permitidos são Valor (padrão) e Porcentagem. |
Não |
| rejectSampleValue | Determina o número de linhas a serem recuperadas antes que o PolyBase recalcule a porcentagem de linhas rejeitadas. Os valores permitidos são 1, 2, etc. |
Sim, se o rejectType for percentagem. |
| useTypeDefault | Especifica como lidar com valores ausentes em arquivos de texto delimitados quando o PolyBase recupera dados do arquivo de texto. Saiba mais sobre esta propriedade na secção Argumentos em CREATE EXTERNAL FILE FORMAT (Transact-SQL). Os valores permitidos são True e False (padrão). |
Não |
Cópia direta usando o PolyBase
Azure Synapse Analytics PolyBase suporta diretamente Azure Blob e Azure Data Lake Storage Gen2. Se os seus dados de origem cumprirem os critérios descritos nesta secção, utilize o PolyBase para copiar diretamente do armazenamento de dados de origem para o Azure Synapse Analytics. Caso contrário, use Cópia em etapas usando PolyBase.
Gorjeta
Para copiar dados de forma eficiente para Azure Synapse Analytics, aprenda mais com Azure Data Factory torna ainda mais fácil e conveniente descobrir insights a partir dos dados ao usar Data Lake Store com Azure Synapse Analytics.
Se os requisitos não forem atendidos, o serviço verificará as configurações e retornará automaticamente ao mecanismo BULKINSERT para a movimentação de dados.
O serviço vinculado de origem é com os seguintes tipos e métodos de autenticação:
Tipo de armazenamento de dados de origem suportado Tipo de autenticação de origem suportado Azure Blob Autenticação de chave de conta, autenticação de identidade gerenciada atribuída pelo sistema Azure Data Lake Storage Gen2 Autenticação de chave de conta, autenticação de identidade gerenciada atribuída pelo sistema Importante
- Quando usar autenticação de identidade gerida para o seu serviço ligado ao armazenamento, aprenda as configurações necessárias para Azure Blob e Azure Data Lake Storage Gen2 respetivamente.
- Se a sua Conta de Armazenamento Azure estiver configurada com o endpoint de serviço VNet, deve usar autenticação de identidade gerida com "permitir serviços confiáveis da Microsoft" ativado no armazenamento, consulte Impacto de usar Endpoints de Serviço VNet com Armazenamento do Azure.
O formato de dados de origem é de Parquet, ORC ou texto delimitado, com as seguintes configurações:
- O caminho da pasta não contém filtro curinga ("wildcard").
- O nome do arquivo está vazio ou aponta para um único arquivo. Se você especificar o nome do arquivo curinga na atividade de cópia, ele só poderá ser
*ou*.*. -
rowDelimiteré padrão, \n, \r\n ou \r. -
nullValueé deixado como padrão ou definido como string vazia (""), etreatEmptyAsNullé deixado como padrão ou definido como true. -
encodingNameé deixado como padrão ou definido como utf-8. -
quoteChar,escapeChareskipLineCountnão são especificados. O PolyBase suporta pular linha de cabeçalho, que pode ser configurada comofirstRowAsHeader. -
compressionpode ser sem compressão,GZipou Esvaziar.
Se a origem for uma pasta,
recursivedeve estar definido como true na atividade de cópia.wildcardFolderPath,wildcardFilename, ,modifiedDateTimeStart,modifiedDateTimeEnd,prefix,enablePartitionDiscoveryeadditionalColumnsnão são especificados.
Nota
Se sua origem for uma pasta, observe que o PolyBase recupera arquivos da pasta e de todas as suas subpastas, e não recupera dados de arquivos para os quais o nome do arquivo começa com um sublinhado (_) ou um ponto (.), conforme documentado aqui - argumento 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
}
}
}
]
Cópia em etapas usando o PolyBase
Quando os seus dados de origem não forem nativamente compatíveis com o PolyBase, ative a cópia de dados através do staging intermédio do Azure Blob ou Azure Data Lake Storage Gen2 (não pode ser o Azure Armazenamento Premium). Nesse caso, o serviço converte automaticamente os dados para atender aos requisitos de formato de dados do PolyBase. Depois, invoca o PolyBase para carregar dados no Azure Synapse Analytics. Finalmente, ele limpa seus dados temporários do armazenamento. Consulte Cópia por estágios para obter detalhes sobre como copiar dados por meio de staging.
Para utilizar esta funcionalidade, crie um serviço ligado Armazenamento de Blobs do Azure ou serviço ligado Azure Data Lake Storage Gen2 com chave de conta ou autenticação de identidade gerida referente à conta de armazenamento Azure como armazenamento intermédio.
Importante
- Quando usar autenticação de identidade gerida para o seu serviço ligado de staging, aprenda as configurações necessárias para Azure Blob e Azure Data Lake Storage Gen2 respetivamente. Também precisa de conceder permissões à identidade gerida do seu espaço de trabalho Azure Synapse Analytics na sua conta de armazenamento temporário Armazenamento de Blobs do Azure ou no Azure Data Lake Storage Gen2. Para saber como conceder essa permissão, consulte Conceder permissões à identidade gerenciada do espaço de trabalho.
- Se o seu armazenamento Azure de pré-produção estiver configurado com o endpoint de serviço VNet, deve usar a autenticação de identidade gerida com a opção "permitir serviços Microsoft de confiança" ativada na conta de armazenamento, consulte o Impacto do uso de Endpoints de Serviço VNet com o armazenamento Azure.
Importante
Se o seu Armazenamento do Azure de staging estiver configurado com o Managed Private Endpoint e tiver o firewall de armazenamento ativado, deve usar autenticação de identidade gerida e conceder permissões do Storage Blob Data Reader ao Synapse SQL Server para garantir que este possa aceder aos ficheiros em fases durante o carregamento do 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"
}
}
}
}
]
Práticas recomendadas para usar o PolyBase
As secções seguintes fornecem boas práticas para além das mencionadas em Boas práticas para Azure Synapse Analytics.
Permissão de banco de dados necessária
Para usar o PolyBase, o utilizador que carrega os dados na Azure Synapse Analytics deve ter permissão "CONTROL" na base de dados de destino. Uma maneira de conseguir isso é adicionar o usuário como membro da função db_owner . Aprenda a fazer isso na visão geral Azure Synapse Analytics.
Tamanho da linha e limites de tipo de dados
As cargas do PolyBase são limitadas a linhas menores que 1 MB. Ele não pode ser usado para carregar para VARCHR(MAX), NVARCHAR(MAX) ou VARBINARY(MAX). Para mais informações, consulte Azure Synapse Analytics limites de capacidade de serviço.
Quando os dados de origem tiverem linhas maiores que 1 MB, convém dividir verticalmente as tabelas de origem em várias pequenas. Certifique-se de que o maior tamanho de cada linha não exceda o limite. As tabelas mais pequenas podem então ser carregadas usando PolyBase e fundidas no Azure Synapse Analytics.
Como alternativa, para dados com colunas tão largas, você pode usar não-PolyBase para carregar os dados desativando a configuração "permitir PolyBase".
Azure Synapse Analytics classe de recurso
Para alcançar o melhor rendimento possível, atribua ao utilizador uma classe de recurso maior que carrega os dados no Azure Synapse Analytics via PolyBase.
Solução de problemas do PolyBase
Carregando para coluna decimal
Se os seus dados de origem estiverem em formato de texto ou noutros repositórios não compatíveis com PolyBase (usando cópia encenada e PolyBase), e contiver valor vazio para ser carregado na coluna Decimal do Azure Synapse Analytics, pode obter o seguinte erro:
ErrorCode=FailedDbOperation, ......HadoopSqlException: Error converting data type VARCHAR to DECIMAL.....Detailed Message=Empty string can't be converted to DECIMAL.....
A solução é desmarcar a opção "Usar tipo padrão" (como false) no destino da atividade de cópia nas configurações do PolyBase. "USE_TYPE_DEFAULT" é uma configuração nativa do PolyBase, que especifica como lidar com valores ausentes em arquivos de texto delimitados quando o PolyBase recupera dados do arquivo de texto.
Verifique a propriedade "tableName" no Azure Synapse Analytics
A tabela a seguir fornece exemplos de como especificar a propriedade tableName no conjunto de dados JSON. Ele mostra várias combinações de nomes de esquema e tabela.
| Esquema de banco de dados | Nome da tabela | propriedade JSON de tableName |
|---|---|---|
| dbo | MyTable | MyTable ou dbo. MyTable ou [dbo]. [Minha Tabela] |
| dbo1 | MyTable | dbo1.MyTable ou [dbo1].[MyTable] |
| dbo | My.Table | [My.Table] ou [dbo]. [Meu.Tabela] |
| dbo1 | My.Table | [DBO1]. [Meu.Tabela] |
Se você ver o seguinte erro, o problema pode ser o valor especificado para a propriedade tableName. Consulte a tabela anterior para obter a maneira correta de especificar valores para a propriedade JSON tableName .
Type=System.Data.SqlClient.SqlException,Message=Invalid object name 'stg.Account_test'.,Source=.Net SqlClient Data Provider
Colunas com valores padrão
Atualmente, o recurso PolyBase aceita apenas o mesmo número de colunas que na tabela de destino. Um exemplo é uma tabela com quatro colunas onde uma delas é definida com um valor padrão. Os dados de entrada ainda precisam ter quatro colunas. Um conjunto de dados de entrada de três colunas produz um erro semelhante à seguinte mensagem:
All columns of the table must be specified in the INSERT BULK statement.
O valor NULL é uma forma especial do valor padrão. Se a coluna for anulável, os dados de entrada no blob dessa coluna podem estar vazios. Mas isso não pode faltar no conjunto de dados de entrada. O PolyBase insere NULL para valores em falta no Azure Synapse Analytics.
Falha no acesso a arquivos externos
Caso receba o seguinte erro, certifique-se de que está a usar a autenticação de identidade gerida e de que concedeu permissões de Leitor de Dados de Blob de Armazenamento à identidade gerida do espaço de trabalho do Azure Synapse.
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
Para obter mais informações, consulte Conceder permissões à identidade gerenciada após a criação do espaço de trabalho.
Mapeando propriedades de fluxo de dados
Ao transformar dados no mapeamento do fluxo de dados, pode ler e escrever em tabelas do Azure Synapse Analytics. Para obter mais informações, consulte a transformação de origem e a transformação de coletor no mapeamento de fluxos de dados.
Transformação da fonte
Definições específicas para Azure Synapse Analytics estão disponíveis no separador Opções de Origem da transformação de origem.
Entrada Selecione se você aponta sua fonte para uma tabela (equivalente a Select * from <table-name>) ou insere uma consulta SQL personalizada.
Enable Staging É altamente recomendado que utilize esta opção em cargas de trabalho de produção com fontes do Azure Synapse Analytics. Quando executa uma atividade de fluxo de dados com fontes do Azure Synapse Analytics a partir de um pipeline, ser-lhe-á solicitado um armazenamento de localização staging e irá usá-lo para carregar dados em staging. É o mecanismo mais rápido para carregar dados do Azure Synapse Analytics.
- Quando usar autenticação de identidade gerida para o seu serviço ligado ao armazenamento, aprenda as configurações necessárias para Azure Blob e Azure Data Lake Storage Gen2 respetivamente.
- Se a sua Conta de Armazenamento Azure estiver configurada com o endpoint de serviço VNet, deve usar autenticação de identidade gerida com "permitir serviços confiáveis da Microsoft" ativado no armazenamento, consulte Impacto de usar Endpoints de Serviço VNet com Armazenamento do Azure.
- Quando usas o pool SQL Azure Synapse serverless como fonte, a ativação de staging não é suportada.
Consulta: Se você selecionar Consulta no campo de entrada, insira uma consulta SQL para sua fonte. Essa configuração substitui qualquer tabela escolhida no conjunto de dados. As cláusulas Order By não são suportadas aqui, mas você pode definir uma instrução SELECT FROM completa. Você também pode usar funções de tabela definidas pelo usuário. select * from udfGetData() é um UDF em SQL que retorna uma tabela. Essa consulta produzirá uma tabela de origem que você pode usar em seu fluxo de dados. Usar consultas também é uma ótima maneira de reduzir linhas para testes ou pesquisas.
Exemplo de SQL: Select * from MyTable where customerId > 1000 and customerId < 2000
Tamanho do lote: insira um tamanho de lote para fragmentar dados grandes em leituras. Em fluxos de dados, essa configuração será usada para definir o cache colunar do Spark. Este é um campo de opção, que usará os padrões do Spark se for deixado em branco.
Nível de isolamento: O padrão para fontes SQL no mapeamento do fluxo de dados é ler sem confirmação. Você pode alterar o nível de isolamento aqui para um destes valores:
- Leia Comprometido
- Ler Não Comprometido
- Leitura repetível
- Serializável
- Nenhum (ignorar o nível de isolamento)
Transformação do lavatório
Definições específicas para Azure Synapse Analytics estão disponíveis no separador Settings da transformação do lavadoiro.
Método de atualização: determina quais operações são permitidas no destino do banco de dados. O padrão é permitir apenas inserções. Para realizar a atualização, inserção ou eliminação de linhas, é necessário uma transformação de alteração de linha para marcar as linhas para essas ações. Para atualizações, upserts e exclusões, uma coluna ou colunas de chave devem ser definidas para determinar qual linha alterar.
Ação da tabela: Determina se devem ser recriadas ou removidas todas as linhas da tabela de destino antes da gravação.
- Nenhuma: Nenhuma ação será realizada na tabela.
- Recriar: A tabela será descartada e recriada. Necessário apenas ao criar uma nova tabela dinamicamente.
- Truncate: Todas as linhas da tabela de destino serão removidas.
Enable staging: Isto permite carregar em Azure Synapse Analytics SQL Pools usando o comando copy e é recomendado para a maioria dos sinks do Synapse. O armazenamento temporário está configurado na atividade Executar Fluxo de Dados.
- Quando usar autenticação de identidade gerida para o seu serviço ligado ao armazenamento, aprenda as configurações necessárias para Azure Blob e Azure Data Lake Storage Gen2 respetivamente.
- Se a sua Conta de Armazenamento Azure estiver configurada com o endpoint de serviço VNet, deve usar autenticação de identidade gerida com "permitir serviços confiáveis da Microsoft" ativado no armazenamento, consulte Impacto de usar Endpoints de Serviço VNet com Armazenamento do Azure.
Tamanho do lote: Controla quantas linhas são escritas em cada bucket. Lotes maiores melhoram a compactação e a otimização da memória, mas correm o risco de exceções de falta de memória ao armazenar dados em cache.
Usar esquema de destino: Por padrão, uma tabela temporária será criada sob o esquema de destino como etapa de preparação. Como alternativa, pode desmarcar a opção Usar esquema de sink e, em vez disso, em Selecionar esquema de banco de dados do utilizador, especificar um nome de esquema onde o Data Factory criará uma tabela de preparação para carregar dados upstream e limpá-los automaticamente após a conclusão. Verifique se você tem permissão para criar tabela no banco de dados e alterar permissão no esquema.
Scripts SQL Pre e Post: Insira scripts SQL de várias linhas que serão executados antes (pré-processamento) e depois (pós-processamento), quando os dados forem gravados no seu banco de dados Sink.
Gorjeta
- Recomenda-se dividir scripts de lote único que contenham vários comandos em lotes distintos.
- Somente instruções DDL (Data Definition Language) e DML (Data Manipulation Language) que retornam uma contagem de atualização simples podem ser executadas como parte de um lote. Saiba mais em Executando operações em lote
Processamento da linha de erro
Ao escrever no Azure Synapse Analytics, certas linhas de dados podem falhar devido a restrições definidas pelo destino. Alguns erros comuns:
- Dados binários ou de cadeia de caracteres seriam truncados na tabela
- Não é possível inserir o valor NULL na coluna
- Falha na conversão ao converter o valor em tipo de dados
Por padrão, uma execução de fluxo de dados falhará no primeiro erro que receber. Você pode escolher Ignorar erros, permitindo que o fluxo de dados seja concluído mesmo que linhas individuais tenham erros. O serviço fornece diferentes opções para você lidar com essas linhas de erro.
Confirmação de transação: escolha se seus dados são gravados em uma única transação ou em lotes. Uma única transação proporcionará um melhor desempenho e nenhum dado gravado será visível para outras pessoas até que a transação seja concluída. As transações em lote têm pior desempenho, mas podem funcionar para grandes conjuntos de dados.
Output rejected data: Se estiver ativado, pode exportar as linhas de erro para um ficheiro CSV no Armazenamento de Blobs do Azure ou numa conta Azure Data Lake Storage Gen2 à sua escolha. Isso gravará as linhas de erro com três colunas adicionais: a operação SQL como INSERT ou UPDATE, o código de erro de fluxo de dados e a mensagem de erro na linha.
Relatar sucesso em caso de erro: Se ativado, o fluxo de dados será marcado como um sucesso, mesmo se forem encontradas linhas de erro.
Propriedades da atividade de consulta
Para saber detalhes sobre as propriedades, verifique Atividade de pesquisa.
Propriedades de atividade GetMetadata
Para saber detalhes sobre as propriedades, verifique a atividade GetMetadata
Mapeamento de tipos de dados para Azure Synapse Analytics
Quando copia dados de ou para o Azure Synapse Analytics, os seguintes mapeamentos são usados dos tipos de dados do Azure Synapse Analytics para os tipos de dados temporários do Azure Data Factory. Estes mapeamentos também são usados ao copiar dados do ou para o Azure Synapse Analytics usando pipelines Synapse, uma vez que os pipelines também implementam o Azure Data Factory dentro do Azure Synapse. Consulte Mapeamentos de esquema e tipos de dados para saber como Copiar Atividade mapeia o esquema de origem e o tipo de dados para o destino.
Gorjeta
Consulte o artigo sobre os tipos de dados de tabela no Azure Synapse Analytics, que aborda os tipos de dados suportados pelo Azure Synapse Analytics e as soluções alternativas para os tipos não suportados.
| Tipo de dados do Azure Synapse Analytics | Tipo de dados provisórios do Data Factory |
|---|---|
| bigint | Int64 |
| binário | Byte[] |
| bit | booleano |
| char | Cadeia de caracteres, Array de caracteres |
| data | DateTime |
| Data e Hora | DateTime |
| datetime2 | DateTime |
| Datetimeoffset | DateTimeOffset |
| Decimal | Decimal |
| Atributo FILESTREAM (varbinary(max)) | Byte[] |
| Flutuante | Duplo |
| imagem | Byte[] |
| número inteiro | Int32 |
| dinheiro | Decimal |
| Nchar | Cadeia de caracteres, Array de caracteres |
| numérico | Decimal |
| nvarchar | Cadeia de caracteres, Array de caracteres |
| real | Única |
| versão de linha | Byte[] |
| smalldatetime | DateTime |
| smallint | Int16 |
| pequena quantia | Decimal |
| tempo | TimeSpan |
| tinyint | Byte |
| identificador único | GUID |
| Varbinary | Byte[] |
| varchar | Cadeia de caracteres, Array de caracteres |
Atualizar a versão do Azure Synapse Analytics
Para atualizar a versão do Azure Synapse Analytics, na página Edit linked service, selecione Recommended em Version e configure o serviço associado consultando as propriedades do Linked service para a versão recomendada.
Diferenças entre a versão recomendada e a versão herdada
A tabela abaixo mostra as diferenças entre o Azure Synapse Analytics usando a versão recomendada e a versão legada.
| Versão recomendada | Versão antiga |
|---|---|
Suporte TLS 1.3 via encrypt como strict. |
TLS 1.3 não é suportado. |
Conteúdos relacionados
Para obter uma lista de repositórios de dados suportados como fontes e destinos pela atividade de cópia, consulte repositórios e formatos de dados suportados.