標準 SQL の関数呼び出しルール

関数の説明で特に明示しない限り、以下の規則はすべての関数に適用されます。

  • 数値型を受け入れる関数は、1 つのオペランドが浮動小数点値オペランドであり、他のオペランドが別の数値型である場合、両方のオペランドが FLOAT64 に変換されてから関数が評価されます。
  • オペランドが NULL の場合、結果は IS 演算子を除いて となります。
  • (関数の説明に示されているとおりに)タイムゾーンの影響を受ける関数の場合、タイムゾーンが指定されていなければ、デフォルトのタイムゾーンである UTC が使用されます。

SAFE. 接頭辞

構文:

SAFE.function_name()

説明

関数の先頭に SAFE. 接頭辞を付けると、エラーではなく NULL が返されます。SAFE. 接頭辞では、接頭辞が付けられた関数自体のエラーが防止されるのみで、引数の式を評価するときに発生するエラーは防止されません。SAFE. 接頭辞では、「value out of range」エラーなどの関数入力の値が原因で発生するエラーのみが防止され、内部エラーやシステムエラーなどのエラーが発生する可能性があることには変わりありません。エラーを返さない関数の出力には、SAFE. は作用しません。RAND のようにエラーを返さない関数には、SAFE. は作用しません。

+= などの演算子SAFE. 接頭辞をサポートしません。除算演算のエラーを防ぐには、SAFE_DIVIDE を使用します。ただし、INARRAYUNNEST、およびこれに類似する関数などの演算子は、SAFE. 接頭辞をサポートしていません。CAST 関数や EXTRACT 関数も SAFE. 接頭辞をサポートしていません。エラーのキャストを防ぐには、SAFE_CAST を使用します。

次に示す最初の例のように SUBSTR 関数を使用すると、通常はエラーが返されます。これは、この関数が負の値を持つ長さ引数をサポートしていないためです。ただし、SAFE. 接頭辞があると、代わりに NULL が返されます。SUBSTR 関数の 2 番目の使用例では、想定される出力が提供され、SAFE. 接頭辞は影響を与えません。

SELECT SAFE.SUBSTR('foo', 0, -2) AS safe_output UNION ALL
SELECT SAFE.SUBSTR('bar', 0, 2) AS safe_output;

+-------------+
| safe_output |
+-------------+
| NULL        |
| ba          |
+-------------+

サポートされる関数

BigQuery では、エラーを発生させる可能性のあるほとんどのスカラー関数(STRING 関数数学関数DATE 関数DATETIME 関数TIMESTAMP 関数など)で SAFE. 接頭辞の使用がサポートされています。集計関数分析関数ユーザー定義関数では SAFE. 接頭辞の使用がサポートされていません。

永続的なユーザー定義関数(UDF)の呼び出し

永続的 UDF を作成した後は、他の関数と同じように、データセットの名前を接頭辞として先頭に追加することで呼び出すことができます。

構文

[`project_name`].dataset_name.function_name([parameter_value[, ...]])

クエリの実行に使用しているプロジェクト以外のプロジェクトで UDF を呼び出すには、project_name が必要です。

次の例では、multiply_by_three という名前の UDF を作成し、同じプロジェクトから呼び出します。

CREATE FUNCTION my_dataset.multiply_by_three(x INT64) AS (x * 3);

SELECT my_dataset.multiply_by_three(5) AS result; -- returns 15

次の例では、別のプロジェクトから永続的 UDF を呼び出します。


CREATE `other_project`.other_dataset.other_function(x INT64, y INT64)
  AS (x * y * 2);

SELECT `other_project`.other_dataset.other_function(3, 4); --returns 24
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。