MAQL 対 SQL

構文構成と定義済み参照引数で類似性はあるものの、MAQL と SQL は同一ではありません。

SQL は一般目的のリレーショナルデータベース言語で、データの読み書きに使われます。 MAQL は多次元MAQL と多次元性)で、データは常にコンテキストベースで評価されます。

このセクションでは、初歩ですが重要な相違を説明します。

技術レベルでは、GoodData プラットフォームはデータオブジェクトが相関する方法(論理データモデル)からデータベースにデータを保管する方法(物理データモデル)を分離しています。 ワークスペース開発者は、シンプルなグラフィカルインターフェイスを使用して論理データモデルを作成し、モデルをワークスペースに公開すると、それに応じて物理データモデルが作成または更新されます。

MAQL 対 SQL

MAQL では、SQL と比較して短時間で、複雑で強力なレポートメトリックを作成できます。 以下をご覧ください:

以下の例に見られるように、MAQL 構文の使用は SQL よりも効率的です。

データクエリの差異

このセクションでは、MAQL と SQL のデータクエリへのアプローチが方法の差異について確認します。

データベース上の販売データに興味があるとします。 SQL では、クエリは以下が考えられます:

SELECT SUM(Amount) FROM sales_data;

結果:

1 000 000

あなたは $1,000,000 に値する製品を販売しました。 靴の販売によってどのぐらいのデータが生成されたか知る必要があるとします。 SQL:

SELECT SUM(amount) FROM sales_data JOIN product_data ON sales_data.product_type_id=product_data.product_type_id WHERE product_data.name = "shoes";

結果:

500 000

この二番目のクエリをどのように作成するかを理解するために、以下に対してコマンドを使用してください:

  • データベースコンセプトとしてのテーブルと列を理解する。
  • 関係代数についての理解度
  • クエリを実行するために、データがデータベースにどうやって、どこに保管されているのを理解する。

MAQL は異なったアプローチを取ります。 データがどこにどうやって保管されているかを知る必要はありません。 上記の最初のクエリに相当するのは、MAQL では以下のようになります:

SELECT SUM(Amount)

FROM sales_data は必要ありません。 すべての関連する数量は、データ保管内の適切なテーブルに追加されています。 GoodData ポータルを通して、データベースにデータが実際にどのように保管されているかについての詳細を理解することなくクエリを実行できます。

第二のクエリに相当するのは、MAQL では以下のようになります:

SELECT SUM(Amount) WHERE Product Type = shoes

テーブル名を覚えたり、テーブル接合を見極める必要はありません。

以下の例では、SQL と MAQL で利益の差額用のメトリックを作成します:

再利用可能性サンプル

SQLMAQL

単発クエリ

SELECT (SELECT SUM(Cost_of_Shipping) FROM Shipping) + (SELECT SUM(Cost) FROM Campaigns) AS Cost_of_Sales

再利用可能なメトリック

SELECT SUM(Cost of Shipping) + SUM(Cost)

複数メトリックサンプルを結合

SQLMAQL

単発クエリ

SELECT 100*(1 - ( (SELECT SUM(Cost_of_Shipping) FROM Shipping) + (SELECT SUM(Cost) FROM Campaigns) ) / (SELECT SUM(Amount) FROM Sales) ) AS Net_Profit_Margin

再利用可能なメトリック

SELECT 1 - Cost of Sales/Revenue