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

関数の表記内に特に明示的な指示がない限り、以下の規則はすべての関数に適用されます。

  • 数値型を受け入れる関数は、1 つのオペランドが浮動小数点値オペランドであり、他のオペランドが別の数値型である場合、両方のオペランドが FLOAT64 に変換されてから関数が評価されます。
  • オペランドが NULL の場合、結果は IS 演算子を除いて NULL となります。

  • (関数の説明に示されているとおりに)タイムゾーンの影響を受ける関数の場合、タイムゾーンが指定されていなければ、デフォルトのタイムゾーンである UTC が使用されます。

SAFE. 接頭辞

構文:

SAFE.function_name()

説明

関数の先頭に SAFE. 接頭辞を付けると、エラーの代わりに NULL が返されます。SAFE. 接頭辞では、接頭辞が付いている関数自体のエラーが防止されるのみで、引数の式を評価するときに発生するエラーは防止されません。SAFE. 接頭辞では、範囲外の値を示すエラーなど、関数入力の値によって発生するエラーのみが防止されます。内部エラーやシステムエラーなどのその他のエラーは、依然として発生する可能性があります。エラーを返さない関数の出力には、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 のサポートページをご覧ください。