エンビジョンデザインダッシュボード

FORMATTER ERROR (Snippet Not Found)

ホーム » コマース分析 » このページ

エンビジョンのダッシュボードには、「タイル」と呼ばれる小さな単位で構築されています。これらのタイルは、サイズおよび色を調整することができ、ダッシュボードページ内に合わせて、任意の方法で配置することができます。エンビジョンは、1ページに、商取引に関するすべての数字を1頁に配置できる、生産性の高いダッシュボードを目指しています。非常に複雑なダッシュボードでさえ、殆どの場合、0.5秒以内で表示します。この文では、エンビジョンダッシュボードを設計する方法について最初の手順から説明します。

最初のダッシュボード

サンプルデータセットを使って最初のダッシュボードを設計してみましょう。下のスクリーンショットは、Lokadアカウントで取得すべきダッシュボードを示しています。

Image

上記のダッシュボードは、以下に詳述されているスクリプトを使用して作成しました。この時点では、スクリプトに少し圧倒されるかもしれません。次ページから、このスクリプトを細かく分けてみていきましょう。

read "/sample1" all
show label "Hello World: my first dashboard" a1f1 tomato

show table "Items" a2 with sum(1)
show table "Orders" b2 with sum(Orders.1)
show table "Min selling price{$}" c2d2 with min(SellPrice)
show table "Max selling price{$}" e2f2 with max(SellPrice)

Week.oamount := sum(Orders.NetAmount)
Week.pamount := sum(PurchaseOrders.NetAmount)
show linechart "Weekly volumes{$}" a3f5 tomato with \
  Week.oamount as "Sold", Week.pamount as "Purchased"

show piechart "Sales by brand" a6c8 tomato with \
  sum(Orders.NetAmount) group by Brand

show treemap "Stock value by supplier{$}" d6f8 tomato with \
  Name, StockOnHand * BuyPrice, Supplier

show table "Top Sellers" a9f12 tomato with \
  Id as "Product ID", \
  Supplier, \
  StockOnHand, \
  sum(Orders.NetAmount) as "Sold{$}" \
  order by sum(Orders.NetAmount) desc

さあ、実際にLokadアカウントにログインして、Create envision Scriptをクリックし、上記スクリプトをコピー&ペーストしてから Start Runをクリックします。終わったら、Start Runボタン直下のRecent runs の間に新たに表示された緑色のリンクをクリックします。上記と同じダッシュボードが前面に表示されます。

ダッシュボードは、1ページに収まっていますが、クリックしてそれぞれのタイルを拡大出来ます。大きな棒グラフをクリックすると、棒グラフがブラウザのウィンドウ全体に拡大して表示されます。拡大したタイルの周囲にある黒い領域内で、任意の個所を再度クリックすると、タイルは、元のサイズに縮小します。

タイトル、位置、色

labelは、エンビジョンで利用できる最も簡単なタイルです。このタイルは、全タイルに共通の性質、つまり、タイトル、位置、色を理解する上で良い出発点となります。label タイルは、単純に、指定したテキストの一部を表示し、タイルに合わせてフォントサイズが調整されます。

show label "Hello World: my first dashboard" a1f1 tomato

すべてのタイルは、show 文を使用して表示します。このキーワードには、4つの引数が必要です。最初の引数は、タイルの型です。エンビジョン は、多くのタイルの型をサポートしており、 label はその1つです。次のセクションでは、ダッシュボードに存在する他のタイル型のいくつかを紹介します。

