Partilhar via


Copiar dados do Google Cloud Storage usando o Azure Data Factory ou o Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Tip

Experimente Data Factory no Microsoft Fabric, uma solução de análise completa para empresas. Microsoft Fabric abrange tudo, desde a movimentação de dados até à ciência de dados, análises em tempo real, inteligência empresarial e relatórios. Saiba como iniciar um novo teste gratuitamente!

Este artigo descreve como copiar dados do Google Cloud Storage (GCS). Para saber mais, leia os artigos introdutórios do Azure Data Factory e do Synapse Analytics.

Capacidades suportadas

Este conector do Google Cloud Storage é compatível com os seguintes recursos:

Capacidades suportadas IR
Atividade de cópia (fonte/-) (1) (2)
Mapeando o fluxo de dados (fonte/-)
Atividade de pesquisa (1) (2)
Atividade GetMetadata (1) (2)
Excluir atividade (1) (2)

(1) Infraestrutura de integração do Azure (2) Infraestrutura de integração auto-hospedada

Especificamente, este conector do Google Cloud Storage suporta a cópia de ficheiros tal como está ou a análise de ficheiros com os formatos de ficheiro e codecs de compressão suportados. Ele aproveita a interoperabilidade compatível com o S3 do GCS.

Prerequisites

É necessária a seguinte configuração na sua conta do Google Cloud Storage:

  1. Ativar a interoperabilidade para a sua conta do Google Cloud Storage
  2. Defina o projeto padrão que contém os dados que você deseja copiar do bucket GCS de destino.
  3. Crie uma conta de serviço e defina os níveis corretos de permissões usando o Cloud IAM no GCP.
  4. Gere as chaves de acesso para esta conta de serviço.

Recuperar chave de acesso para o Google Cloud Storage

Permissões necessárias

Para copiar dados do Google Cloud Storage, certifique-se de que recebeu as seguintes permissões para operações de objetos: storage.objects.get e storage.objects.list.

Se você usar a interface do usuário para criar, a permissão será necessária para operações como testar a storage.buckets.list conexão com o serviço vinculado e navegar a partir da raiz. Se não quiser conceder essa permissão, você pode escolher as opções "Testar conexão com o caminho do arquivo" ou "Procurar a partir do caminho especificado" na interface do usuário.

Para obter a lista completa de funções do Google Cloud Storage e permissões associadas, consulte Funções do IAM para armazenamento em nuvem no site do Google Cloud.

Como Começar

Para executar a atividade de cópia com um pipeline, você pode usar uma das seguintes ferramentas ou SDKs:

Criar um serviço vinculado ao Google Cloud Storage usando a interface do usuário

Use as etapas a seguir para criar um serviço vinculado ao Google Cloud Storage na interface do usuário do portal do Azure.

  1. Navegue até a guia Gerenciar em seu espaço de trabalho do Azure Data Factory ou Synapse e selecione Serviços Vinculados e, em seguida, selecione Novo:

  2. Pesquise no Google e selecione o conector do Google Cloud Storage (API do S3).

    Selecione o conector do Google Cloud Storage (API do S3).

  3. Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.

    Configure um serviço vinculado ao Google Cloud Storage.

Detalhes de configuração do conector

As seções a seguir fornecem detalhes sobre as propriedades usadas para definir entidades do Data Factory específicas do Google Cloud Storage.

Propriedades do serviço vinculado

As seguintes propriedades são compatíveis com os serviços vinculados do Google Cloud Storage:

Property Description Required
tipo A propriedade type deve ser definida como GoogleCloudStorage. Yes
accessKeyId ID da chave de acesso secreta. Para encontrar a chave de acesso e o segredo, consulte Pré-requisitos. Yes
secretAccessKey A própria chave de acesso secreta. Marque este campo como SecureString para armazená-lo com segurança ou faça referência a um segredo armazenado no Cofre de Chaves do Azure. Yes
serviceUrl Especifique o ponto de extremidade GCS personalizado como https://storage.googleapis.com. Yes
connectVia O tempo de execução de integração a ser usado para se conectar ao armazenamento de dados. Você pode usar o tempo de execução de integração do Azure ou o tempo de execução de integração auto-hospedado (se seu armazenamento de dados estiver em uma rede privada). Se essa propriedade não for especificada, o serviço usará o tempo de execução de integração padrão do Azure. No

Aqui está um exemplo:

