クエリのパフォーマンス
バックグラウンドで実行されること
SAQL は Salesforce Analytics Query Language の略語です。Analytics でアクションを実行すると、多くの場合、SAQL クエリが 1 つ以上生成されます。すべてのレンズ、ダッシュボード、エクスプローラでのアクションにより、SAQL ステートメントが生成されて実行され、表示に必要なデータが構築されます。
-
小さいステップが自動ファセットされます。つまり、相互に関連する、さまざまなウィジェットがリンクされます。
-
バインドとテンプレートが解決されます。
-
すべてのステップが SAQL クエリに変換されます。
SAQL クエリはクエリエンジンに送信されて実行されます。生成されるデータは Charting ライブラリに渡されて、対応するウィジェット定義が使用されて表示されます。
開発者は、Analytics REST API によって、またはダッシュボード JSON に含まれる SAQL クエリの作成や編集を行うことによって SAQL を記述し、Analytics データにアクセスできます。
SAQL クエリは、入力データセットを読み込み、そのデータセットに対して操作を実行し、結果のデータセットを出力します。各 SAQL ステートメント (filter、group、order などの予約キーワード) には、入力ストリーム、操作、出力ストリームがあります。ステートメントは複数行にわたることができ、セミコロンで終了します。
各クエリ行は指定ストリームに割り当てられます。指定ストリームは、同一クエリの後続ステートメントの入力として使用できます。このルールの唯一の例外は、明示的な割り当てが不要なクエリの最終行です。
クエリは一般的に数ステップ、つまりレイヤを通過し、要求されたデータを JSON として返します。このジャーニーが始まるクエリエンジンコードは、非常に高速に実行されるように設計されており、データも非常に効率的にインデックス設定されるため、クエリ操作 (filter、group、foreach など) は高度に最適化されます。
その後、データは本質的に表形式になるため、filter、(co)group、foreach、union などの主なクエリ操作はあまり最適化されず、さらなる処理、つまり「力ずく」の方法が必要となります。
SAQL は一般的に、派生基準またはディメンションを作成するために使用します。既存の列に基づく計算を利用し、新しい列を作成できると言うこともできます。これらの計算は、2 つの基準を加算したり、2 つのディメンションを連結したりというように、非常に単純であることもあれば、非常に複雑になることもあります。
次のトピックでは、問題となるクエリ設計の一般的な原因について説明します。