2022/04/7

Salesforceの関数acos(n)とは?SAQLクエリでの表示方法を解説

 
  

Salesforce 関数acos(n)とは?

Trailblazer Communityにて、2020年8月24日(米時間)にWinter’21のリリースノートが公開されました。Winter’21では三角関数が利用できるようになりました。Winter’21ではSAQLクエリで利用できるいくつかの三角関数が公開されています。 asin(n),acos(n),atan(n),sin(n),cos(n),tan(n),pi(n),degrees(n),radians(n) (Winter’21時点) 本記事では、逆余弦を計算する関数であるacos(n)の扱い方について紹介していきます。その他の新機能で追加された関数については本記事で後述に記載しておりますが、より詳しい解説はSalesforce Winter’21リリースノートをご覧ください。

Salesforce Analytics SAQLで使用する関数acos(n)とは

タイトルにあるacos(n)関数は、SAQLクエリで使用する三角関数のことを示しています。 SAQLには集計関数、日付関数、文字列関数、算術関数、ウィンドウ関数など、関数を利用することでデータベースから様々な情報を取得することが可能です。三角関数は算術関数の分類に属しています。 とはいえ、SAQLクエリにおける三角関数とは、どのようなケースで用いられるのか疑問を持つ方も多いのではないでしょうか。 確かに実生活であまり馴染みがありませんが、建設業界では三角関数を利用して構造物を作ることがあります。音声などの信号波や周波数などの数値をデータベースに取り込んでいる時に三角関数でクエリできるようになるため、データ解析に役立ちます。 acos(n)はアークコサインと読み、日本語では逆三角関数と記述し、逆三角関数の一つです。逆三角関数はasin,acos,atanの3つが含まれます。数学では以下のように表すことができます。 −1 cos x= arccos x このような式ではSAQLクエリで利用することはできませんので、SAQLクエリに利用するための記述についてこれから紹介していきます。

acos(n)関数の記述方法とルールについて解説

acos(n)はSalesforceのAnalytics SAQLクエリで数値演算を実行するために使用し、ラジアン値※nのアークコサイン値を返します。返される角度は、0(ゼロ)からπ(パイ)の範囲です。 acos(n)のnには実数値を指定します。引数に指定できるのは”-1<=n<=1”の範囲です。指定範囲を超えるとエラーが出力するので使用できません。 nullを引数として渡すこともできます。その場合、acos()はnullを返します。あまり使うことはありませんが、覚えておいて損はありません。 acos(n)はforeachステートメントで使用可能です。その他の算術関数も同様に、foreachステートメントの後のfilter by句では使用できます。ただしforeachステートメントの前には使用できません。 ラジアン値とは国際単位系(SI)によると、平面角の単位で円周上でのその円の半径と同じ長さの弧を切り取る2本の半径が成す角の値と定義されています。英語ではradian表記されますので、コードを書く際の参考にしてください。

SAQLクエリでacos(n)関数のforeachステートメントを使った記述例

以下の例ではqという変数に、アークコサインの値を代入し、arccosine列に表示させています。
q= foreach q generate acos(radians) as arccosine;
実際に関数を使う場合は、radiansの記述に値を指定します。 radiansとはラジアン値のことです。つまり、この「(radians)」 のカッコの中にラジアン値で数値を指定します。ラジアン値(-1〜1)の範囲で数値を指定します。次の章で値を設定した場合の出力結果を紹介していきます。

acos(n)関数の挙動をSAQLクエリで確認する

SalesforceのEinstein Analytics※を利用してacos(n)関数の挙動を実際に確認してみましょう。 SAQLクエリの編集環境がすでに整っている方はこの項を読み飛ばして結構です。 次に紹介する内容はあくまで挙動を確認するための手順になります。本番環境で行う場合は、必ずソースコードの編集をして問題が起きないことを確認してください。 Salesforce Einstein Analyticsとは、Salesforceが提供しているデータ分析プラットフォームで、莫大なデータベースからダッシュボードを使って様々な情報を取得できる先進的なサービスです。SAQLを使用するにはAnalytics Platform ライセンスが必要になります 基本的には下記の3つの手順で、SQLクエリの編集環境が整います。 どうしても環境構築がうまくできない場合はSalesforceヘルプを参照してください。
  • Einstein Analytics 組織から新しいダッシュボードを開き、空白のダッシュボードをクリックします。
  • アプリケーションランチャーから、Einstein Analytics Studioを開き 「作成」ボタンから空のダッシュボードを作成します。
  • 「クエリ作成」から任意のデータソースを選択し、クエリモードに切り替えてください。
