Odczytywanie danych udostępnionych za pomocą tokenów elementu nośnego

Na tej stronie opisano sposób odczytywania danych udostępnionych Użytkownikowi przy użyciu protokołu OpenSharing open sharing z tokenami elementu nośnego. Zawiera instrukcje dotyczące odczytywania udostępnionych danych przy użyciu następujących narzędzi:

W tym modelu udostępniania używasz pliku poświadczeń udostępnionego członkowi zespołu przez dostawcę danych, aby uzyskać bezpieczny dostęp do odczytu do udostępnionych danych. Dostęp trwa tak długo, jak dane uwierzytelniające są ważne, a dostawca kontynuuje udostępnianie danych. Dostawcy zarządzają wygasaniem i rotacją poświadczeń. Aktualizacje danych są dostępne niemal w czasie rzeczywistym. Możesz odczytywać i tworzyć kopie udostępnionych danych, ale nie można modyfikować danych źródłowych.

Uwaga / Notatka

Jeśli dane zostały Ci udostępnione przy użyciu usługi Databricks-to-Databricks OpenSharing, nie potrzebujesz pliku poświadczeń, aby uzyskać dostęp do danych, a ta strona nie ma zastosowania do Ciebie. Zamiast tego zobacz Odczyt danych udostępnionych przy użyciu usługi Databricks-to-Databricks OpenSharing (dla adresatów).

W poniższych sekcjach opisano, jak używać platformy Apache Spark, pandas, Power BI i klientów Góry Lodowej do uzyskiwania dostępu do udostępnionych danych i odczytywania ich przy użyciu pliku poświadczeń. Pełną listę łączników openSharing i informacje o sposobie ich używania można znaleźć w dokumentacji open source OpenSharing. Jeśli napotkasz problemy z dostępem do danych udostępnionych, skontaktuj się z dostawcą danych.

Przed rozpoczęciem

Członek zespołu musi pobrać plik poświadczeń udostępniony przez dostawcę danych i użyć bezpiecznego kanału, aby udostępnić ci ten plik lub lokalizację pliku. Zobacz Uzyskiwanie dostępu w modelu udostępniania usługi Databricks-to-Open.

Aby uzyskać dokumentację specyficzną dla łącznika, zobacz stronę pobierania poświadczeń.

Klienci Iceberg: odczytywanie udostępnionych danych

Użyj zewnętrznych klientów Iceberg, takich jak Snowflake, Trino, Flink i Spark, aby odczytywać udostępnione zasoby danych z dostępem bez kopii przy użyciu interfejsu API katalogu REST Apache Iceberg.

Uzyskiwanie poświadczeń połączenia

Zanim uzyskasz dostęp do udostępnionych zasobów danych za pomocą zewnętrznych klientów Iceberg, zbierz następujące poświadczenia:

  • Punkt końcowy katalogu REST Iceberg
  • Prawidłowy token elementu nośnego
  • Nazwa udziału
  • (Opcjonalnie) Przestrzeń nazw lub nazwa schematu
  • (Opcjonalnie) Nazwa tabeli

Punkt końcowy katalogu REST Iceberg (icebergEndpoint) i token Bearer znajdują się w pliku poświadczeń udostępnionym Tobie przez dostawcę danych. Aby uzyskać więcej informacji, zobacz Przed rozpoczęciem. Nazwę zasobu udostępnionego, przestrzeń nazw i nazwę tabeli można pobrać programowo przy użyciu interfejsów API OpenSharing.

Ważna

Element icebergEndpoint znajduje się w pliku poświadczeń i ma format <workspace-url>/api/2.0/delta-sharing/metastores/<metastore-id>/iceberg.

W poniższych przykładach pokazano, jak uzyskać dodatkowe poświadczenia. Wprowadź punkt końcowy, punkt końcowy Iceberg i token typu Bearer z pliku poświadczeń:

// List shares
curl -X GET "<endpoint>/shares" \
   -H "Authorization: Bearer <bearerToken>"

// List namespaces
curl -X GET "<icebergEndpoint>/v1/shares/<share>/namespaces" \
   -H "Authorization: Bearer <bearerToken>"

// List tables
curl -X GET "<icebergEndpoint>/v1/shares/<share>/namespaces/<namespace>/tables" \
   -H "Authorization: Bearer <bearerToken>"

Uwaga / Notatka

Ta metoda zawsze pobiera najbardziej aktualną listę zasobów. Wymaga to jednak dostępu do Internetu i może być trudniejsze do zintegrowania w środowiskach bez kodu.

