Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
APLICA-SE A:
Azure Data Factory
Azure Synapse Analytics
Dica
Data Factory no Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA interna e novos recursos. Se você não estiver familiarizado com a integração de dados, comece com Fabric Data Factory. As cargas de trabalho existentes do ADF podem ser atualizadas para Fabric para acessar novos recursos em ciência de dados, análise em tempo real e relatórios.
Este artigo descreve como usar a Atividade de Cópia nos pipelines do Azure Data Factory e do Synapse Analytics para copiar dados de e para o Armazenamento de Tabela do Azure. Ele amplia o artigo visão geral da Atividade de Cópia que apresenta uma visão geral da Atividade de Cópia.
Observação
Recomendamos que você use o módulo Azure Az PowerShell para interagir com Azure. Para começar, consulte Instalar Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, consulte Migrate Azure PowerShell do AzureRM para o Az.
Funcionalidades com suporte
Esse conector de armazenamento de tabelas Azure tem suporte para os seguintes recursos:
| Funcionalidades com suporte | IR | Ponto de extremidade privado gerenciado |
|---|---|---|
| Atividade Copy (origem/coletor) | (1) (2) | ✓ Excluir a conta de armazenamento V1 |
| Atividade de pesquisa | (1) (2) | ✓ Excluir a conta de armazenamento V1 |
① Runtime de integração do Azure ② Runtime de integração auto-hospedado
Você pode copiar dados de qualquer armazenamento de dados fonte compatível para o armazenamento de tabelas. Você também pode copiar dados de um armazenamento de tabelas para qualquer armazenamento de dados de coletor compatível. Para obter uma lista de armazenamentos de dados que têm suporte como fontes ou coletores da atividade de cópia, confira a tabela Armazenamentos de dados com suporte.
Especificamente, este conector de Tabela do Azure dá suporte à cópia de dados usando as autenticações de chave de conta e de assinatura de acesso compartilhado serviço.
Introdução
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
- SDK Python
- Azure PowerShell
- REST API
- modelo Azure Resource Manager
Criar um serviço vinculado de armazenamento de Tabelas do Azure usando a interface do usuário
Use as etapas a seguir para criar um serviço vinculado de armazenamento de tabelas Azure na interface do usuário do portal Azure.
Navegue até a guia Gerenciar no workspace do Azure Data Factory ou do Synapse e selecione Serviços Vinculados e clique em Novo:
Pesquise por Azure Table e selecione o conector de armazenamento Azure Table.
Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.
Detalhes da configuração do conector
As seções a seguir fornecem detalhes sobre as propriedades usadas para definir entidades específicas para Azure Armazenamento de Tabelas.
Propriedades do serviço vinculado
Esse conector Azure Table Storage dá suporte aos seguintes tipos de autenticação. Consulte as seções correspondentes para obter detalhes.
- Autenticação de chave de conta
- Autenticação de assinatura de acesso compartilhado
- Autenticação de identidade gerenciada atribuída pelo sistema
- Autenticação de identidade gerenciada atribuída pelo usuário
Autenticação de chave de conta
Você pode criar um serviço vinculado Azure Storage usando a chave da conta. Ele fornece ao serviço acesso global ao Armazenamento. Há suporte para as seguintes propriedades.
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type deve ser definida como AzureTableStorage. | Sim |
| connectionString | Especifique as informações necessárias para se conectar ao Armazenamento para a propriedade connectionString. Você também pode colocar a chave da conta no Azure Key Vault e extrair a configuração accountKey da cadeia de conexão. Consulte os exemplos a seguir e o artigo Armazenando credenciais no Azure Key Vault para mais detalhes. |
Sim |
| connectVia | O runtime de integração a ser usado para se conectar ao armazenamento de dados. Você pode usar o Azure Integration Runtime ou o Self-hosted Integration Runtime (se a loja de dados estiver localizada em uma rede privada). Se não for especificado, ele usará o Azure Integration Runtime padrão. | Não |
Observação
Se você estiver usando o serviço vinculado do tipo "AzureStorage", ele ainda terá suporte no estado em que se encontra, enquanto você recebe a sugestão de usar esse novo tipo de serviço vinculado "AzureTableStorage" no futuro.
Exemplo:
{
"name": "AzureTableStorageLinkedService",
"properties": {
"type": "AzureTableStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Example: armazenar chave de conta no Azure Key Vault
{
"name": "AzureTableStorageLinkedService",
"properties": {
"type": "AzureTableStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;",
"accountKey": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Autenticação de assinatura de acesso compartilhado
Você também pode criar um serviço vinculado ao Armazenamento por meio de uma assinatura de acesso compartilhado. Isso fornece ao serviço de acesso restrito/acesso total, com limite de tempo/recursos específicos no armazenamento.
Uma assinatura de acesso compartilhado fornece acesso delegado aos recursos da sua conta de armazenamento. Você pode usá-la para conceder a um cliente permissões limitadas para objetos em sua conta de armazenamento por determinado tempo e com um conjunto específico de permissões. Não é preciso compartilhar as chaves de acesso da conta. A assinatura de acesso compartilhado é um URI que engloba em seus parâmetros de consulta todas as informações necessárias para o acesso autenticado a um recurso de armazenamento. Para acessar recursos de armazenamento com a assinatura de acesso compartilhado, o cliente só precisa passar a assinatura de acesso compartilhado ao construtor ou método apropriado. Para saber mais sobre assinaturas de acesso compartilhado, veja Assinaturas de Acesso Compartilhado: entendendo o modelo de assinatura de acesso compartilhado.
Observação
O serviço agora dá suporte para assinaturas de acesso compartilhado de serviço e assinaturas de acesso compartilhado de conta. Para obter mais informações sobre assinaturas de acesso compartilhado, consulte Conceder acesso limitado a recursos do Azure Storage usando assinaturas de acesso compartilhado (SAS).
Dica
Para gerar uma assinatura de acesso compartilhado de serviço para a conta de armazenamento, você pode executar os comandos a seguir do PowerShell. Substitua os espaços reservados e conceda a permissão necessária.
$context = New-AzStorageContext -StorageAccountName <accountName> -StorageAccountKey <accountKey>
New-AzStorageContainerSASToken -Name <containerName> -Context $context -Permission rwdl -StartTime <startTime> -ExpiryTime <endTime> -FullUri
Para usar a autenticação de assinatura de acesso compartilhado, há suporte para as seguintes propriedades.
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type deve ser definida como AzureTableStorage. | Sim |
| sasUri | Especifique o URI da SAS do URI da assinatura de acesso compartilhado para a tabela. Marque esse campo como SecureString para armazená-lo com segurança. Você também pode colocar o token SAS no Azure Key Vault para aproveitar a rotação automática e remover a parte do token. Consulte os exemplos a seguir e o artigo Armazenando credenciais no Azure Key Vault para mais detalhes. |
Sim |
| connectVia | O runtime de integração a ser usado para se conectar ao armazenamento de dados. Você pode usar o Azure Integration Runtime ou o Integration Runtime auto-hospedado (se o armazenamento de dados estiver localizado em uma rede privada). Se não for especificado, ele usará o Azure Integration Runtime padrão. | Não |
Observação
Se você estiver usando o serviço vinculado do tipo "AzureStorage", ele ainda terá suporte no estado em que se encontra, enquanto você recebe a sugestão de usar esse novo tipo de serviço vinculado "AzureTableStorage" no futuro.
Exemplo:
{
"name": "AzureTableStorageLinkedService",
"properties": {
"type": "AzureTableStorage",
"typeProperties": {
"sasUri": {
"type": "SecureString",
"value": "<SAS URI of the Azure Storage resource e.g. https://<account>.table.core.windows.net/<table>?sv=<storage version>&st=<start time>&se=<expire time>&sr=<resource>&sp=<permissions>&sip=<ip range>&spr=<protocol>&sig=<signature>>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Example: armazenar chave de conta no Azure Key Vault
{
"name": "AzureTableStorageLinkedService",
"properties": {
"type": "AzureTableStorage",
"typeProperties": {
"sasUri": {
"type": "SecureString",
"value": "<SAS URI of the Azure Storage resource without token e.g. https://<account>.table.core.windows.net/<table>>"
},
"sasToken": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Ao criar um URI de assinatura de acesso compartilhado, considere os seguintes pontos:
- Defina as permissões apropriadas de leitura/gravação em objetos com base em como o serviço vinculado (leitura, gravação, leitura/gravação) será usado.
- Defina o Tempo de expiração adequadamente. Certifique-se de que o acesso aos objetos de Armazenamento não expira dentro do período ativo do pipeline.
- O URI deve ser criado no nível de tabela correto com base na necessidade.
Autenticação de identidade gerenciada atribuída pelo sistema
Um pipeline do data factory ou do Synapse pode ser associado a uma identidade gerenciada atribuída pelo sistema para recursos do Azure, que representa esse recurso para autenticação em outros serviços do Azure. Você pode usar essa identidade gerenciada atribuída pelo sistema para autenticação Azure Table Storage. Para saber mais sobre identidades gerenciadas para recursos do Azure, consulte Identidades gerenciadas para recursos do Azure
Para usar a autenticação de identidade gerenciada atribuída pelo sistema, siga estas etapas:
Recuperar identidade gerenciada atribuída pelo sistema copiando o valor da ID de objeto de identidade gerenciada atribuída pelo sistema gerado com o workspace do Factory ou do Synapse.
Conceda a permissão de identidade gerenciada em Azure Table Storage. Para mais informações sobre as funções, confira este artigo.
- Como origem, em Controle de acesso (IAM), conceda, pelo menos, a função de Leitor de Dados do Armazenamento de Tabelas.
- Como coletor, no Controle de acesso (IAM), conceda pelo menos a função de Colaborador de Dados do Armazenamento de Tabelas.
Essas propriedades são compatíveis para um serviço vinculado do Azure Table Storage:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type deve ser configurada como AzureTableStorage. | Sim |
| serviceEndpoint | Especifique o endpoint do serviço Serviço de Armazenamento de Tabelas do Azure com o padrão de https://<accountName>.table.core.windows.net/. |
Sim |
| connectVia | O runtime de integração a ser usado para se conectar ao armazenamento de dados. Você pode usar o Azure Integration Runtime. Se não for especificado, ele usará o Azure Integration Runtime padrão. | Não |
Observação
A autenticação de identidade gerenciada atribuída pelo sistema é suportada apenas pelo runtime de integração do Azure.
Exemplo:
{
"name": "AzureTableStorageLinkedService",
"properties": {
"type": "AzureTableStorage",
"typeProperties": {
"serviceEndpoint": "https://<accountName>.table.core.windows.net/"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Autenticação de identidade gerenciada atribuída pelo usuário
Um data factory pode ser atribuído com uma ou várias identidades gerenciadas atribuídas pelo usuário. Você pode usar essa identidade gerenciada atribuída pelo usuário para autenticação Azure Table Storage, que permite acessar e copiar dados de ou para Azure Table Storage. Para saber mais sobre identidades gerenciadas para recursos do Azure, consulte Identidades gerenciadas para recursos do Azure
Para usar a autenticação de identidade gerenciada atribuída pelo usuário, siga estas etapas:
Criar uma ou várias identidades gerenciadas atribuídas pelo usuário e conceder permissão em Azure Table Storage. Para mais informações sobre as funções, confira este artigo.
- Como origem, em Controle de acesso (IAM), conceda, pelo menos, a função de Leitor de Dados do Armazenamento de Tabelas.
- Como coletor, no Controle de acesso (IAM), conceda pelo menos a função de Colaborador de Dados do Armazenamento de Tabelas.
Atribua uma ou várias identidades gerenciadas atribuídas pelo usuário ao data factory e crie credenciais para cada identidade gerenciada atribuída pelo usuário.
Essas propriedades são compatíveis para um serviço vinculado do Azure Table Storage:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type deve ser configurada como AzureTableStorage. | Sim |
| serviceEndpoint | Especifique o endpoint do serviço Serviço de Armazenamento de Tabelas do Azure com o padrão de https://<accountName>.table.core.windows.net/. |
Sim |
| credenciais | Especifique a identidade gerenciada atribuída pelo usuário como o objeto da credencial. | Sim |
| connectVia | O runtime de integração a ser usado para se conectar ao armazenamento de dados. Você pode usar o Azure Integration Runtime ou o Integration Runtime auto-hospedado (se o armazenamento de dados estiver localizado em uma rede privada). Se não for especificado, ele usará o Azure Integration Runtime padrão. | Não |
Exemplo:
{
"name": "AzureTableStorageLinkedService",
"properties": {
"type": "AzureTableStorage",
"typeProperties": {
"serviceEndpoint": "https://<accountName>.table.core.windows.net/",
"credential": {
"referenceName": "credential1",
"type": "CredentialReference"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Propriedades do conjunto de dados
Para obter uma lista completa das seções e propriedades disponíveis para definir os conjuntos de dados, confira o artigo sobre Conjuntos de Dados. Esta seção fornece uma lista de propriedades compatíveis com o conjunto de dados tabela Azure.
Para copiar dados de e para o Azure Table, defina a propriedade "tipo" do conjunto de dados como AzureTable. Há suporte para as seguintes propriedades.
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type do conjunto de dados deve ser definida como AzureTable. | Sim |
| tableName | O nome da tabela na instância do banco de dados do armazenamento de Tabelas à qual o serviço vinculado se refere. | Sim |
Exemplo:
{
"name": "AzureTableDataset",
"properties":
{
"type": "AzureTable",
"typeProperties": {
"tableName": "MyTable"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<Azure Table storage linked service name>",
"type": "LinkedServiceReference"
}
}
}
Inferência de esquema pelo serviço
Para armazenamentos de dados sem esquema, como Azure Table, o serviço infere o esquema de uma das seguintes maneiras:
- Se você especificar o mapeamento de coluna na atividade de cópia, o serviço usará a lista de colunas do lado da origem para recuperar os dados. Nesse caso, se uma linha não contiver um valor de uma coluna, um valor nulo será fornecido para ele.
- Se você não especificar o mapeamento de coluna na atividade de cópia, o serviço vai inferir o esquema usando a primeira linha nos dados. Nesse caso, se a primeira linha não contiver o esquema completo (por exemplo, algumas colunas têm valor nulo), algumas colunas estarão ausentes do resultado da operação de cópia.
Propriedades da atividade de cópia
Para obter uma lista completa das seções e propriedades disponíveis para definir atividades, confia o artigo Pipelines. Esta seção fornece uma lista das propriedades com suporte pela fonte e pelo coletor da Tabela do Azure.
Azure Table como tipo de origem
Para copiar dados de Azure Table, defina o tipo de origem na atividade de cópia como AzureTableSource. As propriedades a seguir têm suporte na seção source da atividade de cópia.
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type da fonte da atividade de cópia deve ser definida como AzureTableSource. | Sim |
| AzureTableSourceQuery | Utiliza a consulta personalizada de armazenamento de tabelas para ler os dados. A consulta de origem é um mapa direto da opção de consulta $filter compatível com Azure Table Storage, saiba mais sobre a sintaxe this doc e veja os exemplos na seção de exemplos azureTableSourceQuery. |
Não |
| azureTableSourceIgnoreTableNotFound | Indica se deve permitir que exceção da tabela não exista. Os valores permitidos são True e False (padrão). |
Não |
Exemplos do azureTableSourceQuery
Observação
A operação de consulta de Tabela do Azure atinge o tempo limite em 30 segundos, conforme imposto pelo serviço Tabela do Azure. Saiba como otimizar a consulta no artigo Design para consulta.
Caso deseje filtrar os dados em uma coluna do tipo datetime, veja este exemplo:
"azureTableSourceQuery": "LastModifiedTime gt datetime'2017-10-01T00:00:00' and LastModifiedTime le datetime'2017-10-02T00:00:00'"
Caso deseje filtrar os dados em uma coluna do tipo cadeia de caracteres, veja este exemplo:
"azureTableSourceQuery": "LastModifiedTime ge '201710010000_0000' and LastModifiedTime le '201710010000_9999'"
Caso use o parâmetro de pipeline, converta o valor datetime para o formato apropriado, de acordo com os exemplos anteriores.
Tabela do Azure como tipo sink
Para copiar dados para Azure Table, defina o tipo de coletor na atividade de cópia como AzureTableSink. As propriedades a seguir têm suporte na seção sink da atividade de cópia.
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | O tipo de propriedade do coletor da atividade de cópia deve ser definida como AzureTableSink. | Sim |
| azureTableDefaultPartitionKeyValue | O valor de chave de partição padrão que pode ser utilizado pelo coletor. | Não |
| azureTablePartitionKeyName | Especifique o nome da coluna cujos valores são usados como chaves de partição. Se não especificado, "AzureTableDefaultPartitionKeyValue" será utilizado como a chave da partição. | Não |
| azureTableRowKeyName | Especifique o nome da coluna cujos valores são usados como as chaves de linha. Se não especificado, um GUID é usado para cada linha. | Não |
| azureTableInsertType | O modo para inserir dados na Tabela do Azure. Essa propriedade controla se linhas existentes na tabela de saída com a partição correspondente e as chaves de linha terão seus valores substituídos ou mesclados. Os valores permitidos são merge (padrão) e replace. Essa configuração se aplica no nível de linha, não no nível de tabela. Nenhuma opção exclui linhas na tabela de saída que não existe na entrada. Para saber mais sobre como as configurações de mesclagem e substituição funcionam, consulte Inserir ou mesclar entidade e Inserir ou substituir entidade. |
Não |
| writeBatchSize | Insere dados na Tabela do Azure quando writeBatchSize ou writeBatchTimeout for atingido. Os valores permitidos são inteiro (número de linhas). |
Não (o padrão é 10.000) |
| writeBatchTimeout | Insere dados na Tabela do Azure quando writeBatchSize ou writeBatchTimeout for atingido. Os valores permitidos são timespan. Um exemplo é "00:20:00" (20 minutos). |
Não (o padrão é 90 segundos, tempo limite padrão do cliente de armazenamento) |
| 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 desejar limitar as conexões simultâneas. | Não |
Exemplo:
"activities":[
{
"name": "CopyToAzureTable",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Azure Table output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzureTableSink",
"azureTablePartitionKeyName": "<column name>",
"azureTableRowKeyName": "<column name>"
}
}
}
]
azureTablePartitionKeyName
Antes de poder usar a coluna de destino como o azureTablePartitionKeyName, será necessário mapear uma coluna de origem para uma coluna de destino usando a propriedade "translator".
No exemplo a seguir, a coluna de origem DivisionID é mapeada para a coluna de destino DivisionID:
"translator": {
"type": "TabularTranslator",
"columnMappings": "DivisionID: DivisionID, FirstName: FirstName, LastName: LastName"
}
"DivisionID" é especificada como a chave de partição.
"sink": {
"type": "AzureTableSink",
"azureTablePartitionKeyName": "DivisionID"
}
Mapeamento de tipo de dados para Azure Table
Ao copiar dados de e para a Tabela do Azure, os seguintes mapeamentos são usados de tipos de dados de Tabela do Azure para tipos de dados intermediários usados internamento no serviço. Para saber mais sobre como a atividade de cópia mapeia o tipo de dados e esquema de origem para o coletor, consulte Mapeamentos de tipo de dados e esquema.
Quando dados forem movidos para e da Tabela do Azure, os seguintes mapeamentos definidos pela Tabela do Azure serão usados nos tipos OData da Tabela do Azure para o tipo .NET e vice-versa.
| Tipo de dados de Tabela do Azure | Tipo de dados provisório do serviço | Detalhes |
|---|---|---|
| Edm.Binary | byte[] | Uma matriz de bytes de até 64 KB. |
| Edm.Boolean | bool | Um valor booliano. |
| Edm.DateTime | Datetime | Um valor de 64 bits expressado como Tempo Universal Coordenado (UTC). O intervalo de data e hora com suporte começa à meia-noite de 1º de janeiro de 1601 D.C. (C.E.), UTC. O intervalo termina em 31 de dezembro de 9999. |
| Edm.Double | double | Um valor de ponto flutuante de 64 bits. |
| Edm.Guid | Guid | Um identificador global exclusivo de 128 bits. |
| Edm.Int32 | Int32 | Um inteiro de 32 bits. |
| Edm.Int64 | Int64 | Um inteiro de 64 bits. |
| Edm.String | String | Um valor codificado em UTF-16. Valores de cadeia de caracteres podem ter até 64 KB. |
Pesquisar propriedades de atividade
Para saber detalhes sobre as propriedades, verifique Pesquisar atividade.
Conteúdo relacionado
Para obter uma lista dos armazenamentos de dados com suporte como coletores e fontes da atividade de cópia, confira os Armazenamentos de dados com suporte.