環境が整ったら、実際にクエリエディターでどのように表示されるのか確認してみましょう。 すでにコードが表示されている場合は、以下記述したコードを上書きし、 右上の””クエリを実行””ボタンを押下したあと出力を確認してください。 (”Dataset1”は任意のデータセット名を入れます)
q = load ""Dataset1"";
q = group q by all;
q = foreach q generate acos(0) as arccosine;
表示結果は次の通りです。 arccosine 1.5707963267948966 1行目は変数qに指定した任意のデータセットを読み込んでいます。 2行目はデータをグループ化していないのでgroup q by all;と記述しています。(グルーピングを指定している場合はグループ化してください)3行目は引数に0を使用し、その結果をarccosine列に表示させています。 null を引数として渡した場合も試してみましょう。
q = load ""Dataset1"";
q = group q by all;
q = foreach q generate acos(null) as arccosine;
表示結果 arccosine – 3行目は引数にnullを使用しているのでarccosineの結果は、何も表示されていません。つまりacos()はnullを返していることがわかります。 上記の方法で結果が出力できれば、その他の三角関数についても同じ手順で確認できますので、次の章ではその他の三角関数について見ていきましょう。

Salesforce Winter’21で発表された、その他の三角関数

Salesforce Winter’21ではacos(n)関数の他にもいくつかの関数が紹介されています。 SAQLクエリの三角関数とASCII変換関数が同時期に発表されていますが、SAQLクエリの三角関数のみ以下に記します。 pi(n)・・・円周率を返す変数です。 つまりπの値を返します degrees(n)・・・(角度)度数を返します。ラジアン値nの角度を表し、-1e308 <= n <= 1e308の範囲で値を指定します。(以下同じ値の範囲で指定します) radians(n)・・・ラジアン値を返す関数です。 sin(n)・・・サイン値を返す関数です。 cos(n)・・・コサイン値を返す関数です。 tan(n)・・・タンジェント値を返す関数です。 asin(n)・・・アークサイン値を返す関数です。 acos(n)・・・アークコサイン値を返す関数です。 atan(n)・・・アークタンジェント値を返す関数です。 sign(n)・・・N が正の場合は1を返し、負の場合は-1を返します。またnが0の場合は0を返し null が引数として指定された場合は null を返します。 SAQLクエリでの三角関数を利用するケースとしては、交流電流や、地震、津波、バイオテクノロジー、医療機器(CTスキャンや MRI)その他にも周期性を持った動きをしているバネの振動やピストンの上下動作など、すなわち「波」に科学的なデータ分析をする場合などが挙げられ、役立つ業界は多種多様に存在します。 今回のリリースで、より複雑なデータをクエリ結果として算出することが可能になりました。Salesforceのリリースは年に3回(Spring、Summer、Winter)で発表されてます。最新の情報については、下記URLを参照してください。

acos(n)関数をSalesforce Analytics SAQLで使用する際の注意点

本記事ではacos(n)関数について紹介しました。acos(n)のnには実数値を指定し、引数に指定できるのは”-1<=n<=1”の範囲までです。指定可能な範囲を超えると、以下のようなエラーが出力されます。
arguments out of range for acos function 1.0472
acos(n)関数の範囲外の引数を指定しているという理由でエラーが吐き出されます。その他の算術関数も同様に、foreachステートメントの後のfilter by句では使用できますが、foreachステートメントの前には使用できません。 SAQLクエリに関数を利用する場合は、Salesforce Analytics SAQLリファレンスに一度は目を通しておくと良いでしょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】