Compartilhar via


Usar Floco de Neve com tabelas iceberg no OneLake

O Microsoft OneLake pode ser usado com Snowflake para armazenamento e acesso de tabelas do Apache Iceberg.

Siga este guia para usar o Snowflake no Azure:

  • gravar tabelas de Iceberg diretamente no OneLake
  • ler tabelas de Iceberg virtuais convertidas do formato Delta Lake

Important

Esse recurso está na versão prévia.

Antes de começar, siga as etapas de pré-requisito mostradas abaixo.

Prerequisite

Para usar o Snowflake no Azure para escrever ou ler tabelas Iceberg com o OneLake, a identidade da sua conta Snowflake no Entra ID precisa ser capaz de se comunicar com o Fabric. Habilite as configurações de nível de locatário do Fabric que permitem que as entidades de serviço chamem APIs do Fabric e chamem APIs do OneLake.

Escrever uma tabela Iceberg no OneLake usando Snowflake no Azure

Se você usar o Snowflake no Azure, poderá gravar tabelas Iceberg no OneLake seguindo essas etapas:

  1. Certifique-se de que sua capacidade do Fabric esteja no mesmo local do Azure que sua instância do Snowflake.

    Identifique a localização da capacidade do Fabric associada ao seu lakehouse do Fabric. Abra as configurações do espaço de trabalho do Fabric que contém sua casa no lago.

    Captura de tela mostrando a região de capacidade do Fabric.

    No canto inferior esquerdo da interface da sua conta do Snowflake no Azure, verifique a região do Azure da conta do Snowflake.

    Captura de tela mostrando a região da conta Snowflake.

    Se essas regiões forem diferentes, você precisará usar uma capacidade de Fabric diferente na mesma região da sua conta Snowflake.

  2. Abra o menu da área Arquivos do seu lakehouse, selecione Propriedades e copie a URL (o caminho HTTPS) dessa pasta.

    Captura de tela mostrando o item de menu Propriedades.

  3. Identifique seu ID de locatário do Fabric. Selecione seu perfil de usuário no canto superior direito da IU do Fabric e passe o mouse sobre o balão de informações ao lado do seu Nome do locatário. Copie a ID do locatário .

    Captura de tela mostrando o ID do inquilino.

  4. Em Snowflake, configure seu EXTERNAL VOLUME usando o caminho para a pasta Files em seu lakehouse. Mais informações sobre como configurar volumes externos do Snowflake podem ser encontradas aqui.

    Note

    Snowflake requer que o esquema de URL seja azure://, portanto, certifique-se de alterar o caminho de https:// para azure://.

    CREATE OR REPLACE EXTERNAL VOLUME onelake_write_exvol
    STORAGE_LOCATIONS =
    (
        (
            NAME = 'onelake_write_exvol'
            STORAGE_PROVIDER = 'AZURE'
            STORAGE_BASE_URL = 'azure://<path_to_lakehouse>/Files/icebergtables'
            AZURE_TENANT_ID = '<Tenant_ID>'
        )
    );
    

    Nesse exemplo, todas as tabelas criadas usando esse volume externo são armazenadas no Fabric lakehouse, dentro da pasta Files/icebergtables.

  5. Agora que seu volume externo foi criado, execute o seguinte comando para recuperar a URL de consentimento e o nome do aplicativo que o Snowflake usa para gravar no OneLake. Esse aplicativo é usado por qualquer outro volume externo na sua conta Snowflake.

    DESC EXTERNAL VOLUME onelake_write_exvol;
    

    A saída desse comando retorna as propriedades AZURE_CONSENT_URL e AZURE_MULTI_TENANT_APP_NAME. Tome nota de ambos os valores. O nome do aplicativo multilocatário do Azure se parece com <name>_<number>, mas você só precisa capturar a parte <name>.

  6. Abra a URL de consentimento da etapa anterior em uma nova guia do navegador, se você ainda não fez isso. Se você quiser continuar, concorde com as permissões necessárias do aplicativo, se solicitado. Você pode ser redirecionado para o site principal do Snowflake.

  7. De volta ao Fabric, abra seu espaço de trabalho e selecione Gerenciar acesso, depois Adicionar pessoas ou grupos. Conceda ao aplicativo usado pelo seu volume externo Snowflake as permissões necessárias para gravar dados em lakehouses no seu espaço de trabalho. Recomendamos conceder a função Contribuidor.

  8. De volta ao Snowflake, use seu novo volume externo para criar uma tabela Iceberg.

    CREATE OR REPLACE ICEBERG TABLE MYDATABASE.PUBLIC.Inventory (
        InventoryId int,
        ItemName STRING
    )
    EXTERNAL_VOLUME = 'onelake_write_exvol'
    CATALOG = 'SNOWFLAKE'
    BASE_LOCATION = 'Inventory/';
    

    Depois de executar essa instrução, uma nova pasta de tabela Iceberg chamada Inventário foi criada dentro do caminho da pasta definido no volume externo.

  9. Adicione alguns dados à sua tabela Iceberg.

    INSERT INTO MYDATABASE.PUBLIC.Inventory
    VALUES
    (123456,'Amatriciana');
    
  10. Por fim, na área de Tabelas do mesmo lakehouse, você pode criar um atalho OneLake para sua mesa Iceberg. Por meio desse atalho, sua tabela Iceberg aparece como uma tabela Delta Lake para consumo em todas as cargas de trabalho do Fabric.

