---
title: 【Sisense Data Modeling】累計カレンダーで移動年計、Zチャートにチャレンジ！
description: 季節変動の大きいデータから全体的な傾向を把握したい時などには移動年計が役に経ちます。「12ヶ月の累計をすればいいんじゃない？」と思われがちですが、フィルタをかけてしまうと破綻...実はこういうケースでも累計カレンダーが使えるんです。ついでにZチャートまで作ってしまいます。
image: https://knowledge.insight-lab.co.jp/hubfs/Imported_Blog_Media/11_z2019-1024x423-1.png
---

![INSIGHT LAB_文字のみ_WHT-1](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png?width=400&height=110&name=INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png)

![INSIGHT LAB_文字のみ](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF.png?width=400&height=110&name=INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF.png)

[![お問い合わせ](https://hubspot-no-cache-na2-prod.s3.amazonaws.com/cta/default/5935783/a4a0266e-14ad-4388-b83f-681a6f35b8a7.png)](https://hubspot-cta-redirect-na2-prod.s3.amazonaws.com/cta/redirect/5935783/a4a0266e-14ad-4388-b83f-681a6f35b8a7)

<https://knowledge.insight-lab.co.jp/sisense/data-modeling/-data-modeling-%E7%B4%AF%E8%A8%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%81%A7%E7%A7%BB%E5%8B%95%E5%B9%B4%E8%A8%88-z%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88%E3%81%AB#tmpmodule_1601616829590464>

- [Sisenseとは](https://service.insight-lab.co.jp/sisense)
- [Sisenseナレッジ](https://knowledge.insight-lab.co.jp/sisense)
- [セミナー](https://event.insight-lab.co.jp/sisense-seminar)
- [トレーニング](https://service.insight-lab.co.jp/data-analytics-dojo/training_course)
- [お役立ち資料](https://download.insight-lab.co.jp/sisense/download)

###### 4 分で読むことができます。

# [【Sisense Data Modeling】累計カレンダーで移動年計、Zチャートにチャレンジ！](https://knowledge.insight-lab.co.jp/sisense/data-modeling/-data-modeling-累計カレンダーで移動年計-zチャートに)

 執筆者 [Turtle](https://knowledge.insight-lab.co.jp/sisense/author/turtle) 更新日時 2020年10月16日

###### Topics: [Data Modeling](https://knowledge.insight-lab.co.jp/sisense/tag/data-modeling)

![【Data Modeling】累計カレンダーで移動年計、Zチャートにチャレンジ！](https://knowledge.insight-lab.co.jp/hubfs/Imported_Blog_Media/11_z2019-1024x423-1.png)

 目次

シャローム！Sato-Gです。  
今日はMichaelが熱でダウン！  
先週、亀戸ホルモンに一緒に行ったんだけど濃厚接触？？  
なーんて、もちろんコロナじゃないよ。  
あー、あのとろけるホルモンまた食べたくなっちゃったな。。。

さてさて、前回の**[【Sisense Data Modeling】累計カレンダーでCOVID-19の移動合計推移を求めてみる](https://knowledge.insight-lab.co.jp/sisense/data-modeling/cumulative-calendar)**  
では、累計カレンダーで移動合計を求めたんだけど、今回は売上傾向などを把握する時に利用される移動年計にチャレンジ！  
ついでにZチャートも作っちゃうよー  
っていう企画です。

 

## 1. データの準備

前回の移動合計はCOVID-19のデータを使ったんだけど、１年経っていないから移動年計は出せない。  
というか移動年計を出すためには最低でも23ヶ月のデータがないと正確には出せないんだ。  
で、今回は**[【Sisense Data Modeling】データベースの準備～Generic JDBC Connectorで接続](https://knowledge.insight-lab.co.jp/sisense/data-modeling/sqlite-jdbc)**のデータを使うことにする。  
ElastiCubeのファイルは**[ここ](https://knowledge.insight-lab.co.jp/hubfs/SISENSE/Data/ec_sql_union.zip)**に入ってるので必要な方はダウンロードしてね。

## 2. 累計カレンダーの作成

前回の記事では日単位の累計だったけど、移動年計は月単位で集計する。だから累計カレンダーも月単位となる。  
まずは元々のデータモデルの確認。

[![](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/Imported_Blog_Media/01_model_old-1024x487-1.png?width=1024&height=487&name=01_model_old-1024x487-1.png)](https://knowledge.insight-lab.co.jp/hubfs/Imported_Blog_Media/01_model_old-1.png)

### 2.1 カレンダーテーブルの作成

まずはカレンダーテーブルを作成する。\[**カレンダー**\]テーブルは\[**明細**\]テーブルの年月日の期間分作成することになるので、データ件数の多い\[明細\]テーブルを利用してカレンダーテーブルを以下のSQLで作成する。  
一応、歯抜け対策も含めて。

[![](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/Imported_Blog_Media/02_calendar-1024x248-1.png?width=1024&height=248&name=02_calendar-1024x248-1.png)](https://knowledge.insight-lab.co.jp/hubfs/Imported_Blog_Media/02_calendar-1.png)

```
SELECT  年月日_Min + (rownum-1) *(60*60*24) AS 年月日,
        ToString(GetYear(年月日_Min + (rownum-1) *(60*60*24))) + '-' + Right('0'+ToString(GetMonth(年月日_Min + (rownum-1) *(60*60*24))),2) AS 年月
FROM
(SELECT Min(年月日) AS 年月日_Min,
        Max(年月日) AS 年月日_Max
FROM 明細) t1,
(SELECT
        RANKASC(年月日) AS rownum
FROM 明細
)  t2
WHERE 年月日_Min + (rownum-1) *(60*60*24) <= 年月日_Max
```

このテーブルはDate型の**年月日**とText型の**年月**（yyyy-MM）の２カラム構成のテーブルになる。

### 2.2 累計カレンダーテーブルの作成

次は累計カレンダーの作成に移る。  
SQLは以下のとおり。

[![](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/Imported_Blog_Media/03_calendar2-1.png?width=816&height=578&name=03_calendar2-1.png)](https://knowledge.insight-lab.co.jp/hubfs/Imported_Blog_Media/03_calendar2-1.png)

```
SELECT  ToInt(StrParts(d1.年月,'-', 1))     AS 累計年,
            d1.年月     AS 累計年月,
            d2.年月     AS 年月,
            MonthDiff(d1.年月_date,d2.年月_date) AS Counter
FROM
(SELECT  DISTINCT 年月,
        CreateDate(
            ToInt(StrParts([年月],'-', 1)),
            ToInt(StrParts([年月],'-', 2)),
            1
        ) AS 年月_date
FROM カレンダー
) d1,
(SELECT  DISTINCT 年月,
        CreateDate(
            ToInt(StrParts([年月],'-', 1)),
            ToInt(StrParts([年月],'-', 2)),
            1
        ) AS 年月_date
FROM カレンダー
) d2
WHERE d1.年月 >= d2.年月
```

ちょっと解説しよう。  
d1とd2という２つのテーブルを以下のSQLで作成する。  
年月は'yyyy-MM'形式のテキストになるので、月の差を求めやすいように**CreateDate**関数を使用してDate型にしておく。  
年月の'2020-01'は’2020/01/01'のようにその月の初日が\[**年月\_date**\]となる。

```
SELECT  DISTINCT 年月,
        CreateDate(
            ToInt(StrParts([年月],'-', 1)),
            ToInt(StrParts([年月],'-', 2)),
            1
        ) AS 年月_date
FROM カレンダー
```

d1とd2は同一のSQLなので自己結合に等しい。  
FROM句で、*FROM d1,d2*とすることで、d1×d2の組み合わせテーブルが作成される。  
d1.年月が\[**累計年月**\]となり、d2.年月がカレンダーテーブルに紐づく\[**年月**\]となるが、*WHERE d1.年月 >= d2.年月*として、年月は累計年月以前の月だけになるように制限する。  
そして**MonthDiff**関数を用いて、基準となる\[**累計年月**\]と累計される年月である\[**年月**\]の差を求める（**Counter**）。

```
SELECT  ToInt(StrParts(d1.年月,'-', 1))     AS 累計年,
            d1.年月     AS 累計年月,
            d2.年月     AS 年月,
            MonthDiff(d1.年月_date,d2.年月_date) AS Counter
FROM　d1,d2
WHERE d1.年月 >= d2.年月
```

### 2.3 リレーションシップ設定

テーブルができあがったので、以下のリレーションシップを設定する。  
**明細.年月日** - **カレンダー.年月日**  
**カレンダー.年月** - **累計カレンダー.年月**

[![](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/Imported_Blog_Media/04_model_new-1024x659-1.png?width=1024&height=659&name=04_model_new-1024x659-1.png)](https://knowledge.insight-lab.co.jp/hubfs/Imported_Blog_Media/04_model_new-1.png)

## 3. ウィジェットの作成

### 3.1 累計表示の棒グラフ

まずシンプルに\[カテゴリ\]に\[**累計年月**\]、数式に*SUM(注文金額)*を設定して棒グラフを作成してみる。  
各累計年月は累計年月以前のすべての年月を持っているので、全ての累計が表示されることになる。

[![](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/Imported_Blog_Media/05_chart1-1024x515-1.png?width=1024&height=515&name=05_chart1-1024x515-1.png)](https://knowledge.insight-lab.co.jp/hubfs/Imported_Blog_Media/05_chart1-1.png)

累計表示というと**RSUM**関数を想像すると思うけど、RSUM関数はウィジェットに表示されている期間の累計にしかならない。  
しかし、累計カレンダーを使うと、フィルターで表示期間が絞り込まれてもきちんと累計計算が行われる。

[![](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/Imported_Blog_Media/06_chart2-1024x534-1.png?width=1024&height=534&name=06_chart2-1024x534-1.png)](https://knowledge.insight-lab.co.jp/hubfs/Imported_Blog_Media/06_chart2-1.png)

2020年1月以降でフィルター指定しても、この通り表示期間前の累計が計算されて表示される。

[![](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/Imported_Blog_Media/07_chart3-1024x281-1.png?width=1024&height=281&name=07_chart3-1024x281-1.png)](https://knowledge.insight-lab.co.jp/hubfs/Imported_Blog_Media/07_chart3-1.png)

### 3.2 移動年計の棒グラフ

移動年計は通常は12ヶ月の累計だが、ここではパラメータ化したい。  
値は以下のように設定する

**■値１（移動年計）**  
*SUM(注文金額)*  
※ダッシュボードフィルタでパラメータ指定する。  
※「系列の種類」はエリアに設定する。

**■値２（当月）**  
*(SUM(注文金額),\[Counter\])*  
※Counterはフィルタ設定で0（当月）で絞り込んでおく。

[![](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/Imported_Blog_Media/08_formula-1024x708-1.png?width=1024&height=708&name=08_formula-1024x708-1.png)](https://knowledge.insight-lab.co.jp/hubfs/Imported_Blog_Media/08_formula-1.png)

ダッシュボードフィルターに**累計年月**と**Counter**を配置し、Counterを「**<=11**」と設定する。  
これで12ヶ月の累計（つまり移動年計）が計算されることになる。  
結果は以下のとおり。

[![](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/Imported_Blog_Media/09_mat-1024x428-1.png?width=1024&height=428&name=09_mat-1024x428-1.png)](https://knowledge.insight-lab.co.jp/hubfs/Imported_Blog_Media/09_mat-1.png)

留意したいのは最初の11ヶ月は累計できる月数が不足しているので正しくないということ。  
12ヶ月目からは正しく年計が計算され、右肩上がりで金額が順調に伸びていることがわかる。  
こんなふうに当月だけでは明確に金額が増加しているか判断がつかないデータでも、移動年計を用いると季節変動を平準化した傾向が把握できる。

### 3.3 Zチャート

せっかく移動年計ができるようになったので、ついでに**Zチャート**を作ってしまおう。  
Zチャートは折れ線グラフを使って表現する。  
上記で作成した移動年計の棒グラフを折れ線グラフにして以下の「値」を追加する。

**■値３（累計）**  
*RSUM((SUM(注文金額),\[Counter\]))*  
※Counterはフィルタ設定で0（当月）で絞り込んでおく。

さらに、ダッシュボードフィルターに累計年を追加し「2020」を選択すると下記のようなZチャートが出来上がる。  
簡単でしょ？

[![](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/Imported_Blog_Media/10_z2020-1024x526-1.png?width=1024&height=526&name=10_z2020-1024x526-1.png)](https://knowledge.insight-lab.co.jp/hubfs/Imported_Blog_Media/10_z2020-1.png)

2019年のZチャートは以下のようになる。

[![](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/Imported_Blog_Media/11_z2019-1024x423-1.png?width=1024&height=423&name=11_z2019-1024x423-1.png)](https://knowledge.insight-lab.co.jp/hubfs/Imported_Blog_Media/11_z2019-1.png)

Zチャートは2019年も2020年も年末に向けて売上が上昇する成長型という意味では共通しているが、2019年のほうが移動年計の傾きが大きく、2020年の売上基盤には2019年の売上増が寄与していることがわかる。

## 4. まとめ

今回は累計カレンダーを使用して移動年計チャートやZチャートを作成してみた。  
実を言うと、この方法は他のBIでも使えるワザであって、Sisense特有のものではない。  
発想の転換だよね。

以上で累計カレンダーの紹介はおしまい。  
次は何のネタにしようかな...

ではまた！

Sisenseを体験してみませんか？

INSIGHT LABではSisense紹介セミナーを定期開催しています。Sisenseの製品紹介や他BI製品との比較だけでなく、デモンストレーションを通してSisenseのシンプルな操作性やプレゼンテーション機能を体感いただけます。

[![詳細はこちら](https://hubspot-no-cache-na2-prod.s3.amazonaws.com/cta/default/5935783/ff8d86bf-1184-4d92-8926-6a31a20de4b0.png)](https://hubspot-cta-redirect-na2-prod.s3.amazonaws.com/cta/redirect/5935783/ff8d86bf-1184-4d92-8926-6a31a20de4b0)

- [Tweet](https://twitter.com/share)

![Turtle](https://knowledge.insight-lab.co.jp/hubfs/Sunflower.jpg)

#### 執筆者 [Turtle](https://knowledge.insight-lab.co.jp/sisense/author/turtle)

可視化領域を中心とした業務に従事しています。

###### [前の投稿](https://knowledge.insight-lab.co.jp/sisense/blog/decile_analysis)

[![【Blog】サクッとデシル分析してみる](https://knowledge.insight-lab.co.jp/hubfs/Imported_Blog_Media/8f5d8415b9ca8b19457ccb26588a7b42-1024x338-2.png)](https://knowledge.insight-lab.co.jp/sisense/blog/decile_analysis)

###### [【Sisense Widget】サクッとデシル分析してみる](https://knowledge.insight-lab.co.jp/sisense/blog/decile_analysis)

###### [次の投稿](https://knowledge.insight-lab.co.jp/sisense/plug-in/filtered_measure)

[![【Plug-in】フィルターと連動させて単一メジャーの値を変える](https://knowledge.insight-lab.co.jp/hubfs/color.png)](https://knowledge.insight-lab.co.jp/sisense/plug-in/filtered_measure)

###### [【Sisense Plugin】フィルターと連動させて単一メジャーの値を変える](https://knowledge.insight-lab.co.jp/sisense/plug-in/filtered_measure)

RECOMMEND こちらの記事も人気です。

<https://knowledge.insight-lab.co.jp/sisense/administration/ssl_lets_encrypt>

###### 4 分で読むことができます。

#### [【Sisense Administaration】無料のSSL証明書"Let's Encrypt"でSSL化してみる](https://knowledge.insight-lab.co.jp/sisense/administration/ssl_lets_encrypt)

###### 2020年 10月 16日

<https://knowledge.insight-lab.co.jp/sisense/information/spotify_music_data_1>

###### 8 分で読むことができます。

#### [【API連携】Spotify音楽データの分析①【Sisense】](https://knowledge.insight-lab.co.jp/sisense/information/spotify_music_data_1)

###### 2020年 10月 16日

<https://knowledge.insight-lab.co.jp/sisense/widget/step_line_chart>

###### 2 分で読むことができます。

#### [【Sisense Widget】折れ線グラフを階段状に表示する](https://knowledge.insight-lab.co.jp/sisense/widget/step_line_chart)

###### 2020年 10月 16日

<https://knowledge.insight-lab.co.jp/sisense/widget/radarchart>

###### 3 分で読むことができます。

#### [【Sisense Widget】Radar Chartを使ってポケモンの種族値を表示してみた](https://knowledge.insight-lab.co.jp/sisense/widget/radarchart)

###### 2020年 10月 16日

<https://knowledge.insight-lab.co.jp/sisense/formula/case>

###### 3 分で読むことができます。

#### [【Sisense Formula】CASE関数を使って条件分岐する](https://knowledge.insight-lab.co.jp/sisense/formula/case)

###### 2020年 10月 16日

<https://knowledge.insight-lab.co.jp/sisense/widget/line-graph>

###### 3 分で読むことができます。

#### [【Sisense Widget】折れ線グラフにおける欠落値の対処法](https://knowledge.insight-lab.co.jp/sisense/widget/line-graph)

###### 2020年 10月 16日

##### 運営会社

運営会社

- [会社概要](https://www.insight-lab.co.jp/about/company.html)
- [お問い合わせ](https://contact.insight-lab.co.jp/main)

##### メニュー

メニュー

- Sisenseとは
- [Sisenseナレッジ](https://knowledge.insight-lab.co.jp/sisense)
- [セミナー](https://event.insight-lab.co.jp/sisense-seminar)
- [お役立ち資料](https://download.insight-lab.co.jp/sisense/download)

[![INSIGHT LAB_文字のみ_WHT-1](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png?width=200&height=55&name=INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png "INSIGHT LAB_文字のみ_WHT-1")](https://www.insight-lab.co.jp/)

- [プライバシーポリシー](https://www.insight-lab.co.jp/privacy.html)

Copyright © 2020 INSIGHT LAB, Inc.

<https://twitter.com/INSIGHTLAB_INC><https://www.youtube.com/channel/UCOKNKiO4uuza4NioSZpBMhg>