Compartir a través de


Uso de Snowflake con tablas de Iceberg en OneLake

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:

  1. 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.

    Captura de pantalla en la que se muestra la región de capacidad de Fabric.

    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.

    Captura de pantalla en la que se muestra la región 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.

  2. 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.

    Captura de pantalla en la que se muestra el elemento de menú Propiedades.

  3. 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.

    Captura de pantalla en la que se muestra el identificador de inquilino.

  4. En Snowflake, establece tu EXTERNAL VOLUME utilizando la ruta de acceso a la carpeta de tu lakehouse Files. 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 de https:// a 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>'
        )
    );
    

    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.

  5. 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_URL y AZURE_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>.

  6. 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.

  7. 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.

  8. 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.

  9. Agregue algunos datos en la tabla de Iceberg.

    INSERT INTO MYDATABASE.PUBLIC.Inventory
    VALUES
    (123456,'Amatriciana');
    
  10. 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.

  1. 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.

  2. 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.

    Captura de pantalla en la que se muestra el identificador de inquilino.

  3. En Snowflake, configure EXTERNAL VOLUME mediante la ruta de acceso a la Tables carpeta 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 cambiar https:// por azure://.

    Reemplace por <path_to_data_item> la ruta de acceso al elemento de datos, como https://onelake.dfs.fabric.microsoft.com/83896315-c5ba-4777-8d1c-e4ab3a7016bc/a95f62fa-2826-49f8-b561-a163ba537828.

  4. 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_URL y AZURE_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>.

  5. 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.

  6. 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.

  7. Cree el CATALOG INTEGRATION objeto 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;
    
  8. 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, como dbo/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.

  9. 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.