Konfiguracja katalogu Iceberg

Po uzyskaniu niezbędnych poświadczeń połączenia skonfiguruj klienta tak, aby używał punktów końcowych katalogu REST Iceberg do tworzenia tabel i wykonywania względem nich zapytań.

  1. Dla każdego udziału utwórz integrację katalogową.

    USE ROLE ACCOUNTADMIN;
    
    CREATE OR REPLACE CATALOG INTEGRATION <CATALOG_PLACEHOLDER>
    CATALOG_SOURCE = ICEBERG_REST
    TABLE_FORMAT = ICEBERG
    REST_CONFIG = (
       CATALOG_URI = '<icebergEndpoint>',
       WAREHOUSE = '<share_name>',
       ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
    )
    REST_AUTHENTICATION = (
       TYPE = BEARER,
       BEARER_TOKEN = '<bearerToken>'
    )
    ENABLED = TRUE;
    
  2. Opcjonalnie dodaj, REFRESH_INTERVAL_SECONDS aby zachować aktualność metadanych. Ustaw wartość na podstawie częstotliwości aktualizacji katalogu.

    REFRESH_INTERVAL_SECONDS = 30
    
  3. Po skonfigurowaniu wykazu utwórz bazę danych z katalogu. Spowoduje to automatyczne utworzenie wszystkich schematów i tabel w tym wykazie.

    CREATE DATABASE <DATABASE_PLACEHOLDER>
    LINKED_CATALOG = (
       CATALOG = <CATALOG_PLACEHOLDER>
    );
    
  4. Aby potwierdzić, że udostępnianie zakończyło się pomyślnie, wykonaj zapytanie z tabeli w bazie danych. Powinny zostać wyświetlone dane udostępnione z usługi Azure Databricks.

Jeśli wynik jest pusty lub wystąpi błąd, wykonaj następujące typowe kroki rozwiązywania problemów:

  • Dokładnie sprawdź uprawnienia, stan generowania migawki i poświadczenia REST.
  • Skontaktuj się z dostawcą danych.
  • Zapoznaj się z dokumentacją specyficzną dla klienta Iceberg.

Przykład: uzyskiwanie dostępu do udostępnionych tabel przy użyciu różnych klientów Iceberg

Poniższe przykłady pokazują, jak uzyskiwać dostęp do tabel openshared przy użyciu zewnętrznych klientów Iceberg, takich jak Snowflake, Apache Spark, PyIceberg i interfejs API REST, po uzyskaniu danych uwierzytelniających połączenia. Aby uzyskać więcej informacji na temat uzyskiwania poświadczeń połączenia, zobacz Przed rozpoczęciem.

Snowflake

Aby odczytać udostępnione zasoby danych w usłudze Snowflake, przekaż pobrany plik poświadczeń i wygeneruj niezbędne polecenie SQL:

  1. W linku aktywacyjnym OpenSharing kliknij ikonę Snowflake.

  2. Na stronie integracji rozwiązania Snowflake przekaż plik poświadczeń otrzymany od dostawcy danych.

    Przekazywanie pliku poświadczeń w aplikacji Snowflake

  3. Po załadowaniu poświadczeń wybierz udział, do którego chcesz uzyskać dostęp w Snowflake.

  4. Kliknij pozycję Generuj sql po wybraniu żądanych zasobów.

    Generowanie polecenia SQL dla rozwiązania Snowflake

  5. Skopiuj i wklej wygenerowany język SQL do arkusza snowflake. Zastąp CATALOG_PLACEHOLDER ciąg nazwą katalogu, którego chcesz użyć, i DATABASE_PLACEHOLDER nazwą bazy danych, której chcesz użyć.

Limitations

Nawiązywanie połączenia z katalogiem REST Góry lodowej w aplikacji Snowflake ma następujące ograniczenia:

  • Plik metadanych nie jest automatycznie aktualizowany przy użyciu najnowszej migawki. Należy polegać na automatycznym odświeżaniu lub ręcznym odświeżaniu.
  • R2 nie jest obsługiwany.
  • Obowiązują wszystkie ograniczenia klienta Iceberg.

Apache Spark

Aby uzyskać dostęp do udostępnionych tabel przy użyciu platformy Apache Spark, skonfiguruj interfejs API katalogu REST platformy Iceberg przy użyciu następujących ustawień. Zamień <spark-catalog-name> na nazwę swojego katalogu i wprowadź poświadczenia połączenia.

