Partilhar via


Use Snowflake com tabelas Iceberg em OneLake

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

Siga este guia para usar o Snowflake no Azure para:

  • escreva tabelas Iceberg diretamente para OneLake
  • ler tabelas virtuais do Iceberg convertidas a partir do formato Delta Lake

Importante

Este recurso está em pré-visualização.

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

Pré-requisito

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

Criar uma tabela Iceberg em OneLake utilizando o Snowflake no Azure

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

  1. Verifique se a capacidade do Fabric está no mesmo local do Azure que sua instância do Snowflake.

    Identifique a localização da capacidade de malha associada à sua casa de lago de malha. Abra as configurações do espaço de trabalho Malha que contém sua casa do lago.

    Captura de tela mostrando a região de capacidade da malha.

    No canto inferior esquerdo da interface da 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 malha diferente na mesma região que sua conta do Snowflake.

  2. Abra o menu da área Arquivos da sua casa do lago, selecione Propriedades e copie o URL (o caminho HTTPS) dessa pasta.

    Captura de tela mostrando o item de menu Propriedades.

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

    Captura de ecrã a mostrar o ID do inquilino.

  4. Em Snowflake, configure o seu EXTERNAL VOLUME usando o caminho para a pasta Files no seu lakehouse. Mais informações sobre a configuração de volumes externos Snowflake podem ser encontradas aqui.

    Observação

    Snowflake requer que o esquema de URL seja azure://, por isso 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>'
        )
    );
    

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

  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. Esta aplicação é usada por qualquer outro volume externo na sua conta Snowflake.

    DESC EXTERNAL VOLUME onelake_write_exvol;
    

    A saída deste comando retorna as AZURE_CONSENT_URL propriedades 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 <name> parte.

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

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

  8. De volta ao Snowflake, use seu novo volume externo para criar uma mesa 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 Inventory 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. Finalmente, na área Tabelas da mesma casa do lago, você pode criar um atalho OneLake para sua mesa Iceberg. Através desse atalho, sua tabela Iceberg aparece como uma tabela Delta Lake para consumo em cargas de trabalho do Fabric.

Leia uma tabela virtual do Iceberg do OneLake usando o Snowflake no Azure

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

  1. Siga o guia para confirmar que sua tabela Delta Lake foi convertida 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 sua ID de locatário do Fabric. Selecione seu perfil de usuário no canto superior direito da interface do usuário do Fabric e passe o mouse sobre o balão de informações ao lado do Nome do locatário. Copie o ID do locatário.

    Captura de ecrã a mostrar o ID do inquilino.

  3. No Snowflake, configure o seu EXTERNAL VOLUME usando o caminho para a pasta Tables do item de dados que contém a sua tabela. Mais informações sobre a configuração de volumes externos 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;
    

    Observação

    Snowflake requer que o esquema de URL seja azure://, por isso certifique-se de mudar 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. Esta aplicação é usada por qualquer outro volume externo na sua conta Snowflake.

    DESC EXTERNAL VOLUME onelake_read_exvol;
    

    A saída deste comando retorna as AZURE_CONSENT_URL propriedades 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 <name> parte.

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

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

    Sugestão

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

  7. Crie o CATALOG INTEGRATION objeto no Snowflake, se você não tiver feito isso anteriormente. Isto é necessário pela Snowflake para referenciar 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 fazendo referência ao 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>';
    

    Observação

    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 essa instrução, agora você tem uma referência à sua tabela Iceberg virtualizada que agora pode consultar usando o Snowflake.

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

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

Solução de problemas

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