Używanie Snowflake z tabelami Iceberg w OneLake

Usługa OneLake może być używana z usługą Snowflake do przechowywania i uzyskiwania dostępu do tabel Apache Iceberg.

Postępuj zgodnie z tym przewodnikiem, aby użyć rozwiązania Snowflake na platformie Azure, aby:

  • zapisywanie tabel Iceberg bezpośrednio do OneLake
  • odczytywanie wirtualnych tabel Iceberg przekonwertowanych z formatu Delta Lake

Przed rozpoczęciem postępuj zgodnie z krokami wstępnymi opisanymi w tym artykule.

Prerequisite

Aby korzystać z Snowflake w usłudze Azure do zapisywania lub odczytywania tabel Iceberg przy użyciu usługi OneLake, tożsamość konta Snowflake w Entra ID musi komunikować się z usługą Fabric. Włącz ustawienia na poziomie dzierżawy Fabric, które umożliwiają jednostkom usługi wywoływanie interfejsów API Fabric i wywoływanie interfejsów API OneLake.

Ważna

Snowflake dociera do usługi OneLake za pośrednictwem sieci publicznej. Rozwiązanie Snowflake nie obsługuje jeszcze łączności z obszarami roboczymi chronionymi za pomocą łącza prywatnego ani innych ograniczeń sieci.

Zapisz tabelę Iceberg do OneLake, używając Snowflake na platformie Azure.

Jeśli używasz usługi Snowflake na platformie Azure, możesz zapisywać tabele Iceberg w usłudze OneLake, postępując zgodnie z poniższymi krokami:

  1. Upewnij się, że pojemność usługi Fabric znajduje się w tym samym regionie Azure co wystąpienie Snowflake.

    Zidentyfikuj lokalizację pojemności sieci szkieletowej skojarzonej z usługą Fabric lakehouse. Otwórz ustawienia obszaru roboczego Fabric zawierającego Twój magazyn lakehouse.

    Zrzut ekranu przedstawiający region pojemności usługi Fabric.

    W lewym dolnym rogu interfejsu konta Snowflake w usłudze Azure sprawdź region Azure tego konta Snowflake.

    Zrzut ekranu przedstawiający region konta snowflake.

    Jeśli te regiony różnią się, musisz użyć innej pojemności Fabric w tym samym regionie co Twoje konto Snowflake.

  2. Otwórz menu obszaru Pliki w usłudze Lakehouse, wybierz pozycję Właściwości i skopiuj adres URL (ścieżkę HTTPS) tego folderu.

    Zrzut ekranu przedstawiający element menu Właściwości.

  3. Określ identyfikator dzierżawy Fabric. Wybierz swój profil użytkownika w prawym górnym rogu interfejsu Fabric i najedź kursorem na ikonę informacji obok pozycji Nazwa dzierżawy. Skopiuj Tenant ID.

    Zrzut ekranu przedstawiający identyfikator dzierżawcy.

  4. W Snowflake skonfiguruj swój EXTERNAL VOLUME, używając ścieżki do folderu Files znajdującego się w lakehouse. Więcej informacji na temat konfiguracji woluminów zewnętrznych Snowflake można znaleźć tutaj.

    Note

    Snowflake wymaga, aby schemat adresu URL był azure://, więc pamiętaj, aby zmienić ścieżkę z https:// na 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>'
        )
    );
    

    W tym przykładzie wszystkie tabele utworzone przy użyciu tego woluminu zewnętrznego są przechowywane w usłudze Fabric lakehouse w folderze Files/icebergtables .

  5. Po utworzeniu woluminu zewnętrznego uruchom następujące polecenie, aby pobrać adres URL zgody i nazwę aplikacji używanej przez usługę Snowflake do zapisu w usłudze OneLake. Ta aplikacja jest używana przez jakikolwiek inny wolumin zewnętrzny na Twoim koncie Snowflake.

    DESC EXTERNAL VOLUME onelake_write_exvol;
    

    Dane wyjściowe tego polecenia zawierają właściwości AZURE_CONSENT_URL i AZURE_MULTI_TENANT_APP_NAME. Zanotuj obie wartości. Nazwa wielodostępnej aplikacji platformy Azure wygląda jak <name>_<number>, ale wystarczy przechwycić tylko część <name>.

  6. Otwórz adres URL zgody z poprzedniego kroku na nowej karcie przeglądarki, jeśli wcześniej nie wykonasz tego kroku. Jeśli chcesz kontynuować, wyrażasz zgodę na wymagane uprawnienia aplikacji, jeśli zostanie wyświetlony monit. Możesz zostać przekierowany do głównej witryny internetowej Snowflake.

  7. Wróć do aplikacji Fabric, otwórz obszar roboczy i wybierz Zarządzaj dostępem, a następnie Dodaj osoby lub grupy. Udziel aplikacji używanej przez wolumin zewnętrzny Snowflake uprawnienia wymagane do zapisywania danych w magazynach typu lakehouse w obszarze roboczym. Zalecamy przyznanie roli Współtwórca.

  8. Po powrocie do Snowflake użyj nowego woluminu zewnętrznego, aby utworzyć tabelę Iceberg.

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

    Ta instrukcja tworzy nowy folder tabeli Iceberg o nazwie Inventory w ścieżce folderu zdefiniowanej w woluminie zewnętrznym.

  9. Dodaj dane do tabeli Iceberg.

    INSERT INTO MYDATABASE.PUBLIC.Inventory
    VALUES
    (123456,'Amatriciana');
    
  10. Na koniec w obszarze Tabele w tym samym lakehouse’ie możesz utworzyć skrót OneLake do tabeli Iceberg. Dzięki temu skrótowi tabela Iceberg jest widoczna jako tabela Delta Lake na potrzeby użycia w obciążeniach platformy Fabric.