"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",

# Configuration for accessing tables shared using Delta Sharing
"spark.sql.catalog.<spark-catalog-name>":"org.apache.iceberg.spark.SparkCatalog",
"spark.sql.catalog.<spark-catalog-name>.type": "rest",
"spark.sql.catalog.<spark-catalog-name>.uri": "<icebergEndpoint>",
"spark.sql.catalog.<spark-catalog-name>.token": "<bearerToken>",
"spark.sql.catalog.<spark-catalog-name>.warehouse":"<share_name>",
"spark.sql.catalog.<spark-catalog-name>.scope":"all-apis"

PyIceberg

PyIceberg to implementacja języka Python do uzyskiwania dostępu do tabel Góry Lodowej bez używania maszyny JVM. PyIceberg wymaga pyarrow do operacji na tabelach, takich jak odczytywanie danych i przeglądanie metadanych tabeli. Zainstaluj aplikację PyIceberg z dodatkowymi pyarrow elementami:

pip install "pyiceberg[pyarrow]"

Aby uzyskać dostęp do tabel udostępnionych, dodaj następującą konfigurację katalogu do pliku konfiguracji PyIceberg:

catalog:
  delta_sharing:
    type: rest
    uri: <icebergEndpoint>
    warehouse: <share_name>
    token: <bearerToken>

interfejs API REST

Użyj wywołania interfejsu API REST, takiego jak w poniższym curl przykładzie, aby załadować tabelę i pobrać jej metadane wraz z tymczasowymi poświadczeniami na potrzeby uzyskiwania dostępu do plików danych:

curl -X GET -H "Authorization: Bearer <bearerToken>" -H "Accept: application/json" \
<icebergEndpoint>/v1/shares/<share_name>/namespaces/<schema_name>/tables/<table_name>

Odpowiedź zawiera metadane tabeli Iceberg, lokalizację S3 i tymczasowe poświadczenia platformy AWS, które umożliwiają klientowi odczytywanie plików danych:

{
  "metadata-location": "s3://bucket/path/to/iceberg/table/metadata/file",
  "metadata": <iceberg-table-metadata-json>,
  "config": {
    "expires-at-ms": "<epoch-ts-in-millis>",
    "s3.access-key-id": "<temporary-s3-access-key-id>",
    "s3.session-token": "<temporary-s3-session-token>",
    "s3.secret-access-key": "<temporary-secret-access-key>",
    "client.region": "<aws-bucket-region-for-metadata-location>"
  }
}

Ograniczenia klienta Iceberg

Podczas wysyłania zapytań do danych OpenSharing z klientów Iceberg obowiązują następujące ograniczenia:

  • W przypadku wyświetlania listy tabel w przestrzeni nazw, jeśli przestrzeń nazw zawiera więcej niż 100 widoków udostępnionych, odpowiedź jest ograniczona do pierwszych 100 widoków.

Apache Spark: odczytywanie udostępnionych danych

Aby uzyskać dostęp do udostępnionych danych za pomocą Spark w wersji 3.x lub wyższej, wykonaj następujące kroki.

Instrukcje te zakładają, że masz dostęp do pliku z danymi uwierzytelniającymi, który został udostępniony przez dostawcę danych. Zobacz Uzyskiwanie dostępu w modelu udostępniania usługi Databricks-to-Open.

Ważna

Upewnij się, że plik poświadczeń jest dostępny dla platformy Apache Spark przy użyciu ścieżki bezwzględnej. Ścieżka może odwoływać się do obiektu w chmurze lub obszaru Unity Catalogu.

Uwaga / Notatka

Jeśli używasz platformy Spark w obszarze roboczym Azure Databricks z włączoną opcją Unity Catalog i jeśli użyłeś interfejsu użytkownika importu do zaimportowania dostawcy i udostępnienia, instrukcje w tej sekcji nie dotyczą Ciebie. Można uzyskać dostęp do tabel udostępnionych tak samo jak do każdej innej tabeli zarejestrowanej w katalogu Unity. Nie trzeba instalować łącznika delta-sharing Python ani podać ścieżkę do pliku poświadczeń. Zobacz Importowanie dostawcy i odczytywanie udostępnionych danych w Azure Databricks.

Instalowanie łączników openSharing Python i Spark

