2022_07バンドル

このトピックでは、その月における次の動作の変更(ある場合)について説明します。

  • 廃止された機能。

  • 有効になったバンドルされた変更。

  • その他、実装されたバンドルされていない変更。

これらの変更について質問がある場合は、 Snowflakeサポート にお問い合わせください。

今月導入された新機能、拡張機能、および修正の詳細については、 2022年10月 をご参照ください。

重要

特に明記されていない限り、これらは2022_07バンドルで変更されており、6.35リリースにおいてデフォルトで有効になっています。

このトピックの内容:

SQL の変更 --- コマンドおよび関数

データベースおよびスキーマ: ポリシーとタグのダングリング参照が発生する場合は、ドロップまたは置換が不許可に

テーブル内のマスキングポリシー、タグ、および保護された列に関して、データベース/スキーマをドロップまたは置換する操作の動作が次のように変更されました。

以前:

タグとポリシーが同じスキーマにあり、テーブルが異なるスキーマにある場合、Snowflakeは、テーブルに保護された列が別のスキーマ/データベースに存在するときに、タグとマスキングポリシーを含むスキーマ/データベースで DROP および REPLACE 操作を許可しました。

動作は、次の4つのコマンドに適用されます。

現在:

同じシナリオが現在発生すると、Snowflakeは、テーブルに保護された列が別のスキーマ/データベースに存在するときに、タグとマスキングポリシーを含むスキーマ/データベースで DROP および REPLACE 操作を許可しません。

その結果、上記4つのコマンドの動作が変更されました。

例:

  • t1 という名前のタグと p1 という名前のマスキングポリシーが、 governance.tags という名前のスキーマに存在します。

  • p1 マスキングポリシーは t1 タグに割り当てられます(つまり、タグベースのマスキングポリシー)。

  • t1 タグは、 finance.accounting.customers という名前のテーブルに割り当てられます。

以前は、 t1 タグが finance.accounting.customers テーブルに割り当てられている間、Snowflakeは governance.tags スキーマでの DROP SCHEMA 操作と governance データベースでの DROP DATABASE 操作を許可していました。

現在、Snowflakeでは、 t1 タグがテーブルに割り当てられている間、どちらの操作も実行できません。試行された操作に応じて、Snowflakeは次のエラーメッセージのいずれかを返します。

  • DROP DATABASE および CREATE OR REPLACE DATABASE:

    Cannot drop or replace database because: Tag governance.tags.tag1 used by schema finance.accounting in another database

  • DROP SCHEMA および CREATE OR REPLACE SCHEMA:

    Cannot drop or replace schema because: Tag governance.tags.tag1 used by another schema finance.accounting

CREATE MATERIALIZED VIEW コマンド: Time Travel句が不許可に

マテリアライズドビューの制限の1つは、Time Travelがサポートされていないことです。ただし、 CREATE MATERIALIZED VIEW コマンドを実行すると、ビューのベーステーブルにTime Travel句(例: AT)を指定できました。

現在は、 CREATE MATERIALIZED VIEW でTime Travel句を指定すると、エラーが発生するようになりました。

以前:

CREATE MATERIALIZED VIEW にTime Travel句を指定してもエラーにはなりませんでした。

たとえば、次のステートメントはエラーなしで正常に実行されました。

  • 例1:

    create or replace materialized view mv as select * from basetbl at(offset => -2);
    
    Copy
  • 例2:

    create or replace materialized view mv as select * from basetbl at(timestamp => $ts);
    
    Copy
  • 例3:

    create or replace materialized view mv as select * from basetbl at(statement => $uuid_dml);
    
    Copy
現在:

現在は、 CREATE MATERIALIZED VIEW でTime Travel句を指定すると、次のエラーが発生するようになりました。

002274 (42601): SQL compilation error: Invalid materialized view: Time travel on base table in line X at position Y.

SQL の変更 --- 使用状況ビューおよびInformation Schemaビュー/テーブル関数

