Abfrage einer Tabelle in Snowflake Open Catalog mit einer Engine eines Drittanbieters

Dieses Thema enthält Anleitungen für die Verwendung einer Abfrage-Engine eines Drittanbieters zur Abfrage einer Tabelle in Snowflake Open Catalog.

Voraussetzungen

Bevor Sie eine Tabelle in Open Catalog abfragen können, müssen Sie Folgendes tun:

Überlegungen zur Abfrage von Snowflake-verwalteten Apache Iceberg™-Tabellen

Wenn Sie Snowflake verwenden und eine von Snowflake verwaltete Iceberg-Tabelle mit Open Catalog synchronisieren, sollten Sie bei der Abfrage der Tabelle in Open Catalog die folgenden Punkte beachten:

  • Bezeichner ohne Anführungszeichen: Wenn Sie eine Datenbank, ein Schema oder eine Iceberg-Tabelle in Snowflake erstellen und ihr einen Namen geben, der Buchstaben enthält, ohne den Namen in doppelte Anführungszeichen zu setzen, müssen Sie den Namen in Großbuchstaben angeben, wenn Sie in Open Catalog darauf verweisen. Wenn zum Beispiel iceberg_tables.public.table1 der Name in Snowflake ist, verwenden Sie ICEBERG_TABLES.PUBLIC.TABLE1 in Open Catalog.

  • Bezeichner in Anführungszeichen: Wenn Sie in Snowflake ein Objekt mit einem Namen in doppelten Anführungszeichen erstellen, müssen Sie, wenn Sie das Objekt in einer Abfrage in Open Catalog referenzieren, Folgendes tun:

    • Schließen Sie den Objektnamen mit Backquotes ein.

    • Geben Sie den Objektnamen genau so an, wie er in Open Catalog erscheint, um ggf. Zeichen zu berücksichtigen, die als andere Zeichen dargestellt wurden.

    Das folgende Beispiel zeigt, wie der Snowflake-Bezeichner My 'Identifier', der mit doppelten Anführungszeichen erstellt wurde, in einer Abfrage in Open Catalog referenziert wird:

      spark.sql ("select * from `My+'Identifier'`.PUBLIC.TABLE1").show()
    
    Copy

    Open Catalog gibt das Leerzeichen in Snowflake-Bezeichnern in doppelten Anführungszeichen als + wieder.

Beispiel: Eine Tabelle abfragen

Der folgende Beispielcode zeigt, wie Sie Apache Spark verwenden, um die Tabelle Kunden im Katalog Katalog1 abzufragen. Die Tabelle Kunden befindet sich unter Namespace1a, der unter dem Top-Level-Namespace Namespace1 verschachtelt ist:

spark.sql("use catalog1").show()
spark.sql("use namespace1.namespace1a").show()
spark.sql("SELECT * FROM customers").show()
Copy