Aby uzyskać dostęp do metadanych związanych z udostępnionymi danymi, takich jak lista tabel udostępnionych Tobie, wykonaj następujące czynności. Ten przykład używa Pythona.

  1. Zainstaluj konektor delta-sharing dla Pythona. Aby uzyskać informacje na temat ograniczeń łącznika Python, zobacz Ograniczenia łącznika openSharing Python.

    pip install delta-sharing
    
  2. Zainstaluj łącznik platformy Apache Spark.

Wymień zbiorcze tabele za pomocą Spark

Wymień tabele w udziale. W poniższym przykładzie zamień <profile-path> na lokalizację pliku uwierzytelniającego.

import delta_sharing

client = delta_sharing.SharingClient(f"<profile-path>/config.share")

client.list_all_tables()

Wynikiem jest tablica tabel, wraz z metadanymi dla każdej tabeli. W poniższym wyniku widać dwie tabele:

Out[10]: [Table(name='example_table', share='example_share_0', schema='default'), Table(name='other_example_table', share='example_share_0', schema='default')]

Jeśli dane wyjściowe są puste lub nie zawierają oczekiwanych tabel, skontaktuj się z dostawcą danych.

Uzyskaj dostęp do współdzielonych danych za pomocą Spark

Uruchom następujące, zastępując te zmienne:

  • <profile-path>: lokalizacja pliku z poświadczeniami.
  • <share-name>: wartość share= dla tabeli.
  • <schema-name>: wartość schema= dla tabeli.
  • <table-name>: wartość name= dla tabeli.
  • <version-as-of>: opcjonalny. Wersja tabeli do załadowania danych. Działa tylko wtedy, gdy dostawca danych udostępnia historię tabeli. Wymaga delta-sharing-spark 0.5.0 lub wyższą wersję.
  • <timestamp-as-of>: opcjonalny. Załaduj dane w wersji sprzed lub o podanej sygnaturze czasowej. Działa tylko wtedy, gdy dostawca danych udostępnia historię tabeli. Wymaga delta-sharing-spark wersji 0.6.0 lub nowszej.

Python

delta_sharing.load_as_spark(f"<profile-path>#<share-name>.<schema-name>.<table-name>", version=<version-as-of>)

spark.read.format("deltaSharing")\
.option("versionAsOf", <version-as-of>)\
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")\
.limit(10)

delta_sharing.load_as_spark(f"<profile-path>#<share-name>.<schema-name>.<table-name>", timestamp=<timestamp-as-of>)

spark.read.format("deltaSharing")\
.option("timestampAsOf", <timestamp-as-of>)\
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")\
.limit(10)

Scala

spark.read.format("deltaSharing")
.option("versionAsOf", <version-as-of>)
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")
.limit(10)

spark.read.format("deltaSharing")
.option("timestampAsOf", <version-as-of>)
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")
.limit(10)

Uzyskaj dostęp do udostępnionego strumienia danych o zmianach za pomocą Spark

Jeśli historia tabeli została Ci udostępniona i w tabeli źródłowej jest włączony strumień zmian danych (CDF), uzyskaj dostęp do strumienia zmian danych, uruchamiając następujące polecenie, zastępując te zmienne. Wymaga delta-sharing-spark 0.5.0 lub wyższą wersję.

Należy podać jeden parametr początkowy.

  • <profile-path>: lokalizacja pliku z poświadczeniami.
  • <share-name>: wartość share= dla tabeli.
  • <schema-name>: wartość schema= dla tabeli.
  • <table-name>: wartość name= dla tabeli.
  • <starting-version>: opcjonalny. Początkowa wersja zapytania, włącznie. Określ jako Long.
  • <ending-version>: opcjonalny. Końcowa wersja zapytania, włącznie. Jeśli końcowa wersja nie jest podana, API używa najnowszej wersji tabeli.
  • <starting-timestamp>: opcjonalny. Początkowy znacznik czasu zapytania, który jest przekształcany na wersję utworzoną w czasie większym lub równym temu znacznikowi czasu. Określ jako ciąg w formacie yyyy-mm-dd hh:mm:ss[.fffffffff].
  • <ending-timestamp>: opcjonalny. Znacznik końcowy zapytania, który jest przekształcany na wersję utworzoną wcześniej lub równą temu znacznikowi czasowemu. Określ to jako ciąg w formacie yyyy-mm-dd hh:mm:ss[.fffffffff]

Python

delta_sharing.load_table_changes_as_spark(f"<profile-path>#<share-name>.<schema-name>.<table-name>",
  starting_version=<starting-version>,
  ending_version=<ending-version>)

