Udostępnij przez


Używanie Snowflake z tabelami Iceberg w OneLake

Rozwiązanie Microsoft OneLake może być używane z usługą Snowflake w celu 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

Important

Ta funkcja jest dostępna w wersji zapoznawczej.

Przed rozpoczęciem wykonaj poniższe czynności wstępne.

Prerequisite

Aby używać usługi Snowflake na platformie Azure do zapisywania lub odczytywania tabel Iceberg za pomocą usługi OneLake, tożsamość konta Snowflake w Entra ID musi być w stanie 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.

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

Jeśli używasz usługi Snowflake na platformie Azure, możesz napisać tabele Góry lodowej w usłudze OneLake, wykonując następujące kroki:

  1. Upewnij się, że pojemność sieci szkieletowej znajduje się w tej samej lokalizacji platformy Azure co wystąpienie usługi Snowflake.

    Zidentyfikuj lokalizację pojemności sieci szkieletowej skojarzonej z usługą Fabric lakehouse. Otwórz ustawienia obszaru roboczego Sieć szkieletowa, który zawiera usługę Lakehouse.

    Zrzut ekranu przedstawiający region pojemności sieci szkieletowej.

    W lewym dolnym rogu interfejsu konta usługi Snowflake na koncie platformy Azure sprawdź region świadczenia usługi Azure konta snowflake.

    Zrzut ekranu przedstawiający region konta snowflake.

    Jeśli te regiony są inne, musisz użyć innej pojemności sieci szkieletowej w tym samym regionie co konto usługi 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. Zidentyfikuj identyfikator dzierżawy sieci szkieletowej. Wybierz swój profil użytkownika w prawym górnym rogu interfejsu użytkownika sieci szkieletowej i umieść wskaźnik myszy na bąbelku informacji obok nazwy dzierżawy. Skopiuj Tenant ID.

    Zrzut ekranu przedstawiający identyfikator dzierżawy.

  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 konfigurowania 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 dowolny inny wolumin zewnętrzny na koncie snowflake.

    DESC EXTERNAL VOLUME onelake_write_exvol;
    

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

  6. Otwórz adres URL zgody z poprzedniego kroku na nowej karcie przeglądarki, jeśli wcześniej tego nie zrobiono. 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 obszaru szkieletowego, otwórz obszar roboczy i wybierz pozycję 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ółautor .

  8. Wróć do snowflake, użyj nowego woluminu zewnętrznego, aby utworzyć tabelę Góry lodowej.

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

    Po uruchomieniu tej instrukcji, nowy folder tabeli Iceberg o nazwie Inventory został utworzony w ścieżce folderu określonej w woluminie zewnętrznym.

  9. Dodaj dane do tabeli Góry Lodowej.

    INSERT INTO MYDATABASE.PUBLIC.Inventory
    VALUES
    (123456,'Amatriciana');
    
  10. Na koniec w obszarze Tabele tego samego jeziora możesz utworzyć skrót OneLake do tabeli Góry Lodowej. Za pomocą tego skrótu tabela Iceberg jest wyświetlana jako tabela usługi Delta Lake do użycia w obciążeniach sieci szkieletowej.

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 przewodnikiem, aby potwierdzić, że tabela Delta Lake została pomyślnie przekonwertowana na Iceberg, i zanotuj ścieżkę do elementu danych, który zawiera tabelę, a także najnowszy *.metadata.json plik tabeli.

  2. Zidentyfikuj identyfikator dzierżawy sieci szkieletowej. Wybierz swój profil użytkownika w prawym górnym rogu interfejsu użytkownika sieci szkieletowej i umieść wskaźnik myszy na bąbelku informacji obok nazwy dzierżawy. Skopiuj Tenant ID.

    Zrzut ekranu przedstawiający identyfikator dzierżawy.

  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 konfigurowania 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 dowolny inny wolumin zewnętrzny na koncie snowflake.

    DESC EXTERNAL VOLUME onelake_read_exvol;
    

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

  5. Otwórz adres URL zgody z poprzedniego kroku na nowej karcie przeglądarki, jeśli wcześniej tego nie zrobiono. 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 obszaru szkieletowego, otwórz obszar roboczy i wybierz pozycję 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

    Zamiast tego możesz przyznać uprawnienia na poziomie elementu 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 tego nie zrobiono. Jest to wymagane przez Snowflake do odwoływania się do istniejących tabel Iceberg w pamięci masowej.

    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, którą można teraz przeszukiwać przy użyciu 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.