Ler uma tabela de Iceberg virtual do OneLake usando Snowflake no Azure

Para usar o Snowflake no Azure para ler uma tabela Iceberg virtual baseada em uma tabela Delta Lake no Fabric, siga estas etapas.

  1. Siga o guia para confirmar se a tabela Delta Lake se converteu com êxito em Iceberg e anote o caminho para o item de dados que contém sua tabela, bem como o arquivo mais recente *.metadata.json da tabela.

  2. Identifique seu ID de locatário do Fabric. Selecione seu perfil de usuário no canto superior direito da IU do Fabric e passe o mouse sobre o balão de informações ao lado do seu Nome do locatário. Copie a ID do locatário .

    Captura de tela mostrando o ID do inquilino.

  3. No Snowflake, configure o EXTERNAL VOLUME usando o caminho para a pasta Tables do item de dados que contém sua tabela. Mais informações sobre como configurar volumes externos do Snowflake podem ser encontradas aqui.

    CREATE OR REPLACE EXTERNAL VOLUME onelake_read_exvol
    STORAGE_LOCATIONS =
    (
        (
            NAME = 'onelake_read_exvol'
            STORAGE_PROVIDER = 'AZURE'
            STORAGE_BASE_URL = 'azure://<path_to_data_item>/Tables/'
            AZURE_TENANT_ID = '<Tenant_ID>'
        )
    )
    ALLOW_WRITES = false;
    

    Note

    O Snowflake exige que o esquema de URL seja azure://, portanto, certifique-se de alterar https:// para azure://.

    Substitua <path_to_data_item> pelo caminho para o item de dados, como https://onelake.dfs.fabric.microsoft.com/83896315-c5ba-4777-8d1c-e4ab3a7016bc/a95f62fa-2826-49f8-b561-a163ba537828.

  4. Agora que seu volume externo foi criado, execute o seguinte comando para recuperar a URL de consentimento e o nome do aplicativo que o Snowflake usa para gravar no OneLake. Esse aplicativo é usado por qualquer outro volume externo na sua conta Snowflake.

    DESC EXTERNAL VOLUME onelake_read_exvol;
    

    A saída desse comando retorna as propriedades AZURE_CONSENT_URL e AZURE_MULTI_TENANT_APP_NAME. Tome nota de ambos os valores. O nome do aplicativo multilocatário do Azure se parece com <name>_<number>, mas você só precisa capturar a parte <name>.

  5. Abra a URL de consentimento da etapa anterior em uma nova guia do navegador, se você ainda não fez isso. Se você quiser continuar, concorde com as permissões necessárias do aplicativo, se solicitado. Você pode ser redirecionado para o site principal do Snowflake.

  6. De volta ao Fabric, abra seu espaço de trabalho e selecione Gerenciar acesso, depois Adicionar pessoas ou grupos. Conceda ao aplicativo usado pelo volume externo Snowflake as permissões necessárias para ler dados de itens de dados no seu workspace.

    Tip

    Em vez disso, você pode optar por conceder permissões no nível do item de dados, se desejar. Saiba mais sobre o acesso a dados do OneLake.

  7. Crie o CATALOG INTEGRATION objeto no Snowflake, se você ainda não fez isso anteriormente. Isso é exigido pelo Snowflake para fazer referência às tabelas Iceberg existentes no armazenamento.

    CREATE CATALOG INTEGRATION onelake_catalog_integration
    CATALOG_SOURCE = OBJECT_STORE
    TABLE_FORMAT = ICEBERG
    ENABLED = TRUE;
    
  8. De volta ao Snowflake, crie uma tabela Iceberg que referencie o arquivo de metadados mais recente para a tabela Iceberg virtualizada no OneLake.

    CREATE OR REPLACE ICEBERG TABLE MYDATABASE.PUBLIC.<TABLE_NAME>
    EXTERNAL_VOLUME = 'onelake_read_exvol'
    CATALOG = onelake_catalog_integration
    METADATA_FILE_PATH = '<metadata_file_path>';
    

    Note

    Substitua <TABLE_NAME> pelo nome da tabela e <metadata_file_path> pelo caminho do arquivo de metadados da tabela Iceberg, como dbo/MyTable/metadata/321.metadata.json.

    Depois de executar este comando, você tem uma referência à Tabela Iceberg virtualizada que pode consultar usando o Snowflake.

  9. Consulte sua tabela de Iceberg virtualizada executando a instrução a seguir.

    SELECT TOP 10 * FROM MYDATABASE.PUBLIC.<TABLE_NAME>;
    

Troubleshooting

Confira as seções de solução de problemase limitações e considerações de nossa documentação de virtualização e conversão de formato de tabela do OneLake entre os formatos de tabela Delta Lake e Apache Iceberg.