delta_sharing.load_table_changes_as_spark(f"<profile-path>#<share-name>.<schema-name>.<table-name>",
  starting_timestamp=<starting-timestamp>,
  ending_timestamp=<ending-timestamp>)

spark.read.format("deltaSharing").option("readChangeFeed", "true")\
.option("startingVersion", <starting-version>)\
.option("endingVersion", <ending-version>)\
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")

spark.read.format("deltaSharing").option("readChangeFeed", "true")\
.option("startingTimestamp", <starting-timestamp>)\
.option("endingTimestamp", <ending-timestamp>)\
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")

Scala

spark.read.format("deltaSharing").option("readChangeFeed", "true")
.option("startingVersion", <starting-version>)
.option("endingVersion", <ending-version>)
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")

spark.read.format("deltaSharing").option("readChangeFeed", "true")
.option("startingTimestamp", <starting-timestamp>)
.option("endingTimestamp", <ending-timestamp>)
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")

Jeśli dane wyjściowe są puste lub nie zawierają oczekiwanych danych, skontaktuj się z dostawcą danych.

Uzyskaj dostęp do współdzielonej tabeli za pomocą Spark Structured Streaming

Jeśli historia tabeli została z tobą udostępniona, możesz strumieniowo odczytywać udostępnione dane. Wymaga delta-sharing-spark wersji 0.6.0 lub nowszej.

Obsługiwane opcje:

  • ignoreDeletes: Ignoruj transakcje, które usuwają dane.
  • ignoreChanges: ponowne przetwarzanie aktualizacji, jeśli pliki zostały przepisane w tabeli źródłowej z powodu operacji zmiany danych, takiej jak UPDATE, MERGE INTO, DELETE (w ramach partycji) lub OVERWRITE. Niezmienione wiersze mogą nadal być emitowane. W związku z tym odbiorcy podrzędni powinni mieć możliwość obsługi duplikatów. Usunięcia nie są propagowane w dół. ignoreChanges zawiera w sobie ignoreDeletes. W związku z tym, jeśli używasz ignoreChanges, strumień nie jest zakłócany przez usunięcia lub aktualizacje tabeli źródłowej.
  • startingVersion: Wersja współdzielonej tabeli, od której należy zacząć. Wszystkie zmiany tabeli począwszy od tej wersji (włącznie) są odczytywane przez źródło przesyłania strumieniowego.
  • startingTimestamp: znacznik czasu, od którego należy rozpocząć. Wszystkie zmiany tabeli zatwierdzone w lub po określonym znaczniku czasu (włącznie) są odczytywane przez źródło przesyłania strumieniowego. Przykład: "2023-01-01 00:00:00.0".
  • maxFilesPerTrigger: Liczba nowych plików, które należy rozważyć w każdej mikroserii.
  • maxBytesPerTrigger: Ilość danych, które są przetwarzane w każdej mikroserii. Ta opcja ustawia „miękki maks”, co oznacza, że partia przetwarza mniej więcej tę ilość danych i może przetworzyć więcej niż limit, aby przesunąć zapytanie strumieniowe do przodu w przypadkach, gdy najmniejsza jednostka wejściowa jest większa niż ten limit.
  • readChangeFeed: Stream odczytuje strumień danych o zmianach w udostępnionej tabeli.

Obsługiwane wyzwalacze:

  • Trigger.ProcessingTime: wyzwalacz domyślny używany, gdy nie określono jawnego wyzwalacza. Dane są przetwarzane w sposób ciągły, w mikropartiach.
  • Trigger.AvailableNow: Zapytanie przechwytuje na początku wersję współdzielonej tabeli po stronie serwera, przetwarza zaległe zadania jako wiele mikropartii zgodnych z maxFilesPerTrigger i maxVersionsPerRpc, a następnie kończy działanie po wyczerpaniu przechwyconej wersji. Wymaga delta-sharing-spark wersji 1.4.0 lub nowszej. Starsze wersje używają jako rozwiązania awaryjnego opakowania Trigger.AvailableNow, które nie uwzględnia maxVersionsPerRpc.
  • Trigger.Once: Przestarzałe; użyj zamiast tego Trigger.AvailableNow. W wersjach delta-sharing-spark poniżej 1.4.0 Trigger.AvailableNow używa awaryjnie wrappera, który nie uwzględnia maxVersionsPerRpc.

