私はしばらくの間、Google BigQuery のレガシー SQL を使用してきましたが、数値 Pi が必要な場合は、便利な PI() 関数があります。
SELECT PI()
しかし、標準 SQL では、この関数はもう存在しません。ドキュメントで同等の機能を見つけることができませんでした。標準 SQL の PI() 関数に相当する最も簡単で正確な方法は何でしょうか?
私はしばらくの間、Google BigQuery のレガシー SQL を使用してきましたが、数値 Pi が必要な場合は、便利な PI() 関数があります。
SELECT PI()
しかし、標準 SQL では、この関数はもう存在しません。ドキュメントで同等の機能を見つけることができませんでした。標準 SQL の PI() 関数に相当する最も簡単で正確な方法は何でしょうか?
さらに別の方法として、組み込みの三角関数を使用することもできます。-1 の逆余弦は正確に PI になります。
SELECT ACOS(-1)
結果は
Row f0_
1 3.141592653589793
クエリ内で ACOS(-1) を使用すると、オプティマイザによって自動的に定数が折りたたまれ、1 回だけ計算されます。
あなたは正しいようです。PI
また、標準 SQL に対応する関数が見つかりません。
Google 社員は、標準 SQL ではまだ利用できないことを確認できるかもしれません。しかしそれまでは、回避策として、非常に単純な UDF を使用するのはどうでしょうか? それは少し不格好ですが、うまくいくかもしれません:
CREATE TEMPORARY FUNCTION PI()
RETURNS FLOAT64
LANGUAGE js AS """
return Math.PI;
""";
SELECT PI() as PI
比較としてのレガシー SQL:
JavaScript を使用するよりもオーバーヘッドが少ない SQL 関数を定義できます。
CREATE TEMP FUNCTION PI() AS (3.141592653589793);
このような定数を持つことが重要な場合は、 Issue trackerで機能リクエストを見つけることができます。