TECH BLOG

MENU

オンプレクラウド

Dr.Sum

Dr.Sum

エクセルなどでデータを管理している場合に、例えば店舗ごとの売り上げが年度が増えるごとに横に伸びている場合や、アンケート項目が増えるごとに横に伸びることがよくあります。このようなデータ構造を横持ちと言います。今回はPIVOT関数とUNPIVOT関数を使用して横持ちのデータを縦持ちのデータに変換していきます。

なお、Dr.Sumではマウス操作のみで簡単に横持ち⇔縦持ちを変換する機能を持っています。詳細は下記の記事をご覧ください。

参照:【Excelの取り込み】データベースにExcelデータをインポートしよう~Excel編~

データを縦持ちにするメリット

データベース設計をする際の「横持ち」と「縦持ち」について、以下のようなメリットとデメリットがあります。

横持ち
 メリット
  ・1レコードに必要な情報が収まるので、見やすい、データ化しやすい(アンケートなど)、検索しやすい
  ・大量データを処理しやすい
 デメリット
  ・項目を追加する場合、テーブル構造の修正が必要
  (例)横持ちデータに2022年度のA店のデータを追加する場合、2022年度のカラムを追加する必要がある縦持ち
 メリット
  ・データが正規化されているため扱いやすい
  ・項目が追加された場合は行の追加のみで、テーブル構造の修正が必要ない
  (例)縦持ちデータに2022年度のA店のデータを追加する場合、2022年度のA店のデータを準備するのみ

 デメリット
  ・1つの情報が複数レコードに分かれるため、横持ちより量が多く、縦に長いデータになる

例えば、連携元のシステムは横持ちのデータとして保持しているが、Dr.Sum では縦持ちのデータとして扱いたい場合は、
Dr.Sum にデータを取り込んだ後にデータ変換(横持ち⇒縦持ち)が必要になります。

ここではデータ変換(横持ち⇔縦持ち)の必要が生じた場合の対応方法について紹介します。
※Dr.Sum Ver. 5.5 の機能を利用しています。Dr.Sum Ver. 5.5 より前のバージョンでは実現できませんのでご注意ください。

SQLの UNPIVOT関数 を使用する

横持ち⇒縦持ちへの変換はUNPIVOT関数を使用することで変換できます。
参考までに、UNPIVOT関数を使用したSQL文を掲載します。

SELECT
    *
FROM
    横持テーブル UNPIVOT(来客数 FOR 年度 IN(2019年度, 2020年度, 2021年度))
AS 縦持テーブル
;

 

SQLの PIVOT関数 を使用する

横持ち⇒縦持ちへの変換はPIVOT関数を使用することで変換できます。

参考までに、UNPIVOT関数を使用したSQL文を掲載します。

SELECT
    *
FROM
    縦持テーブル PIVOT(SUM(来客数) FOR 年度 IN(2019 as 2019年度, 2020 as 2020年度, 2021 as 2021年度))
AS 横持テーブル;

「横持ち」と「縦持ち」のどちらが最適かは連携するシステムによって異なってくるで、ぜひデータ変換(横持ち⇔縦持ち)を活用してください!

この記事にリアクションしてみませんか?

  • 分かりやすい (5)
  • 問題が解決した (1)
評価いただいてありがとうございます!
プロフィールへ

宇根 昌和

新卒でウイングアーク1stへ入社、プリセールス活動を行っています。Pythonをベースに様々なツールからデータをDr.Sumへ集約しMotionBoardで可視化する仕組みを作ったり、Web APIを使ったデータ蓄積ノウハウをテーマにイベント登壇したりしています。Dr.Sum及びMotionBoardを中心とした役立つ情報を発信していきます!

Related article

Related article関連記事

Pick up

Pick upおすすめ記事

特定の文字列で分割して階層構造をつくりたい!~DS Scriptで分割する~1

  • #データ加工
  • #DS Script

2023.07.17

Dr.Sum

DS Scriptで必要なテーブルだけ再構築(リビルド)をしよう

  • #DS Script

2023.07.06

Dr.Sum

「データポイント数が、しきい値をオーバーしました」というエラーの解決方法【データベースで処理をしよう】

  • #データ加工

2023.06.13

MotionBoard

Ranking

Rankingランキング

1

Excelのデータを加工したい。~変換(横持ち⇔縦持ち)について~

  • #データ取り込み
  • #データ加工

2021.01.19

Dr.Sum

2

【Excelの取り込み】データベースにExcelデータをインポートしよ…

  • #データ取り込み

2020.08.14

Dr.Sum

3

Dr.Sum内にある複数のテーブルを結合しビューをつくりたい~JOIN…

  • #データ加工
  • #集計表

2021.01.26

Dr.Sum

Info

Information

ウイングアーク1stからのお知らせ