Przykładowe zapytania strukturalnego przesyłania strumieniowego

Python
spark.readStream.format("deltaSharing")\
.option("startingVersion", 0)\
.option("ignoreDeletes", true)\
.option("maxBytesPerTrigger", 10000)\
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")
Scala
spark.readStream.format("deltaSharing")
.option("startingVersion", 0)
.option("ignoreChanges", true)
.option("maxFilesPerTrigger", 10)
.load("<profile-path>#<share-name>.<schema-name>.<table-name>")

Zobacz także Structured Streaming concepts.

Odczyt tabel z włączonymi wektorami usuwania lub mapowaniem kolumn

Ważna

Ta funkcja jest dostępna w publicznej wersji testowej.

Wektory usuwania są funkcją optymalizacji przechowywania, którą Twój dostawca może włączyć w współdzielonych tabelach Delta. Zobacz Wektory usuwania w usłudze Databricks.

Azure Databricks obsługuje również mapowanie kolumn dla tabel Delta. Zobacz Zmień nazwę i usuń kolumny za pomocą mapowania kolumn Delta Lake.

Jeśli dostawca udostępnił tabelę z włączonymi wektorami usuwania lub mapowaniem kolumn, możesz odczytać tabelę za pomocą obliczeń działających w wersji delta-sharing-spark 3.1 lub wyższej. Jeśli używasz klastrów Databricks, możesz wykonywać odczyty wsadowe za pomocą klastra działającego na Databricks Runtime 14.1 lub nowszym. Dla zapytań CDF i przesyłania strumieniowego wymagane jest zastosowanie środowiska Databricks Runtime 14.2 lub nowszego.

Możesz wykonywać zapytania wsadowe as-is, ponieważ mogą one automatycznie rozwiązywać responseFormat na podstawie właściwości współdzielonej tabeli.

Aby odczytać strumień danych o zmianach (CDF) lub wykonać zapytania przesyłane strumieniowo w udostępnionych tabelach, w których włączono wektory usuwania lub mapowanie kolumn, należy ustawić dodatkową opcję responseFormat=delta.

W poniższych przykładach pokazano zapytania wsadowe, typu CDF oraz strumieniowe.

import org.apache.spark.sql.SparkSession

val spark = SparkSession
        .builder()
        .appName("...")
        .master("...")
        .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension")
        .config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
        .getOrCreate()

val tablePath = "<profile-file-path>#<share-name>.<schema-name>.<table-name>"

// Batch query
spark.read.format("deltaSharing").load(tablePath)

// CDF query
spark.read.format("deltaSharing")
  .option("readChangeFeed", "true")
  .option("responseFormat", "delta")
  .option("startingVersion", 1)
  .load(tablePath)

// Streaming query
spark.readStream.format("deltaSharing").option("responseFormat", "delta").load(tablePath)

Odczytywanie kolumn śledzenia wierszy w tabelach udostępnionych

Jeśli dostawca danych włączył śledzenie wierszy w udostępnionej tabeli, możesz wykonać zapytanie dotyczące kolumn metadanych śledzenia wierszy przy użyciu platformy Scala Spark. Listę dostępnych kolumn można znaleźć w artykule Śledzenie wierszy w Azure Databricks.

Należy ustawić responseFormat opcję na delta.

spark.read.format("deltaSharing")
  .option("responseFormat", "delta")
  .load("<profile-path>#<share-name>.<schema-name>.<table-name>")
  .select("_metadata.row_id")
  .show()

Uwaga / Notatka

Tylko format odpowiedzi różnicowej jest obsługiwany w przypadku wykonywania zapytań dotyczących kolumn śledzenia wierszy w kliencie platformy Spark. Złącza do zrzutu nie są obsługiwane.

Pandas: odczytywanie udostępnionych danych

Wykonaj następujące kroki, aby uzyskać dostęp do udostępnionych danych w wersji pandas 0.25.3 lub nowszej.

Instrukcje te zakładają, że masz dostęp do pliku z danymi uwierzytelniającymi, który został udostępniony przez dostawcę danych. Zobacz Uzyskiwanie dostępu w modelu udostępniania usługi Databricks-to-Open.

Uwaga / Notatka