{
    "name": "GoogleCloudStorageLinkedService",
    "properties": {
        "type": "GoogleCloudStorage",
        "typeProperties": {
            "accessKeyId": "<access key id>",
            "secretAccessKey": {
                "type": "SecureString",
                "value": "<secret access key>"
            },
            "serviceUrl": "https://storage.googleapis.com"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propriedades do conjunto de dados

O Azure Data Factory suporta os seguintes formatos de ficheiro. Consulte cada artigo para obter as configurações de acordo com o formato.

As seguintes propriedades são compatíveis com o Google Cloud Storage nas configurações de um conjunto de dados baseado em formato:

Property Description Required
tipo A propriedade type em location no conjunto de dados deve ser definida como GoogleCloudStorageLocation. Yes
bucketName O nome do bucket GCS. Yes
folderPath O caminho para a pasta dentro do bucket fornecido. Se você quiser usar um curinga para filtrar a pasta, ignore essa configuração e especifique isso nas configurações da fonte de atividade. No
fileName O nome do arquivo sob o bucket e o caminho da pasta fornecidos. Se você quiser usar um curinga para filtrar os arquivos, ignore essa configuração e especifique isso nas configurações da fonte de atividade. No

Example:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<Google Cloud Storage linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "GoogleCloudStorageLocation",
                "bucketName": "bucketname",
                "folderPath": "folder/subfolder"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

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 seção fornece uma lista de propriedades suportadas pela fonte do Google Cloud Storage.

Google Cloud Storage como tipo de origem

O Azure Data Factory suporta os seguintes formatos de ficheiro. Consulte cada artigo para obter as configurações de acordo com o formato.

As seguintes propriedades são compatíveis nas configurações de storeSettings para o Google Cloud Storage em uma fonte de cópia com base em formato:

Property Description Required
tipo A propriedade type under storeSettings deve ser definida como GoogleCloudStorageReadSettings. Yes
Localize os ficheiros a copiar:
OPÇÃO 1: caminho estático
Copie do bucket ou caminho de pasta/arquivo especificado no conjunto de dados. Se você quiser copiar todos os arquivos de um bucket ou pasta, especifique wildcardFileName adicionalmente como *.
OPÇÃO 2: Prefixo GCS
- prefixo
Prefixo para o nome da chave GCS no bucket, conforme configurado no conjunto de dados, para filtrar os arquivos GCS de origem. As chaves GCS cujos nomes começam com bucket_in_dataset/this_prefix são selecionadas. Ele utiliza o filtro do lado do servidor do GCS, que oferece melhor desempenho do que um filtro comodín. No
OPÇÃO 3: wildcard
- wildcardFolderPath
O caminho da pasta com caracteres curinga dentro do bucket especificado, configurado num conjunto de dados para filtrar as pastas de origem.
Os curingas permitidos são: * (corresponde a zero ou mais caracteres) e ? (corresponde a zero ou um caractere). Use ^ para escapar se o nome da pasta tiver um curinga ou esse caractere de escape dentro.
Veja mais exemplos em Exemplos de filtros de pastas e ficheiros.
No
OPÇÃO 3: wildcard
- wildcardFileName
O nome do ficheiro com caracteres curinga dentro do bucket e do caminho da pasta fornecido (ou caminho da pasta com caracteres curinga) para filtrar os ficheiros de origem.
Os curingas permitidos são: * (corresponde a zero ou mais caracteres) e ? (corresponde a zero ou um caractere). Use ^ para escapar se o nome do arquivo tiver um curinga ou esse caractere de escape dentro. Veja mais exemplos em Exemplos de filtros de pastas e ficheiros.
Yes
OPÇÃO 3: uma lista de ficheiros
- fileListPath
Indica copiar um dado conjunto de ficheiros. Aponte para um arquivo de texto que inclua uma lista de arquivos que você deseja copiar, um arquivo por linha, que é o caminho relativo para o caminho configurado no conjunto de dados.
Quando estiver usando essa opção, não especifique o nome do arquivo no conjunto de dados. Veja mais exemplos em Exemplos de lista de arquivos.
No
Configurações adicionais:
recursive Indica se os dados são lidos recursivamente das subpastas ou somente da pasta especificada. Observe que quando recursivo é definido como true e o coletor é um armazenamento baseado em arquivo, uma pasta ou subpasta vazia não é copiada ou criada no coletor.
Os valores permitidos são true (padrão) e false.
Esta propriedade não se aplica quando você configura fileListPatho .
No
deleteFilesAfterCompletion Indica se os arquivos binários serão excluídos do armazenamento de origem depois de serem movidos com êxito para o repositório de destino. A exclusão do arquivo é por arquivo, portanto, quando a atividade de cópia falhar, você verá que alguns arquivos já foram copiados para o destino e excluídos da origem, enquanto outros ainda permanecem no armazenamento de origem.
Esta propriedade só é válida no cenário de cópia de arquivos binários. O valor padrão: false.
No
modifiedDatetimeStart Os arquivos são filtrados com base no atributo: última modificação.
Os arquivos serão selecionados se o tempo da última modificação for maior ou igual a modifiedDatetimeStart e menor que modifiedDatetimeEnd. A hora é aplicada ao fuso horário UTC no formato "2018-12-01T05:00:00Z".
As propriedades podem ser NULL, o que significa que nenhum filtro de atributo de arquivo será aplicado ao conjunto de dados. Quando modifiedDatetimeStart tiver um valor datetime, mas modifiedDatetimeEnd for NULL, serão selecionados os ficheiros cuja data de última modificação seja maior ou igual ao valor datetime. Quando modifiedDatetimeEnd tiver um valor datetime, mas modifiedDatetimeStart for NULL, os arquivos cujo atributo da última modificação for menor que o valor datetime serão selecionados.
Esta propriedade não se aplica quando você configura fileListPatho .
No
modifiedDatetimeEnd Mesmo que acima. No
enablePartitionDiscovery Para arquivos particionados, especifique se deseja analisar as partições do caminho do arquivo e adicioná-las como mais colunas de origem.
Os valores permitidos são false (padrão) e true.
No
partitionRootPath Quando a descoberta de partições estiver habilitada, especifique o caminho raiz absoluto para ler pastas particionadas como colunas de dados.

Se não for especificado, por padrão,
- Quando você usa o caminho do arquivo no conjunto de dados ou na lista de arquivos na origem, o caminho da raiz da partição é o caminho configurado no conjunto de dados.
- Quando se utiliza o filtro de pasta com caráter universal, o caminho raiz da partição é o subcaminho antes do primeiro caráter universal.

Por exemplo, supondo que você configure o caminho no conjunto de dados como "root/folder/year=2020/month=08/day=27":
- Se você especificar o caminho da raiz da partição como "root/folder/year=2020", a atividade de cópia gerará mais duas colunas month e day com o valor "08" e "27", respectivamente, além das colunas dentro dos arquivos.
- Se o caminho raiz da partição não for especificado, nenhuma coluna extra será gerada.
No
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. No

Example:

"activities":[
    {
        "name": "CopyFromGoogleCloudStorage",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "GoogleCloudStorageReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv"
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Exemplos de filtros de pastas e ficheiros

Esta seção descreve o comportamento resultante do caminho da pasta e do nome do arquivo com filtros curinga.

bucket chave recursive Estrutura da pasta de origem e resultado do filtro (arquivos em negrito são recuperados)
bucket Folder*/* false bucket
    FolderA
         File1.csv
         File2.json
        Subfolder1
            File3.csv
            File4.json
            File5.csv
    AnotherFolderB
        File6.csv
bucket Folder*/* true bucket
    FolderA
         File1.csv
         File2.json
        Subfolder1
             File3.csv
             File4.json
             File5.csv
    AnotherFolderB
        File6.csv
bucket Folder*/*.csv false bucket
    FolderA
         File1.csv
        File2.json
        Subfolder1
            File3.csv
            File4.json
            File5.csv
    AnotherFolderB
        File6.csv
bucket Folder*/*.csv true bucket
    FolderA
         File1.csv
        File2.json
        Subfolder1
             File3.csv
            File4.json
             File5.csv
    AnotherFolderB
        File6.csv

Exemplos de lista de ficheiros

Esta seção descreve o comportamento resultante do uso de um caminho de lista de arquivos na fonte de atividade Copiar.

Suponha que você tenha a seguinte estrutura de pasta de origem e deseja copiar os arquivos em negrito:

Estrutura de origem da amostra Conteúdo em FileListToCopy.txt Configuration
bucket
    FolderA
         File1.csv
        File2.json
        Subfolder1
             File3.csv
            File4.json
             File5.csv
    Metadata
        FileListToCopy.txt
File1.csv
Subfolder1/File3.csv
Subfolder1/File5.csv
No conjunto de dados:
- Balde: bucket
- Caminho da pasta: FolderA

Na fonte da atividade de cópia:
- Caminho da lista de arquivos: bucket/Metadata/FileListToCopy.txt

O caminho da lista de arquivos aponta para um arquivo de texto no mesmo armazenamento de dados que inclui uma lista de arquivos que você deseja copiar, um arquivo por linha, com o caminho relativo para o caminho configurado no conjunto de dados.

Mapeando propriedades de fluxo de dados

Ao transformar dados em fluxos de dados de mapeamento, você pode ler arquivos do Google Cloud Storage nos seguintes formatos:

As configurações específicas do formato estão localizadas na documentação desse formato. Para obter mais informações, consulte Transformação de origem no mapeamento de fluxo de dados.

Transformação da fonte

Na transformação de origem, você pode ler a partir de um contêiner, pasta ou arquivo individual no Google Cloud Storage. Use a guia Opções de origem para gerenciar como os arquivos são lidos.

Captura de ecrã das opções de origem.

Caminhos curinga: Utilizar um padrão curinga instruirá o serviço a percorrer cada pasta e arquivo correspondentes como parte de uma única operação de transformação de origem. Esta é uma maneira eficaz de processar vários arquivos dentro de um único fluxo. Adicione múltiplos padrões de correspondência de wildcard com o sinal de mais que aparece quando você passa o rato sobre o seu padrão wildcard atual.

No contêiner de origem, escolha uma série de arquivos que correspondam a um padrão. Somente um contêiner pode ser especificado no conjunto de dados. Portanto, o caminho curinga também deve incluir o caminho da pasta a partir da pasta principal.

Exemplos de curingas:

  • * Representa qualquer conjunto de caracteres.

  • ** Representa o aninhamento recursivo de diretórios.

  • ? Substitui um caractere.

  • [] Corresponde a um ou mais caracteres entre parênteses.

  • /data/sales/**/*.csv Obtém todos os arquivos .csv em /data/sales.

  • /data/sales/20??/**/ Obtém todos os arquivos do século XX.

  • /data/sales/*/*/*.csv Obtém arquivos .csv dois níveis abaixo de /data/sales.

  • /data/sales/2004/*/12/[XY]1?.csv Obtém todos os arquivos .csv em dezembro de 2004, começando com X ou Y prefixados por um número de dois dígitos.

Caminho da raiz da partição: Se tiver pastas particionadas na sua fonte de arquivos com um key=value formato (por exemplo, year=2019), poderá atribuir o nível superior dessa árvore de pastas de partição a um nome de coluna no fluxo de dados do seu esquema de dados.

Primeiro, defina um curinga para incluir todos os caminhos que são as pastas particionadas mais os arquivos folha que você deseja ler.

Captura de tela das configurações do arquivo de origem da partição.

Use a configuração Caminho raiz da partição para definir qual é o nível superior da estrutura de pastas. Quando visualizar o conteúdo dos seus dados através de uma pré-visualização de dados, verá que o serviço adicionará as partições resolvidas encontradas em cada um dos seus níveis de pasta.

Captura de ecrã do caminho raiz da partição.

Lista de ficheiros: Este é um conjunto de ficheiros. Crie um arquivo de texto que inclua uma lista de arquivos de caminho relativos a serem processados. Aponte para este ficheiro de texto.

Coluna para armazenar o nome do arquivo: Armazene o nome do arquivo de origem em uma coluna em seus dados. Insira um novo nome de coluna para armazenar a cadeia de caracteres do nome do ficheiro.

Após a conclusão: Escolha não fazer nada com o arquivo de origem depois que o fluxo de dados for executado, exclua o arquivo de origem ou mova o arquivo de origem. Os caminhos para a mudança são relativos.

Para mover os arquivos de origem para outro local pós-processamento, primeiro selecione "Mover" para a operação do arquivo. Em seguida, defina o diretório de origem. Se você não estiver usando nenhum curinga para seu caminho, a configuração "de" será a mesma pasta que sua pasta de origem.

Se você tiver um caminho de origem com curinga, sua sintaxe terá esta aparência:

/data/sales/20??/**/*.csv

Você pode especificar "de" como:

/data/sales

E você pode especificar "para" como:

/backup/priorSales

Nesse caso, todos os arquivos que foram originados em /data/sales são movidos para /backup/priorSales.

Note

As operações de ficheiro são executadas apenas quando se inicia o fluxo de dados a partir de uma execução de pipeline (uma depuração ou execução de pipeline) que utiliza a atividade Executar Fluxo de Dados num pipeline. As operações de ficheiros não são executadas no modo de depuração de fluxo de dados.

Filtrar por última modificação: Você pode filtrar quais arquivos você processa especificando um intervalo de datas de quando eles foram modificados pela última vez. Todas as datas/hora estão em UTC.

Propriedades da atividade de consulta

Para obter detalhes sobre as propriedades, consulte Lookup activity.

Propriedades de atividade GetMetadata

Para saber detalhes sobre as propriedades, verifique a atividade GetMetadata.

Excluir propriedades de atividade

Para saber detalhes sobre as propriedades, marque Excluir atividade.

Modelos antigos

Se você estava usando um conector do Amazon S3 para copiar dados do Google Cloud Storage, ele ainda é suportado, assim como para compatibilidade com versões anteriores. Sugerimos que utilize o novo modelo mencionado anteriormente. A interface de criação passou a gerar o novo modelo.

Para obter uma lista de armazenamentos de dados que a atividade Copiar suporta como fontes e coletores, consulte Armazenamentos de dados suportados.