私はしばらくの間、グーグルのBigQueryのレガシーSQLを使用してきたと私は数パイを必要とするとき、便利なPI()関数があります:のBigQuery:標準SQLでPI()
SELECT PI()
が、標準では、 SQLでは、この関数は存在しません。私はドキュメントで同等の機能を見つけることができませんでした。 Standard SQLでPI()関数に相当する最も簡単で正確な方法は何でしょうか?
私はしばらくの間、グーグルのBigQueryのレガシーSQLを使用してきたと私は数パイを必要とするとき、便利なPI()関数があります:のBigQuery:標準SQLでPI()
SELECT PI()
が、標準では、 SQLでは、この関数は存在しません。私はドキュメントで同等の機能を見つけることができませんでした。 Standard SQLでPI()関数に相当する最も簡単で正確な方法は何でしょうか?
さらに別の代替は、内蔵の三角関数を使用することである - の-1アークコサインが正確にPIになります:あなたはACOSを(使用している場合
Row f0_
1 3.141592653589793
で
SELECT ACOS(-1)
結果 - 1)クエリ内では、オプティマイザによって自動的に定数が折り返され、1回だけ計算されます。
私は同じ回答を複数回投票することができれば幸いです!これは間違いなくそれに値する! –
ミハイルに同意する!スマート。これは確かに受け入れられた答えでなければなりません!私の答えは現在最も投票していますが;-) @Konrad - あなたはこれを見ましたか? –
あなたは正しいようです。私はまた、標準SQLで対応するPI
関数を見つけることができません。
たぶん、Google社員は、それが標準SQLではまだ簡単に利用できないことを確認することができます。しかしそれまでは、回避策として、非常にシンプルなUDFを使用する方法はありますか?それは少し不格好だが、トリック行う可能性があります:比較として
CREATE TEMPORARY FUNCTION PI()
RETURNS FLOAT64
LANGUAGE js AS """
return Math.PI;
""";
SELECT PI() as PI
レガシーSQL:
ありがとうございました.Googleサポートからの回答もありがとうございます。 – Konrad
をあなたはあまりを持っているSQL関数を定義することができますオーバーヘッドはJavaScriptを使用するよりも大きい:
CREATE TEMP FUNCTION PI() AS (3.141592653589793);
このような定数が重要な場合は、issue trackerで機能要求を見つけることができます。
素晴らしいアイデアです、ありがとうございます。 – Konrad
私はsql-serverタグを削除しましたが、それを含めてはいけません。私はBigQueryの標準SQL言語を使ってこの関数を特に探しています。 – Konrad