Jeśli używasz pandas w obszarze roboczym usługi Azure Databricks, który ma włączony Unity Catalog, i użyto UI dostawcy importu do zaimportowania dostawcy i udostępnienia, instrukcje w tej sekcji nie dotyczą Ciebie. Można uzyskać dostęp do tabel udostępnionych tak samo jak do każdej innej tabeli zarejestrowanej w katalogu Unity. Nie trzeba instalować łącznika delta-sharing Python ani podać ścieżkę do pliku poświadczeń. Zobacz Importowanie dostawcy i odczytywanie udostępnionych danych w Azure Databricks.

Instalowanie łącznika Python OpenSharing

Aby uzyskać dostęp do metadanych powiązanych z udostępnionymi danymi, takimi jak lista tabel udostępnionych Tobie, musisz zainstalować łącznik delta-sharing Python connector. Aby uzyskać informacje na temat ograniczeń łącznika Python, zobacz Ograniczenia łącznika openSharing Python.

pip install delta-sharing

Wyświetlanie listy udostępnionych tabel przy użyciu pandas

Aby wyświetlić listę tabel w udziale, uruchom następujące polecenie, zastępując <profile-path>/config.share lokalizacją pliku uwierzytelniającego.

import delta_sharing

client = delta_sharing.SharingClient(f"<profile-path>/config.share")

client.list_all_tables()

Jeśli dane wyjściowe są puste lub nie zawierają oczekiwanych tabel, skontaktuj się z dostawcą danych.

Uzyskiwanie dostępu do danych udostępnionych przy użyciu pandas

Aby uzyskać dostęp do danych udostępnionych w pandas przy użyciu Python, uruchom następujące polecenie, zastępując zmienne w następujący sposób:

  • <profile-path>: lokalizacja pliku z poświadczeniami.
  • <share-name>: wartość share= dla tabeli.
  • <schema-name>: wartość schema= dla tabeli.
  • <table-name>: wartość name= dla tabeli.
import delta_sharing
delta_sharing.load_as_pandas(f"<profile-path>#<share-name>.<schema-name>.<table-name>")

Uzyskiwanie dostępu do udostępnionego źródła danych zmian przy użyciu polecenia pandas

Aby uzyskać dostęp do zestawienia danych zmian dla udostępnionej tabeli w pandas języku Python, uruchom następujące polecenie, zastępując zmienne w następujący sposób. Kanał danych dotyczący zmian może być niedostępny, w zależności od tego, czy dostawca danych udostępnił kanał danych dotyczący zmian dla tabeli.

  • <starting-version>: opcjonalny. Początkowa wersja zapytania, włącznie.
  • <ending-version>: opcjonalny. Końcowa wersja zapytania, włącznie.
  • <starting-timestamp>: opcjonalny. Znacznik czasu rozpoczęcia zapytania. To jest przekształcone na wersję stworzoną większą lub równą temu znacznikowi czasu.
  • <ending-timestamp>: opcjonalny. Końcowy znacznik czasu zapytania. Jest to wersja konwertowana na wersję utworzoną wcześniej lub równą temu znacznikowi czasu.
import delta_sharing
delta_sharing.load_table_changes_as_pandas(
  f"<profile-path>#<share-name>.<schema-name>.<table-name>",
  starting_version=<starting-version>,
  ending_version=<ending-version>)

delta_sharing.load_table_changes_as_pandas(
  f"<profile-path>#<share-name>.<schema-name>.<table-name>",
  starting_timestamp=<starting-timestamp>,
  ending_timestamp=<ending-timestamp>)

Jeśli dane wyjściowe są puste lub nie zawierają oczekiwanych danych, skontaktuj się z dostawcą danych.

Power BI: Odczytaj udostępnione dane

Łącznik Power BI OpenSharing umożliwia odnajdywanie, analizowanie i wizualizowanie udostępnionych ci zestawów danych za pośrednictwem otwartego protokołu OpenSharing.

Requirements

Połącz się z Databricks

Aby nawiązać połączenie z Azure Databricks przy użyciu łącznika OpenSharing, wykonaj następujące czynności:

  1. Otwórz plik z poświadczeniami współdzielonymi za pomocą edytora tekstu, aby uzyskać adres URL punktu końcowego i token.
  2. Otwórz program Power BI Desktop.
  3. W menu Pobierz dane wyszukaj ciąg OpenSharing.
  4. Wybierz złącze i kliknij Połącz.
  5. Wprowadź adres URL punktu końcowego skopiowany z pliku poświadczeń do pola Adres URL serwera OpenSharing .
  6. Opcjonalnie, na karcie Opcje zaawansowane, ustaw Limit wierszy jako maksymalną liczbę wierszy, które możesz pobrać. To jest domyślnie ustawione na 1 milion wierszy.
  7. Kliknij przycisk OK.
  8. Aby przeprowadzić autoryzację, skopiuj token, który otrzymałeś z pliku z danymi uwierzytelniającymi, do sekcji Token Bearer.
  9. Kliknij Połącz.

