BigQuery UDF 是否可以具有可变数量的参数 (varargs)?

Dav*_*542 2 sql google-bigquery

有没有可能在 BigQuery 中执行类似的操作?

CREATE OR REPLACE FUNCTION `mydataset.variant_test.any_are_null`(val1 ANY TYPE, val2 ANY TYPE, ...) AS (
  val1 IS NULL OR val2 IS NULL OR ...
);
Run Code Online (Sandbox Code Playgroud)

换句话说,我希望能够以简洁的方式检查是否有任何列/值为空,例如:

SELECT any_are_null(col1, col2, col3, col4), any_are_null(col1, col2)
Run Code Online (Sandbox Code Playgroud)

事先不知道参数的数量。我想能够压缩/解压缩这些值也是一种选择(例如...*在某些语言中)。

Luk*_*zda 6

我希望能够以简洁的方式检查是否有任何列/值为空

它可以通过使用内置的GREATEST来实现:

最伟大(X1,...,XN)

返回 X1,...,XN 中的最大值。如果任何参数为 NULL,则返回 NULL。

那么any_are_null实际上相当于:

SELECT GREATEST(col1, col2, col3, col4)
FROM tab;
Run Code Online (Sandbox Code Playgroud)

或者:

SELECT GREATEST(col1, col2, col3, col4) IS NULL
FROM tab;

SELECT 
   CASE WHEN GREATEST(col1, col2, col3, col4) IS NULL THEN 'At least one NULL value'
        ELSE 'No NULLs detected'
   END
FROM tab;
Run Code Online (Sandbox Code Playgroud)