サードパーティエンジンを使用してSnowflake Open Catalogのテーブルをクエリする

このトピックでは、サードパーティのクエリエンジンを使用してSnowflakeオープンカタログのテーブルにクエリする手順を説明します。

前提条件

オープンカタログでテーブルにクエリを実行する前に、以下を実行する必要があります。

Snowflake が管理する Apache Iceberg™ テーブルへのクエリに関する考慮事項

Snowflakeを使用し、Snowflakeで管理されたIcebergテーブルをOpen Catalogに同期する場合、Open Catalogでテーブルをクエリする際に以下の点に注意してください。

  • 引用符で囲まれていない識別子:Snowflake でデータベース、スキーマ、または Iceberg テーブルを作成し、 それを二重引用符で囲むこと なく、の文字を含む名前を付けた場合、Open Catalog でその名前をリファレンスするときは、すべて大文字で指定する必要があります。たとえば、 iceberg_tables.public.table1 が Snowflake での名前である場合、オープンカタログでは ICEBERG_TABLES.PUBLIC.TABLE1 を使用します。

  • 二重引用符で囲まれた識別子:Snowflakeでオブジェクト名を二重引用符で囲んで作成した場合、オープンカタログのクエリでそのオブジェクトを参照するときは、次のようにする必要があります。

    • オブジェクト名をバッククォートで囲みます。

    • 異なる文字としてレンダリングされた場合は、その文字をアカウントに含めるため、Open Catalog で表示されるオブジェクト名を正確に指定してください。

    次の例では、 My 'Identifier' Snowflake 識別子を二重引用符で囲んで作成し、Open Catalog のクエリで参照しています。

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

    Open Catalog では、二重引用符で囲まれた Snowflake 識別子のスペース文字は + のようにレンダリングされます。

例: テーブルをクエリする

次のコード例は、Apache Sparkを使用して、カタログ catalog1customers テーブルをクエリする方法を示しています。customers テーブルは namespace1a の下にあり、これはトップレベルの名前空間 namespace1 の下にネストされています。

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