Ograniczenia łącznika Power BI OpenSharing

Łącznik Power BI OpenSharing ma następujące ograniczenia:

  • Dane ładowane przez konektor muszą mieścić się w pamięci twojej maszyny. Aby zarządzać tym wymaganiem, łącznik ogranicza liczbę importowanych wierszy do limitu wierszy ustawionego na karcie Opcje zaawansowane w Power BI Desktop.

Tableau: Odczytaj dane współdzielone

Łącznik Tableau OpenSharing umożliwia odnajdywanie, analizowanie i wizualizowanie zestawów danych udostępnionych za pośrednictwem otwartego protokołu OpenSharing.

Requirements

Połącz się z Azure Databricks

Aby nawiązać połączenie z Azure Databricks przy użyciu łącznika OpenSharing, wykonaj następujące czynności:

  1. Przejdź do Exchange Tableau, postępuj zgodnie z instrukcjami, aby pobrać łącznik OpenSharing Connector i umieścić go w odpowiednim folderze pulpitu.
  2. Otwórz Tableau Desktop.
  3. Na stronie Connectors wyszukaj hasło „OpenSharing by Databricks”.
  4. ** Wybierz Prześlij plik Share, i wybierz plik uwierzytelniający udostępniony przez dostawcę.
  5. Kliknij pozycję Pobierz dane.
  6. W Eksploratorze danych wybierz tabelę.
  7. Opcjonalnie dodaj filtry SQL lub ograniczenia wierszy.
  8. Kliknij Get Table Data.

Ograniczenia

Łącznik OpenSharing Tableau ma następujące ograniczenia:

  • Dane ładowane przez konektor muszą mieścić się w pamięci twojej maszyny. Aby zarządzać tym wymaganiem, łącznik ogranicza liczbę importowanych wierszy do limitu wierszy, który ustawiłeś w Tableau.
  • Wszystkie kolumny są zwracane jako typ String.
  • Filtr SQL działa tylko wtedy, gdy serwer OpenSharing obsługuje predykatHint.
  • Wektory usuwania nie są obsługiwane.
  • Mapowanie kolumn nie jest obsługiwane.

Ograniczenia łącznika openSharing Python

Te ograniczenia są specyficzne dla łącznika openSharing Python:

  • Łącznik OpenSharing Python 1.1.0+ obsługuje zapytania migawek w tabelach z mapowaniem kolumn, ale zapytania CDF w tabelach z mapowaniem kolumn nie są obsługiwane.
  • Łącznik OpenSharing dla Pythona powoduje niepowodzenie zapytań CDF z użyciem use_delta_format=True, jeśli schemat zmienił się w obrębie odpytywanego zakresu wersji.

Ograniczenia tabel strumieniowania

Można odczytać tylko bieżącą migawkę udostępnionej tabeli przesyłania strumieniowego. Następujące funkcje nie są obsługiwane dla tabel strumieniowych w ramach Databricks-to-Open Sharing:

  • Wykonywanie zapytań dotyczących danych historii tabeli
  • Wykonywanie zapytań dotyczących strumienia danych zmian w tabeli (CDF)
  • Używanie tabeli jako źródła dla Spark Structured Streaming

Zmaterializowane ograniczenia widoku

Można odczytać tylko bieżącą migawkę zmaterializowanego widoku udostępnionego. Użycie widoku materializowanego jako źródła dla Spark Structured Streaming nie jest obsługiwane w udostępnianiu Databricks-to-Open.

Złóż wniosek o nowe poświadczenie

Jeśli Twój URL aktywacji poświadczeń lub pobrane poświadczenia zostaną zgubione, uszkodzone lub naruszone, lub jeśli Twoje poświadczenia wygasną, a Twój dostawca nie prześle Ci nowych, skontaktuj się z dostawcą, aby poprosić o nowe poświadczenia.

Jeśli jesteś użytkownikiem Azure Databricks, który zaimportował poświadczenie jako obiekt dostawcy w Unity Catalog, zastosuj nowe poświadczenie przy użyciu interfejsu API REST Databricks. Zobacz Rotacja poświadczeń dla otwartych adresatów.