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.
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:
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.
No canto inferior esquerdo da interface da sua conta do Snowflake no Azure, verifique a região do Azure da conta do Snowflake.
Se essas regiões forem diferentes, você precisará usar uma capacidade de Fabric diferente na mesma região da sua conta Snowflake.
Abra o menu da área Arquivos do seu lakehouse, selecione Propriedades e copie a URL (o caminho HTTPS) dessa pasta.
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 .
Em Snowflake, configure seu
EXTERNAL VOLUMEusando o caminho para a pastaFilesem 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 dehttps://paraazure://.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.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_URLeAZURE_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>.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.
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.
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.
Adicione alguns dados à sua tabela Iceberg.
INSERT INTO MYDATABASE.PUBLIC.Inventory VALUES (123456,'Amatriciana');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.
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.jsonda tabela.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 .
No Snowflake, configure o
EXTERNAL VOLUMEusando o caminho para a pastaTablesdo 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 alterarhttps://paraazure://.Substitua
<path_to_data_item>pelo caminho para o item de dados, comohttps://onelake.dfs.fabric.microsoft.com/83896315-c5ba-4777-8d1c-e4ab3a7016bc/a95f62fa-2826-49f8-b561-a163ba537828.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_URLeAZURE_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>.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.
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.
Crie o
CATALOG INTEGRATIONobjeto 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;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, comodbo/MyTable/metadata/321.metadata.json.Depois de executar este comando, você tem uma referência à Tabela Iceberg virtualizada que pode consultar usando o Snowflake.
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.