2017-04-05 12 views
0

今日、WebエディターのUIで標準のSQL言語でUDFを作成しようとしましたが、「Use Legacy SQL」オプションのチェックを外しましたが、 実装されていない:従来のSQL UDFを標準のSQLクエリで使用することはできません。 https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#differences_in_user-defined_javascript_functionsBigQuery:標準のSQLを使用する外部UDF

Google Cloud Platformで提供されている外部UDFの例:https://cloud.google.com/bigquery/docs/reference/standard-sql/user-defined-functionsを試しました。しかし、それは私に同じエラーメッセージを返します。次の例では、

CREATE TEMPORARY FUNCTION multiplyInputs(x FLOAT64, y FLOAT64) 
RETURNS FLOAT64 
LANGUAGE js AS """ 
    return x*y; 
"""; 
WITH numbers AS 
    (SELECT 1 AS x, 5 as y 
    UNION ALL 
    SELECT 2 AS x, 10 as y 
    UNION ALL 
    SELECT 3 as x, 15 as y) 
SELECT x, y, multiplyInputs(x, y) as product 
FROM numbers; 

質問:Web UIで標準SQLで外部UDFを使用するにはどうすればよいですか?

答えて

1

ではないことを確認して、[UDF Editor]パネルに入力を入力してください。それはあなたの質問の残りの部分と一緒に行かなければなりません。例えばthe topic in the migration guideを参照してください。

#standardSQL 
-- Computes the harmonic mean of the elements in 'arr'. 
-- The harmonic mean of x_1, x_2, ..., x_n can be expressed as: 
-- n/((1/x_1) + (1/x_2) + ... + (1/x_n)) 
CREATE TEMPORARY FUNCTION HarmonicMean(arr ARRAY<FLOAT64>) 
    RETURNS FLOAT64 LANGUAGE js AS """ 
var sum_of_reciprocals = 0; 
for (var i = 0; i < arr.length; ++i) { 
    sum_of_reciprocals += 1/arr[i]; 
} 
return arr.length/sum_of_reciprocals; 
"""; 

WITH T AS (
    SELECT GENERATE_ARRAY(1.0, x * 4, x) AS arr 
    FROM UNNEST([1, 2, 3, 4, 5]) AS x 
) 
SELECT arr, HarmonicMean(arr) AS h_mean 
FROM T; 
+0

'使用レガシーSQL'がオフになっているとき、私は思った - ' UDF Editor'が –

+1

を選択するユーザーのためにも使用できません。使用 'ながらUDFエディタでいくつかの内容を書き込むことが可能です「レガシーSQL」をチェックしてから、クエリーエディタに戻り、「レガシーSQLを使用する」のチェックを外してクエリを実行しようとする。 –

+0

はい、これが唯一のケースPOに入るための唯一の方法です。 –

関連する問題