GRANT_TO_ROLES ビュー(Account Usage): ビューの変更

次の変更が ACCOUNT_USAGE.GRANTS_TO_ROLES ビューに導入されました。

以前:

ビューの出力には、仮テーブルのロールへの権限付与が含まれていました。

現在:

ビューの出力には、仮テーブルのロールへの権限付与は含まれません。

データレイクの変更

CREATE EXTERNAL TABLE コマンド: ユーザー指定のパーティションと自動的に更新されるメタデータ

外部テーブルのパーティションをユーザー指定として定義するということは、式に一致する外部ストレージの場所にあるすべての新しいファイルのパーティションを自動的に追加するのではなく、パーティションを選択的に追加および削除することを意味します。このパーティション型は、外部テーブルを作成するときに PARTITION_TYPE = USER_SPECIFIED パラメーターを含めることで指定されます。ユーザー指定のパーティション分割では、外部テーブルメタデータの自動更新はサポートされていません。

PARTITION_TYPE = USER_SPECIFIEDAUTO_REFRESH = TRUE の両方のパラメーターを設定して CREATE EXTERNAL TABLE ステートメントを実行する場合の動作は、次のように変更されました。

以前:

CREATE EXTERNAL TABLE ステートメントは成功しました。ただし、外部テーブルのクラウドストレージから受信したイベント通知(例: 「新しいオブジェクト」メッセージ)はエラーを生成しました。

現在:

CREATE EXTERNAL TABLE ステートメントはユーザーエラーを返します。

GET_DDL 関数: Delta Lakeの外部テーブルの TABLE_FORMAT パラメーターを返す

GET_DDL 関数の入力がDelta Lakeテーブルを参照する外部テーブルである場合、関数によって返される CREATE EXTERNAL TABLE ステートメントは次のように変更されました。

以前:

このステートメントでは、Delta Lakeテーブルを参照しているものとして外部テーブルを識別する TABLE_FORMAT = DELTA パラメーターが省略されました。

現在:

ステートメントには TABLE_FORMAT = DELTA パラメーターが含まれます。

拡張性の変更

Python用Snowpark: エラーの発生時期が、無効なパッケージを追加するときに早まる

PythonパッケージをPython Snowparkセッションに追加するときに、パッケージまたはその指定されたバージョンがSnowflakeでサポートされていない場合、ユーザーはエラーメッセージを受け取ります。

エラーメッセージを受信する時期が早くなるように変更されました。

以前:

このエラーは、ユーザーが UDF またはストアドプロシージャを登録しようとしたそのときに発生しました。

現在:

エラーの発生時期が、add_packagesを使用してPythonパッケージを追加するときに早まりました。

たとえば、パッケージバージョンが無効であるため、 "session.add_packages('numpy==21.21.21')" を呼び出すと "ValueError" になります。

ScalaおよびJava用Snowpark: DeleteResult、 MergeResult、および UpdateResult のメンバーの型に対する変更

Snowpark ScalaおよびJava の APIs では、 DeleteResultMergeResult、および UpdateResult クラスが、値メンバーと、挿入、更新、および削除された行数を返すgetterメソッドを提供します。

  • Snowpark Scala API では、これらの値メンバーの名前は次のとおりです。

    • rowsInserted

    • multiJoinedRowsUpdated

    • rowsUpdated

    • rowsDeleted

  • Snowpark Java API では、これらのgetterメソッドの名前は次のとおりです。

    • getRowsInserted

    • getMultiJoinedRowsUpdated

    • getRowsUpdated

    • getRowsDeleted

ScalaおよびJava用Snowparkライブラリの1.7.0リリースでは、これらの値メンバーの型とこれらのgetterメソッドの戻り型が次のように変更されました。

1.7.0より前:
  • Scala API では、型は Int です。

  • Java API では、型は int です。

1.7.0以降:
  • Scala API では、型は Long です。

  • Java API では、型は long です。