SQL UDFs のトラブルシューティング¶
このトピックでは、 SQL UDFs (ユーザー定義関数)に関するトラブルシューティング情報を提供します。
トラブルシューティング¶
ヒント¶
マスキングポリシー で SQL UDF を使用する場合は、列、 UDF、およびマスキングポリシーのデータ型が一致していることを確認します。
エラーメッセージ: Unsupported subquery type¶
- 原因:
UDF にクエリ式が含まれている場合、UDF は サブクエリ として機能できます。サブクエリに列名が渡される場合、サブクエリは 相関サブクエリ として機能できます。相関サブクエリが相関サブクエリのSnowflakeルールに違反している場合、ユーザーはエラーメッセージ
Unsupported subquery typeを受け取ります。以下の例は、無効な相関サブクエリ、および UDF が同様の無効な相関サブクエリのように機能する方法を示しています。テーブルのペアを作成し、それらにデータをロードします。
次の SQL ステートメントには、Snowflakeルールに従わない相関サブクエリが含まれています。このコードは
Unsupported subquery typeエラーを引き起こします。以下のコードは、上に示したものと同様の相関サブクエリを作成する方法で、サブクエリのような UDF を作成して呼び出します。
- 解決策#1:
UDF にクエリ式が含まれている場合は、 サブクエリ のルールに準拠した方法でのみ UDF を呼び出します。
たとえば、次のステートメントは、列名ではなく定数を使用して UDF を呼び出すため、UDF は相関サブクエリのように機能しません。
- 解決策#2:
場合によっては、同じ目的を別の方法で達成するために UDF を書き直すことができます。1つの行を返すように静的に決定できる場合は、相関サブクエリが許可されます。次の UDF は集計関数を使用しているため、1行のみを返します。