
- Qlik Cloud
- Qlik Sense
- 開発者
- データロード
- 可視化・分析
Qlik Senseで前年同月のデータを求めてみよう!
Qlik Senseで分析を行う際、前年同月のデータを使って比較をしたいと思ったことはありませんか?
「同じチャートを年ごとにたくさん並べて表示したい…」「製品ごとの売上推移を比較したい…」このように
思ったことはないでしょうか?こんなとき、Trellis containerが便利です。今回は、Trellis containerの作成方法をご紹介します!
<表示イメージ>
|
※本記事は「2023年04月時点のSaaS」で作成しています。
複数のグラフを格子状に並べて表示できるチャートです。デフォルトでは、Y軸の目盛りが統一されるため、
全体への影響度が確認しやすくなるというメリットがあります。
以下のデータを例にTrellis containerを作成してみましょう。
▼データ例
年 | 商品 | 売上 |
2021 | りんご | 54800 |
2022 | りんご | 40300 |
2023 | りんご | 56400 |
2021 | みかん | 39800 |
2022 | みかん | 42800 |
2023 | みかん | 37900 |
2021 | もも | 80300 |
2022 | もも | 71100 |
2023 | もも | 89800 |
2021 | ぶどう | 99800 |
2022 | ぶどう | 77900 |
2023 | ぶどう | 93700 |
2021 | ばなな | 11900 |
2022 | ばなな | 26700 |
2023 | ばなな | 9600 |
Trellis containerで使用するチャート(今回は棒グラフ)は、[マスター アイテム]の[ビジュアライゼーション]
として先に登録しておきます。それでは、「年」ごとの『Sum(売上)』棒グラフを、Trellis containerを
使って「商品」ごとに表示してみましょう!
▼作成手順
1) シートを編集モードで開きます。
2) SaaSの場合は、シートの右上にある[詳細オプション]をオンにします。
|
3) 「年」ごとの『Sum(売上)』棒グラフを作成します。※軸:年、メジャー:Sum(売上)を設定しています。
|
4) 棒グラフを右クリックして、[マスターアイテムに追加]を選択すると[マスター アイテムに追加]画面が表示
されるので、任意の名前(例:棒グラフ)を設定し[追加]をクリックします。
|
5) [アセット]から[カスタム オブジェクト]-[Qlik Visualization bundle]-[Trellis container]を選択し、
ドラッグ&ドロップでシート上の空白のエリアに追加します。
|
6) [軸を追加]をクリックしてTrellis containerで表示したい項目を選択します。
※今回は「商品」ごとに表示するので「商品」を選択します。
|
7) [Add master visualization]をクリックすると、[マスター アイテム]に登録した[ビジュアライゼーション]が
表示されるので、先ほど登録した「棒グラフ」を選択します。Trellis containerが表示されます!
|
▼TIPS:表示する列の数を変更してみよう!
・[プロパティ]-[スタイル]-[Trellis options]の[Number of columns]でTrellis containerの列の数を設定
できます。
・[Maximum number of charts]では、表示可能なチャートの最大数を設定できます。
|
<表示イメージ>
[Number of columns]を「3」とすると、表示が3列になります。
|
「マスター アイテムに登録するチャートはうまく表示できているけど、Trellis containerに設定すると意図した集計結果が表示されない…」このような経験はありませんか?
Trellis containerでは、表示内容を分割するために、数式内でSET分析の自動埋め込みが行われます。基準線を設定している…、メジャーにSET分析を使用している…、メジャーの[修飾子]-[累計](プロパティの設定)を使用している…、マスター アイテムに登録するメジャーの数式が複雑…などの場合、自動埋め込みの動作で、メジャーの適切な箇所にSET分析が埋め込まれないときや、メジャー以外の設定箇所に自動埋め込みが反映されないときがあります。このようなときは、[Advanced mode]を使用して、数式内のどこにSET分析を埋め込むかを定義しましょう。
▼Advanced modeを使用したときの記述方法と置換後の値
記述方法 | 置換後の値 |
$(vDim) | Dimension Name |
$(vDimValue) | Dimension Value |
$(vDimSet) | ,[Dimension Name]={'Dimension Value'} |
$(vDimSetFull) | {<[Dimension Name]={'Dimension Value'}>} |
※「Dimension Name」は軸に設定した項目名、「Dimension Value」は軸に設定した項目の値
として置換されます。
▼記述例
「Dimension Name=商品」「Dimension Value=ばなな」と置き換えが行われるとすると、
以下のように置換されます。
置換前の数式 | 置換後の数式 |
Sum({<$(vDim)={'$(vDimValue)'}>}[売上]) | Sum({<商品={'ばなな'}>}[売上]) |
Sum({<支店={'東京'}$(vDimSet)>}[売上]) | Sum({<支店={'東京'},商品={'ばなな'}>}[売上]) |
Sum($(vDimSetFull)[売上]) | Sum({<商品={'ばなな'}>}[売上]) |
今回は、基準線を使用する場合、累積表示(プロパティ設定)の場合の動作について、確認していきましょう。
[マスターアイテム]に登録する棒グラフ(「年」ごとの『Sum(売上)』)に、基準線を追加します。
▼作成手順
1) シートを編集モードで開きます。
2) 「年」ごとの『Sum(売上)』棒グラフを作成します。
※軸:年、メジャー:Sum(売上)を設定しています。
3) [拡張機能]-[基準線]で[基準線を追加]をクリックして基準線を設定します。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ラベル :平均
基準線の数式:Avg(Aggr(Sum($(vDimSetFull)[売上]),年))
◇数式解説
- $(vDimSetFull)
Trellis container内では『{<[Dimension Name]={'Dimension Value'}>}』のように置換されます。
つまり、Advanced modeを使用すると『Avg(Aggr(Sum({<[商品]={'ばなな'}>} [売上]),年))』
のような数式となり、Trellis containerで「商品」ごとにチャートが表示されます。
- Aggr(Sum([売上]),年)
Aggr関数を使用して「年」ごとの『Sum(売上)』を求めています。
- Avg(Aggr(Sum([売上]),年))
Avg関数を使用して「年」ごとの『Sum(売上)』の平均を求めています。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
4) 棒グラフを右クリックして、[マスターアイテムに追加]を選択すると[マスター アイテムに追加]画面が表示
されるので、任意の名前(例:基準線棒グラフ)を設定し[追加]をクリックします。
|
5) [アセット]から[カスタム オブジェクト]-[Qlik Visualization bundle]-[Trellis container]を選択し、
ドラッグ&ドロップでシート上の空白のエリアに追加します。
6) [軸を追加]をクリックしてTrellis containerで表示したい項目を選択します。
※今回は「商品」ごとに表示するので「商品」を選択します。
|
7) [Add master visualization]をクリックし、先ほど登録した「棒グラフ」を選択します。
Trellis containerが表示されます。
※この状態では、[Advanced mode]がオンになっていないので、基準線が正しく表示されていません。
|
8) Trellis containerの[プロパティ]-[スタイル]-[Trellis options]-[Advanced mode]をオンにします。
Trellis containerで正しく基準線を表示することができました!
|
メジャーの[修飾子]-[累計](プロパティの設定)を使用して累計表示しているときは、Trellis containerで累計を
表示することができません。プロパティを使用せず、数式で累計を設定しましょう。
|
▼作成手順
1) シートを編集モードで開きます。
2) 「年」ごとの『Sum(売上)』棒グラフの累計を数式で設定します。
※Trellis containerを使用したときに、SET分析を埋め込みたい場所に「$(vDimSetFull)」を設定します。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
軸 :年
メジャー:Rangesum(Above(Sum($(vDimSetFull)[売上]),0,Rowno()))
◇数式解説
- $(vDimSetFull)
『Rangesum(Above(Sum({<[商品]={'ばなな'}>}[売上]),0,Rowno()))』のような数式となり、
Trellis containerで「商品」ごとにチャートが表示されます。
- Rangesum(Above(Sum([売上]),0,Rowno()))
RangeSum関数は指定した範囲の合計値を求める関数で、Above関数と組みあわせで、
累計を取得しています。
- Rowno()
現在行を取得します。
- Above(Sum(data),0,Rowno())
構文は「Above(数式,n,m)」のように記載します。
n行(n=0 は、現在行を示します)を含め、m行より上に表示されている全ての値を返します。
今回、m行にはRowno関数を指定することで、現在行の上にある全ての値を返すようにしています。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
3) 作成した累積棒グラフを右クリックし[マスター アイテムに追加]をクリックします。
※任意の名前は「累積棒グラフ」とします。
|
4) [アセット]から[カスタム オブジェクト]-[Qlik Visualization bundle]-[Trellis container]を選択し、
ドラッグ&ドロップでシート上の空白のエリアにTrellis containerを追加します。
5) [軸を追加]で「商品」、[Add master visualization]で先ほど作成した「累積棒グラフ」を選択します。
|
<表示イメージ>
|
6) Trellis containerの[プロパティ]-[スタイル]-[Trellis options]-[Advanced mode]をオンにします。
Advanced modeがオンのとき:
指定した箇所にSET分析の埋め込みが行われます。
・Rangesum(Above(Sum({<[商品]={'ばなな'}>}[売上]),0,Rowno()))
Advanced modeがオフのとき:
自動でSET分析の埋め込みが行われるため、Rangesum関数にも『{<[商品]={'ばなな'}>}』の埋め込みが行われます。また、Advanced mode をオンにしないと「$(vDimSetFull)」 は展開されません。
・Rangesum({<[商品]={'ばなな'}>}Above(Sum({<[商品]={'ばなな'}>}$(vDimSetFull)[売上]),0,Rowno()))+0*Sum({1}1)
累積は表示されますが、Rangesum関数の構文として正しくないため、Advanced modeをオンにして
「$(vDimSetFull)」を指定します。
なお、「累積棒グラフ」のメジャーで「$(vDimSetFull)」を使用せず『Rangesum(Above(Sum([売上]),0,Rowno()))』と設定しても、Trellis containerを使用するとRangesum関数にSET分析の埋め込みが行われます。
・Rangesum({<[商品]={'ばなな'}>}Above(Sum({<[商品]={'ばなな'}>}[売上]),0,Rowno()))+0*Sum({1}1)
1. Trellis containerでは、以下のチャートは使用できません。
・フィルター パネル
・ヒストグラム
2. Trellis containerでは、SET分析が自動で埋め込まれるので、意図した結果にならないときがあります。
そんなときはAdvanced modeを使って、どこにSET分析を埋め込むか、定義してみてください。
3. メジャーの[修飾子]-[累計]を設定しているとき、累計をTrellis containerで表示できません。
累計は数式で設定し、Advanced modeを利用しましょう。
今回は、Trellis containerについて説明しました。いかがでしたでしょうか?
Trellis containerの詳細については、ヘルプもご覧ください。
https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Visualizations/VisualizationBundle/trellis-container.htm
Trellis containerでうまく表示できない、といったときは、SET分析を埋め込みたい部分を確認してみてください。Advanced modeを使うことで解決できるかもしれません。
Qlik Senseで分析を行う際、前年同月のデータを使って比較をしたいと思ったことはありませんか?
先行ロードの機能を使用すると、すぐ下に記載されたLOAD文の結果をデータソースとして、上のLOAD文で使用することができます。
テーブルに表示する列や行を、ユーザーが選択できるようにする方法をご紹介します!