Odczytywanie wirtualnej tabeli góry lodowej z usługi OneLake przy użyciu usługi Snowflake na platformie Azure

Aby użyć Snowflake na Azure do odczytania wirtualnej tabeli Iceberg na podstawie tabeli Delta Lake w Fabric, wykonaj następujące kroki.

  1. Postępuj zgodnie z instrukcjami, aby potwierdzić, że tabela Delta Lake została pomyślnie przekonwertowana na Iceberg, i zanotuj ścieżkę do danych zawierających tabelę, a także najbardziej aktualny *.metadata.json plik tabeli.

  2. Określ identyfikator dzierżawy Fabric. Wybierz swój profil użytkownika w prawym górnym rogu interfejsu Fabric i najedź kursorem na ikonę informacji obok pozycji Nazwa dzierżawy. Skopiuj Tenant ID.

    Zrzut ekranu przedstawiający identyfikator dzierżawcy.

  3. W aplikacji Snowflake skonfiguruj plik EXTERNAL VOLUME przy użyciu ścieżki do Tables folderu elementu danych zawierającego tabelę. Więcej informacji na temat konfiguracji woluminów zewnętrznych Snowflake można znaleźć tutaj.

    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 wymaga, aby schemat adresu URL był azure://, więc pamiętaj, aby zmienić wartość https:// na azure://.

    Zastąp <path_to_data_item> ścieżką elementu danych, na przykład https://onelake.dfs.fabric.microsoft.com/83896315-c5ba-4777-8d1c-e4ab3a7016bc/a95f62fa-2826-49f8-b561-a163ba537828.

  4. Po utworzeniu woluminu zewnętrznego uruchom następujące polecenie, aby pobrać adres URL zgody i nazwę aplikacji używanej przez usługę Snowflake do zapisu w usłudze OneLake. Ta aplikacja jest używana przez jakikolwiek inny wolumin zewnętrzny na Twoim koncie Snowflake.

    DESC EXTERNAL VOLUME onelake_read_exvol;
    

    Dane wyjściowe tego polecenia zawierają właściwości AZURE_CONSENT_URL i AZURE_MULTI_TENANT_APP_NAME. Zanotuj obie wartości. Nazwa wielodostępnej aplikacji platformy Azure wygląda jak <name>_<number>, ale wystarczy przechwycić tylko część <name>.

  5. Otwórz adres URL zgody z poprzedniego kroku na nowej karcie przeglądarki, jeśli wcześniej nie wykonasz tego kroku. Jeśli chcesz kontynuować, wyrażasz zgodę na wymagane uprawnienia aplikacji, jeśli zostanie wyświetlony monit. Możesz zostać przekierowany do głównej witryny internetowej Snowflake.

  6. Wróć do aplikacji Fabric, otwórz obszar roboczy i wybierz Zarządzaj dostępem, a następnie Dodaj osoby lub grupy. Nadaj aplikacji używanej przez zewnętrzny wolumin Snowflake uprawnienia potrzebne do odczytywania danych z elementów danych w obszarze roboczym.

    Tip

    Możesz zamiast tego wybrać przyznanie uprawnień na poziomie elementów danych, jeśli chcesz. Dowiedz się więcej o dostępie do danych usługi OneLake.

  7. CATALOG INTEGRATION Utwórz obiekt w aplikacji Snowflake, jeśli wcześniej nie wykonasz tego kroku. Ten krok jest wymagany przez Snowflake do odniesienia się do istniejących tabel Iceberg w przechowywaniu.

    CREATE CATALOG INTEGRATION onelake_catalog_integration
    CATALOG_SOURCE = OBJECT_STORE
    TABLE_FORMAT = ICEBERG
    ENABLED = TRUE;
    
  8. Wróć do systemu Snowflake i utwórz tabelę Iceberg, która będzie się odwoływać do najnowszego pliku metadanych dla zwirtualizowanej tabeli Iceberg w usłudze 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

    Zastąp <TABLE_NAME> nazwą tabeli, a <metadata_file_path> ścieżką pliku metadanych tabeli Iceberg, taką jak dbo/MyTable/metadata/321.metadata.json.

    Po uruchomieniu tej instrukcji masz teraz odwołanie do zwirtualizowanej tabeli Iceberg, do której możesz teraz wykonywać zapytania za pomocą usługi Snowflake.

  9. Wykonaj zapytanie względem zwirtualizowanej tabeli Iceberg, uruchamiając następującą instrukcję.

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

Troubleshooting

Zapoznaj się z sekcjami dotyczącymi rozwiązywania problemów, ograniczeń oraz zagadnień w naszej dokumentacji dotyczącej wirtualizacji formatu tabel OneLake i konwersji między formatami tabel Delta Lake i Apache Iceberg.