Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Microsoft OneLake se puede usar con Snowflake para el almacenamiento y el acceso a las tablas de Apache Iceberg.
Siga esta guía para usar Snowflake en Azure para:
- escribir tablas de Iceberg directamente en OneLake
- leer tablas virtuales de Iceberg convertidas desde el formato Delta Lake
Important
Esta característica se encuentra en versión preliminar.
Antes de empezar, siga los pasos de requisitos previos que se muestran a continuación.
Prerequisite
Para usar Snowflake en Azure para escribir o leer tablas de Iceberg con OneLake, la identidad de tu cuenta de Snowflake en Entra ID debe ser capaz de comunicarse con Fabric. Habilite la configuración de nivel de inquilino de Fabric que permita a las entidades de servicio llamar a las API de Fabric y llamar a las API de OneLake.
Escribir una tabla Iceberg en OneLake mediante Snowflake en Azure
Al usar Snowflake en Azure, es posible escribir tablas de Iceberg en OneLake siguiendo estos pasos:
Asegúrese de que la capacidad de Fabric esté en la misma ubicación de Azure que la instancia de Snowflake.
Identifique la ubicación de la capacidad de Fabric asociada al almacén de lago de Fabric. Abra la configuración del área de trabajo de Fabric que contenga el almacén de lago.
En la esquina inferior izquierda de la interfaz de la cuenta de Snowflake en Azure, compruebe la región de Azure de la cuenta de Snowflake.
En caso de que estas regiones sean diferentes, use una capacidad de Fabric diferente en la misma región que la cuenta de Snowflake.
Abra el menú del área Archivos del almacén de lago, seleccione Propiedades y copie la dirección URL (la ruta de acceso HTTPS) de esa carpeta.
Identifique el Id. de inquilino de Fabric. Seleccione el perfil de usuario en la esquina superior derecha de la interfaz de usuario de Fabric y mantenga el puntero sobre la burbuja de información situada junto a su Nombre de inquilino. Copie el identificador de inquilino.
En Snowflake, establece tu
EXTERNAL VOLUMEutilizando la ruta de acceso a la carpeta de tu lakehouseFiles. Encontrará más información sobre cómo configurar volúmenes externos de Snowflake aquí.Note
Snowflake requiere que el esquema de dirección URL sea
azure://, por lo que asegúrese de cambiar la ruta de acceso dehttps://aazure://.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>' ) );En este ejemplo, cualquier tabla que se cree con este volumen externo se almacenará en el almacén de lago de Fabric, dentro de la carpeta
Files/icebergtables.Una vez creado el volumen externo, ejecute el siguiente comando para recuperar la dirección URL de consentimiento y el nombre de la aplicación que Snowflake usa para escribir en OneLake. Cualquier otro volumen externo de la cuenta de Snowflake usa esta aplicación.
DESC EXTERNAL VOLUME onelake_write_exvol;La salida de este comando devuelve las propiedades
AZURE_CONSENT_URLyAZURE_MULTI_TENANT_APP_NAME. Tome nota de ambos valores. El nombre de aplicación multiinquilino de Azure es similar a<name>_<number>, pero solo es necesario capturar la parte<name>.Abra la dirección URL de consentimiento del paso anterior en una nueva pestaña del explorador, si no lo ha hecho anteriormente. Si desea continuar, dé su consentimiento a los permisos de aplicación necesarios, si se le solicita. Es posible que se le redirija al sitio web principal de Snowflake.
De nuevo en Fabric, abra el área de trabajo y seleccione Administrar acceso y, a continuación, Agregar contactos o grupos. Conceda a la aplicación que use el volumen externo de Snowflake los permisos necesarios para escribir datos en almacenes de lago en el área de trabajo. Se recomienda conceder el rol de Colaborador.
De vuelta en Snowflake, use el nuevo volumen externo para crear una tabla de Iceberg.
CREATE OR REPLACE ICEBERG TABLE MYDATABASE.PUBLIC.Inventory ( InventoryId int, ItemName STRING ) EXTERNAL_VOLUME = 'onelake_write_exvol' CATALOG = 'SNOWFLAKE' BASE_LOCATION = 'Inventory/';Después de ejecutar esta instrucción, se ha creado una nueva carpeta de tabla de Iceberg denominada Inventory dentro de la ruta de acceso de carpeta definida en el volumen externo.
Agregue algunos datos en la tabla de Iceberg.
INSERT INTO MYDATABASE.PUBLIC.Inventory VALUES (123456,'Amatriciana');Por último, en el área Tablas del mismo almacén de lago, cree un acceso directo de OneLake a la tabla de Iceberg. A través de ese acceso directo, la tabla de Iceberg aparecerá como una tabla de Delta Lake para su consumo en cargas de trabajo de Fabric.
Lectura de una tabla virtual de Iceberg de OneLake mediante Snowflake en Azure
Para usar Snowflake en Azure para leer una tabla virtual de Iceberg basada en una tabla de Delta Lake en Fabric, siga estos pasos.
Siga la guía para confirmar que su tabla de Delta Lake se ha convertido correctamente a Iceberg y tome nota de la ruta de acceso al elemento de datos que contiene su tabla, así como del archivo más reciente de la misma.
Identifique el Id. de inquilino de Fabric. Seleccione el perfil de usuario en la esquina superior derecha de la interfaz de usuario de Fabric y mantenga el puntero sobre la burbuja de información situada junto a su Nombre de inquilino. Copie el identificador de inquilino.
En Snowflake, configure
EXTERNAL VOLUMEmediante la ruta de acceso a laTablescarpeta del elemento de datos que contiene la tabla. Encontrará más información sobre cómo configurar volúmenes externos de Snowflake aquí.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
Snowflake requiere que el esquema de dirección URL sea
azure://, así que asegúrese de cambiarhttps://porazure://.Reemplace por
<path_to_data_item>la ruta de acceso al elemento de datos, comohttps://onelake.dfs.fabric.microsoft.com/83896315-c5ba-4777-8d1c-e4ab3a7016bc/a95f62fa-2826-49f8-b561-a163ba537828.Una vez creado el volumen externo, ejecute el siguiente comando para recuperar la dirección URL de consentimiento y el nombre de la aplicación que Snowflake usa para escribir en OneLake. Cualquier otro volumen externo de la cuenta de Snowflake usa esta aplicación.
DESC EXTERNAL VOLUME onelake_read_exvol;La salida de este comando devuelve las propiedades
AZURE_CONSENT_URLyAZURE_MULTI_TENANT_APP_NAME. Tome nota de ambos valores. El nombre de aplicación multiinquilino de Azure es similar a<name>_<number>, pero solo es necesario capturar la parte<name>.Abra la dirección URL de consentimiento del paso anterior en una nueva pestaña del explorador, si no lo ha hecho anteriormente. Si desea continuar, dé su consentimiento a los permisos de aplicación necesarios, si se le solicita. Es posible que se le redirija al sitio web principal de Snowflake.
De nuevo en Fabric, abra el área de trabajo y seleccione Administrar acceso y, a continuación, Agregar contactos o grupos. Otorgue a la aplicación que utiliza el volumen externo de Snowflake los permisos necesarios para leer los datos de los elementos de datos en su área de trabajo.
Tip
En su lugar, puede optar por conceder permisos en el nivel de elemento de datos, si lo desea. Obtenga más información sobre el acceso a datos de OneLake.
Cree el
CATALOG INTEGRATIONobjeto en Snowflake, si no lo ha hecho anteriormente. Snowflake requiere esto para hacer referencia a las tablas existentes de Iceberg en el almacenamiento.CREATE CATALOG INTEGRATION onelake_catalog_integration CATALOG_SOURCE = OBJECT_STORE TABLE_FORMAT = ICEBERG ENABLED = TRUE;De nuevo en Snowflake, cree una tabla Iceberg que haga referencia al archivo de metadatos más reciente para la tabla Iceberg virtualizada en 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
Reemplace
<TABLE_NAME>con el nombre de su tabla y<metadata_file_path>con la ruta de acceso del archivo de metadatos de su tabla Iceberg, comodbo/MyTable/metadata/321.metadata.json.Después de ejecutar esta instrucción, ahora tiene una referencia a la tabla virtualizada de Iceberg que ahora puede consultar mediante Snowflake.
Para consultar la tabla virtualizada de Iceberg, ejecute la instrucción siguiente.
SELECT TOP 10 * FROM MYDATABASE.PUBLIC.<TABLE_NAME>;
Troubleshooting
Consulte las secciones de solución de problemas y limitaciones y consideraciones de nuestra documentación sobre la virtualización y conversión de formato de tabla oneLake entre Delta Lake y los formatos de tabla de Apache Iceberg.