タイル型の後には、(") で囲んだタイトル文字列が続きます。タイルの型に応じて、タイトルの表示位置が変わりますが、殆どの場合、タイルの上部に表示されます。タイトルの後には、上記の例a1f1のように記述して、タイルの位置を指定します。エンビジョン は、タイルの位置決めに、Excelが使用しているグリッド、つまり列を表す文字と、行を表す数字で指定します。従い、a1f1は、左上隅A1から右下隅F1の範囲のセルを表します。エンビジョン は大文字と小文字を区別しないので、 A1F1a1f1は同じ位置を表します。

最後に色の指定が続きます。上記の例では、tomato です。色の引数はオプションで、省略された場合、色はデフォルトのblackが使用されます。名前付きウェブカラー は全てエンビジョンで有効です。エンビジョン は、名前付き色指定以外に、ハッシュ記号(#)を省略したマイナーな指定、ヘキサ·トリプレット も可能です。 例えば、 #0099CCの代わりに、0099CCで指定出来ます。しかし、色をスクリプトエディタから直接入力するのは、あまりにも面倒です

タイトル、位置、色

タイルの編集中に、スクリプトエディタを使ってタイルの位置と色を編集することは出来ますが、スクリプトエディタは、視覚的ではないので、あまり実用的な方法ではありません。そのため、エンビジョンには、タイルエディタという名前の第二のエディタがあります。タイルエディタは、タイル毎にタイトル、位置、色を調整出来ますが、さらに、ダッシュボードの完全な再編成が必要な場合にスピードアップにつながる、いくつかの機能を提供しています。

Image

Lokadアカウントで、以前に作成したダッシュボードに移動し、 Edit Tilesをクリックします。各タイル上に暗いオーバーレイが表示されて座標位置を示します。上述のように、座標は、Excelグリッドの規則に従って示されます。例えば、任意のタイルのlabelタイル上をクリックすると、タイルの属性を調整するためのダイアログボックスが表示されます。

さらに、ページの左側にある緑色のプラス(+)ボタンに気付く事でしょう。これらのボタンを使って、ボタンの上に空白のグリッド線を挿入出来ます。(+)ボタンのどれかをクリックすると、すべてのタイルが下方にシフトする事が分かります。空白行を挿入して、上方に(別のセクションを下方に)ダッシュボードセクションをプッシュする事が出来ます。

Image

右側の、(+)ボタンをクリックすると、赤色のマイナス( - )ボタンが表示されます。赤いボタンは、緑色のボタンと相反する機能で、空白行を削除する事が出来ます。赤いボタンは、タイルのある行を誤って削除しないように、行が空白の場合のみ表示されます。経験則として、スクリプトをコーディングする際に、タイルの配置や色に、大きな注意を払う必要はありません。タイルが重複してしまう場合、エンビジョン は、全てのタイルが表示されるように、自動的に再配置します。従って、誤ってタイルを配置する心配はありません。タイルエディタで、ダッシュボードの最終的な見栄えが確認出来ます。

単一値インジケータの表示

沢山の数を表示する事は簡単ですが、毎日読まれるべき10個の数字を表示するのは困難です。ダッシュボードを構築する上で、最も頻繁に登場するユースケースの一つが、単一値だけを含むタイルの設計です。この動作は table タイルを用いて達成出来ます。このタイルの利点は、単に1x1のテーブルで単一セルが構成出来る事です。下記のスクリプトは、関連する行で示しているように、4つの異なるインジケータを表示します。

show table "Items" a2 with sum(1)
show table "Orders" b2 with sum(Orders.1)
show table "Min selling price{$}" c2d2 with min(SellingPrice)
show table "Max selling price{$}" e2f2 with max(SellingPrice)

show table 文は、型、タイトル、位置、色オプションを指定します。パターンは label タイルで使用するものと同一です。オプションは、with キーワードで続けます。データを含む全てのタイルついて、with キーワードは、タイルに含まれる変数が列挙される事を示しています。ここでは、私たちのタイルには、それぞれ単一値のみを含んでいますが、次のセクションでは、複数の値を埋め込んだ、より複雑なタイルを見ていきましょう。

この時点で、我々は、まだエンビジョンのアグリゲーション機能に触れていません。あまり詳細に立ち入らず、sum()min()max()はアグリゲータであり、それらが、エクセルの同等関数に匹敵する程の機能である事にとどめておきましょう。

sum(1} と Orders.1は、おそらく少し不可解かもしれません。第一計算を計算した際に見てきたように、エンビジョン は主にベクトルを使います。従い、 sum(1) は、もう少し冗長なスクリプトバリアントのためのシンタックスシュガーです。

OnePerLine = 1
show table "Items" a2 with sum(OnePerLine)

上記のコードでは、ベクトルOnePerLineが定義され、慣例によりこのベクトルは、テーブルアイテムの一部です。従い、1の値を有する代入結果が全ての項目、つまりテーブルアイテムの全てに代入されます。その結果、これらのすべての値の合計が Itemsテーブルに記載されている項目の合計数を示します。同様に sum(Orders.1) は、代替えスニペットと等価です:

Orders.OnePerLine = 1
show table "Orders" b2 with sum(Orders.OnePerLine)

繰り返しますが、代入はベクトル演算であり、Orders テーブルの全ての行に、1に等しい値が代入されます。このように、これらのすべての値を合計する際に、テーブル内の行の合計数も結果として表示します。任意のテーブルには、未知のベクトル値に42を代入するために、シンタックスシュガーとしてMyTable.42を書くことが出来ます。

最低価格の表示は、同様にアグリゲーションパターンに従いますが、ダッシュボードを注意深く観察すると、少し異なる視覚的動作をしている事が分かります。実際には、販売価格は、インジケータの測定単位としてドル記号($)で表示されます。スクリプトの該当する行をよく見ると、この動作がどのように行われるのかが分かります。

show table "Min selling price{$}" c2d2 with min(SellingPrice)

この動作はタイトルの終わりを表す{$}トークンを通して行われます。慣例によってエンビジョン は、タイトル内の中括弧の間にあるものを何でも「ユニット」として扱います。ユニットは、一般的に値の右側、例えば、42 milesのように表示されますが、幾つかのユニット、$や?などのような具体的な通貨単位は、通常接頭に置かれるので、エンビジョン はこのパターンを踏襲します。

棒グラフの表示

棒グラフは、エンビジョンの中で最も頻繁に使われるタイルの型の一つです。この場合、データは周期的な集約が必要ですか?日別、週別、月別などのように?棒グラフの使用は、今まで見てきたタイルよりも少し複雑です。棒グラフを表示するためのスクリプトの一部を確認してみましょう。

Week.oamount := sum(Orders.NetAmount)
Week.pamount := sum(PurchaseOrders.NetAmount)
show linechart "Weekly volumes{$}" a3f5 tomato with \
  Week.oamount as "Sold", Week.pamount as "Purchased" 

Week テーブルは、データからロードされるテーブルではないという意味では、通常のテーブルと異なります。実際に、周期的な集計が商取引で頻繁に行われるように、エンビジョンは、このような周期的な集計を第一級市民として扱っています。その結果、周期的な集計を伴う操作は、はるかに実装が簡単です。しかし、エンビジョン 言語のこの側面は、このドキュメントの範囲を超えています。単に、Weekは、 データを週毎のバケットとしてグループ化する為の受信相手として作用するというだけに止めましょう。

また、「スカラー代入」:=と呼ばれる特別な代入もあります。この代入は、通常の=とは異なっており、アイテムごとに値を計算するのではなく、すべての項目の独立した値のみを計算します。この場合は、最初の2行に、Week.oamountとして週毎の1つの独立した値を、Week.pamountとして、週毎の他の値を計算します。

show linechartで始まる棒グラフ文は、シンプルなlabel タイルよりも少し長いです。長くて読みにくい文を避けるために、行をバックスラッシュ\記号で切断します。バックスラッシュ記号は、長すぎるスクリプトの行を分割する為に、エンビジョンの任意の個所で使用出来ます。タイルに限って言えば、一般的な使用方法は、 with キーワードの後にバックスラッシュが使用されます。また、棒グラフのタイトルは、すでにインジケータ表示で見てきたように、通貨単位の宣言に{$}トークンを含みます。

続いて改行の後、Week.oamountWeek.pamountの2つのベクトルが続きます。前述したように、withの後は、コンマで区切られた1行以上の変数をリストする事が出来ます。これらの変数はタイルで表示されます。この場合、2つの変数がタイルに渡されます。棒グラフは、2つ以上の変数をサポートしていますが、スクリプトに3行以上の変数が存在すると非常に読みづらくなるため、実際には3つ以上の変数を含めない事をお勧めします。

タイルに引数として渡された変数は、明示的に名前を変更することができます。これは、新しい名前を定義する文字列の後に、asキーワードで実装できます。すべてのタイル型は、外観を改善して、タイルのスタイルに合わせた変数名で扱う傾向があります。たとえば、棒グラフは、実際のグラフの下に凡例表示されている名前に変更されます。しかし、 as}キーワードを使用する変数のネーミングメカニズムは、 linechartに限らず、すべてのタイル間で共有する機能です。asに続ける文字列は、タイトルのいずれかと一致する動作を伴う測定単位を含めることができます。

テーブルの表示

テーブルのより高度な使用法について、続けて講義したいので、今回はpiecharttreemapをスキップする事にしましょう。テーブルは、そのまま目にされるものではありませんが、おそらく、アクション指向のダッシュボードの中で、最も汎用性のある素材の一つです。表は、最も在庫過剰な製品や最も供給不足の製品などのように、優先順位付けされたアクションリストを表示するために、よく使用されます。上記のスクリプトでは、(明瞭にするため以下にコピー)スクリプトの最後に、少し複雑なテーブルを定義しました。

show table "Top Sellers" a9f12 tomato with \
  Id as "Product ID", \
  Supplier, \
  StockOnHand, \
  sum(Orders.NetAmount) as "Sold{$}" \
  order by sum(Orders.NetAmount) desc 

この文は1行で書くことができますが、読みやすくするため、バックスラッシュ記号/を使用して複数行にしています。構文は、これまでに見てきたような、withキーワードに続く4つの変数リストで構成され、一般的なエンビジョンの規範に従っています。宣言は、特殊なorder by文で終了しますが、後で説明します。

また、エンビジョン は、単に変数のみリストすることは出来ませんが、式は可能です。上記の4行目では、この機能の利点を利用しています。sum()は、アイテムレベルの集合を計算し、計算結果はタイル内にそのまま表示されます。前もってベクトル宣言が可能です:

Sold = sum(Orders.NetAmount)
show table "Top Sellers" a9f12 tomato with \
  Id as "Product ID", \
  Supplier, \
  StockOnHand, \
  Sold as "Sold{$}" \
  order by sum(Orders.NetAmount) desc 

タイル文の中に式を宣言する事で、スクリプトがよりコンパクトになり、一般的に、可読性と保守性が高まります。

最後に、order byで始まる最後の行は、名前が示すように、テーブルに表示する行の順序を制御します。descフラグは降順に並べる事を示します。desc フラグ省略された場合は、昇順が使用されます。

FORMATTER ERROR (Transcluded inexistent page or this same page)