カテゴリー別アーカイブ: 4.データ変換

時間列が文字列で取り込まれた場合

時間列が文字列になってしまった場合

Spotfireでは時間はdatetimeという型で扱われ、
トレンドだけでなく、曜日や時間帯という見方で扱うこともできるので非常に便利です。

ただ、このdatetimeという型、取り込みの際に型指定する必要があるのですが、
型チェックが割と厳格なので、気が付いたら文字列になっていたり、Null扱いになっていたりします。

構文的には”YYYY/MM/DD HH:MM:SS”の形になっている必要があり
“/”や日付けと時刻の区切りの” “などが無いと文字列扱いにされてしまいます。
1

そのため取り込み後、日付型として使う必要があります。
その場合は計算カラムを使います。

2
↑のように日付に”/”がなかったり、日付と時刻が別のカラムになっている場合
文字列関数で正しい構文に変換し、datetime関数で日付に変換。

計算カラム

「挿入」から「計算カラム」を選択します。
3

4

datetimeという型

手順としては画一的ではないのですがright,left,midなどの文字列関数を使用したり”&”で結合して、
“YYYY/MM/DD HH:MM:SS”の文字列を作成後、datetime関数を使用します。

少しめんどくさいですが、これでどのような形式でもとりあえず取り込んだ後に
日付型として扱う事ができます。

複数ファイルの一括取り込み

ファイル一括取り込みツール

Spotfireで日ごとに生成されるような複数ファイルをマージして使う場合、行の追加機能を使います。

便利な機能ではあるのですが、一度に一つのファイルしか取り込むことができないため
10ファイルある場合は10回同じ操作を繰り返す必要があります。
2
↑100個のファイルは気合で100回マージだ!

あまり楽しい作業ではないので、一括取り込みのカスタムツールをご紹介します。

こちらからダウンロードしてください。

マニュアルダウンロード

解凍後のSPKファイルをSpotfireサーバー上からデプロイする必要があります。
※デスクトップ版では使用不可能です。ご容赦ください。

対応バージョンは6.5、7.0、7.5,7.6に対応しています。
対応ファイル形式はテキストファイルのみです。Excelファイルなどには対応しておりません。

使用方法

使い方は簡単です。
デプロイしてAnalystに反映されると「ツール」に
「複数テキスト一括取り込み」というメニューが追加されます。
1

選択するとメニューが表示されますので「ファイル追加」ボタンからマージしたいファイルを選択します。
6

「OK」を押すと選択ファイルをマージしたデータが取り込まれます。
4

内部的には「ローの追加」作業を繰り返しているだけなので作成したDXPファイルはWebPlayer上でも動作します。
5

有償版との違い

今回ご紹介したのはフリー版になります。
有償版との違いは

  • 日英中3か国語対応(フリー版は日本語のみ)
  • ファイル検索可能(拡張子、ファイル名、日付での条件指定が可能)
  • Web Player Serverで動作 (オープン時再検索可能)
  • ドキュメント付

などになります。

2017/9/6 最新版に差し替えました。
旧バージョンとの違いは下記となります。
1.一度のUndoで一括追加分戻れるように変更
2.データ取込み後の自動立上げビジュアライゼーションをテーブルに変更
3.発行元署名ファイルを最新版に差し替え(署名なし、の警告表示防止)
4.その他軽微なバグ修正

ご興味のある方は日本TIBCOまで

データの横変換

データの横変換

データの横変換にはピボット処理を使用します。
集計結果として確認したい場合はクロス集計表で十分ですが、
データテーブルとして同じ形式のデータを持ちたい場合に使用します。

主に他のデータと結合する際にキーカラムが一対一になるように集計したり、
相関を取る為にはデータを横持ちにする必要があります。

今回は縦長のデータをピボットで集計したデータテーブルを作成します。

3

データ変換

「データテーブルの追加」
データ変換の中のピボット処理を使用します。
「ファイル」→「データテーブルの追加」を選択します。
1

取り込む元データはこのような縦長のデータです。
2

データソースを選択したら変換メニューを開きます。
「変換」から「ピボット」を選択してください。
4

ピボット処理

データのピボット画面になるので、
ローの識別子に縦項目、カラムタイトルに横項目を設定します。
「値および集計方法」が実際に集計される値になります。

今回は一つずつですが、それぞれ複数項目も設定可能です。
5

カラムの命名パターンですが’%M(%V) (%C用)’だと非常に長いので
‘%C’にしてしまう事がほとんどです。

こちらが変換後のデータです。
6

せっかくなのでData Relationshipsで相関を見てみましたが、
それほど優位なペアはなさそうですね。
7

データの縦変換

データの縦変換はアンピボット処理

アンピボット処理によりデータを縦変換します。

以下の例は、単純なアンピボット変換を示しています。元のデータテーブルには、3つのカラムと 4つのローがあります。それぞれのローには、都市と朝の気温、および夕方の気温が含まれています。
データをアンピボットすると、朝夕の気温ごとに 1 つのローが作成され、倍の8ロー分のデータに変換されます。

2

データ変換

アンピボットはデータ変換メニューの中にあります。
まずは「ファイル」→「データテーブルの追加」を開きます。

1

今回取り込むのはこのようなデータです。
日付けなどがカラムとして横に長いデータになっている場合は、時系列として扱う事が出来ないので、アンピボット処理が必要になります。

3

データテーブルの追加メニュー

4

データを指定後、「変換」メニューから「ピボットの解除」を選択し「追加」ボタンを押します。
※「変換」メニュー表示されてない場合は「変換(追加された変換ステップはありません)を表示する」をクリックしてください。

ピボットの解除処理

5

左にカラムの一覧が表示されます。右には「移動するカラム」と「変換するカラム」という欄があります。
「移動するカラム」はキーカラムとして変換後も保持するカラムを選択し、
「変換するカラム」は縦変換したいカラムを選択します。

画面下のサンプルで変換後のイメージを確認できますので、間違いがないか確認できます。

6

実行するとデータが変換されます。
縦長のデータになっています。

7

棒グラフを作成してみました。
横軸で日付を指定しましたが、日付として階層で表示されています。

グラフの軸に計算式を入力

グラフ上に計算式を追加する利点

計算カラムで新たなカラムの追加について記載しましたが、
実は計算カラムはそれほど使用頻度が多くありません。

分析に応じてカラムをどんどん追加していくと、
カラム数が膨大になり、管理が複雑化してしまうからです。

そのため、計算カラムはカテゴリカラムなど、共通で使用するカラムだけを追加し、
グラフ上では分析内容に応じて「カスタム演算式」を使用するほうが便利です。

カスタム演算式

カスタム演算式はカラム選択可能な箇所であればどこでも適用可能なので、
X軸やY軸だけでなく、色やトレリスの設定、ラベルの設定などに使用することができます。

設定方法

カスタム演算式の設定方法はカラム選択で右クリックします。
1

式の入力は計算カラムと同じですが、
棒グラフや円グラフなど集計グラフの場合は、Avg、Sumなど集計関数を使用する必要があります。

野球のデータを使用して、チーム別のアウト数の平均を算出したいと思います。

avg ( 打席数 - ( ヒット数 + 二塁打 + 三塁打 + ホームラン ) )

で、求められるはずです(四球とかめんどくさいので省いています。。)
2

自動再計算される

カスタム演算式は軸に対して定義だけ設定されているので、
横軸などを変更した場合は自動的に再計算されるのも便利です。
3

ただし、色の基準で何か設定されている場合は、それぞれ別集計になりますので、
今回のように棒グラフで積み上げている場合は、平均の積み上げになっていしまいますので、注意が必要です。

4
平均を算出したつもりが、色の設定に「ポジション」を追加したせいで
ポジション別平均の積み上げという意図しない結果に。。。

その他サンプル

カスタム演算式は様々な箇所で使用可能です。

色の基準に設定
5
色の基準にカスタム演算式を設定してNYヤンキースだけ赤く表示
ラベルに設定
6
ホームラン打者に対して、ホームラン一本当たりのコストという興ざめな注釈を表示

取り込んだデータから計算できる値なら、基本的に再現できると思います。
カスタム演算式を使いこなすとぐっと分析の範囲が広がるので、
是非チャレンジしてください!

計算カラム

取り込みデータから計算したカラムを追加する。


Spotfireで取り込みデータの分析について学んできましたが、
分析のために計算された新たなカラムを追加する必要があります。

例えば「通貨」というカラムがあり、中身が「ドル、円」の2つある場合、
売上金額を「ドル」の場合は120倍する必要がありますし、
「売上」と「数量」というカラムがあった場合「売上/数量」で平均単価が算出できます。

このように既存のデータから新たなカラムを追加する場合は「計算カラム」の機能を使用します。
計算カラムでは、テキスト処理や集計処理、数学、統計、論理計算の函数を使用できますので、これらを組み合わせてより複雑な計算をすることが可能です。

緯度経度から距離を計算する


例としてこちらのデータを使用します。
2011年の東北地方太平洋沖地震の際の震源地と主だった地域の座標と震度データです。
1

震源地からの距離と計測震度の関係性をグラフにしたいのですが、肝心の距離がありません。
ただし、緯度と経度はありますので、三平方の定理より距離の近似を求めましょう。

三平方の定理

2

計算カラムの追加

計算カラムの追加は「挿入」→「計算カラム」を選択してください。

3

計算カラムの挿入メニュー

メニューが表示されるのでこちらで計算式を入力します。
4

左上に使用可能なカラム一覧が表示されます。
こちらでカラムを選択して「カラムの挿入」をクリックすると、「式」にカラムが記載されます。

右上の関数エリアでは使用可能な関数一覧が表示されます。
ここで関数を選択すると、下のウインドウに関数のヘルプが表示されますので、
使い方や記述例を学ぶことができます。
「関数の挿入」ボタンで「式」に計算式が記載されます。

式の入力

「式」に計算式を入力します。
カラム一覧や関数一覧から「挿入」して計算式を組むか、直接手入力することもできます。

左下にある「カラム名」は追加されるカラム名になります。
指定しないと計算式がそのままカラム名になり分かりづらいので、
必ず指定しましょう。

震源地からの距離を知りたいので「式」の欄には

Sqrt ( Power([lat] - 38.06 , 2 ) + Power([lon] - 142.52 , 2 ) )

と入力してください。それぞれのlatとlonから震源地のlat、lonを引いて
二乗したものを足して平方根を取っています。

カラム名は「選択地からの距離」にしています。

5

追加されたカラム

カラムの追加後テーブルにも表示されるようになりますので、
新規テーブルを作成して確認してみてください。

また画面右のフィルターパネルにも追加されます。
一番下に位置されるので、スクロールして確認してください。
集計結果でフィルターをかけることも可能です。

計算カラムは通常のカラムと同様にグラフの軸として使用することが可能です。
散布図で「選択地からの距離」と「測定震度」を軸に取ってみましょう。

6

結果的には距離が離れれば震度が弱まる訳ではないようですね。
読みは外れました。

作成済み計算カラムの編集

この散布図で趣旨は理解できるのですが、横軸の単位がわかりません。
三平方の定理で緯度経度を元に算出したので緯度経度基準の距離になっています。
実際の距離はもっと大きいので割戻をして、㎞に変換したいと思います。

作成した計算カラムの式を編集するにはフィルターパネルで
「震源地からの距離」を右クリックし「計算カラムの編集」を選択するか、
「編集」→「カラムのプロパティ」からカラムを選択し「編集」を押します。

7

再度計算パネルが表示されるので下記のように編集してください。

 Sqrt ( Power( ( [lat] - 38.06 ) / 0.0111 , 2 ) + Power( ( [lon] - 142.52 ) / 0.0091 ,2) )

OKを押すと再集計され、グラフ上の表記が変わります。

8

集計関数の使用

これで、㎞換算ができました。
ただ、細かいようですが、震源地の「選択地からの距離」が0.48になっています。

先ほどの計算式で緯度を38.06として計算しましたが、表示上は2ケタですが、実際に保持されている値は有効桁数が多いのです。
目で見てコピーしたため誤差が生じています。

では、計算式を使用して「震源地」の値を持ってきましょう。
再度カラムを編集して下記のように編集をしてください。

 Sqrt ( Power(([lat] - avg ( if ( [location] = '震源地' , [lat] , null ) ) ) / 0.0111,2) + Power(( ([lon] - avg ( if ( [location] = '震源地' , [lon] , null ) ) ) ) / 0.0091,2) )

ここではAvgを使用して平均の計算をしています。
Avg( lat ) と計算すると全データの平均が算出されますので、if文でlocationが震源地のデータだけを有効にしています。

9

このように集計演算を使用する事で全体のデータを集計したり、
if文で選択範囲のデータを絞り込むことができます。

プロパティとの連携

また、今回はご紹介しませんがプロパティと呼ばれる機能を使用して
自分が選択した地域に対しての相対距離を計算することもできます。
この機能を使用すると、選択地域に応じて、自動的に距離が再計算されるようになります。

10

ここでは一例を紹介しましたが、関数を組み合わせて様々な集計結果を求めることができます。
関数の数自体は多いですが、使用頻度が高いものをご紹介します。

テキスト関数
文字列を連結します。
Left 文字列を左から○文字切り取ります。
Right 文字列を右から○文字切り取ります。
Mid 文字列を×文字目から○文字切り取ります。
Find 文字列中から文字を検索し、その位置を返します。
主にmidやright,left関数と共に使用します。
Len 文字列の長さを返します。こちらもfindやmidと使用する事が多いです。
RxReplace 文字列を正規表現で処理します。
Substitute 文字列の単語を置換します。
Trim 文字列の先頭・末尾の空白を削除します。
UniqueConcatinate 文字列の固有値を連結します。
数学関数
Ceiling 引数を最も近い自然数に切り上げます
Floor 引数を最も近い自然数に切り下げます。
Mod 除算した余りを計算します。
Product 引数の積を計算します。
集計関数
Avg 平均値を計算します。
Count 引数のカラム内の空でない値の数を計算します
Max 最大値を計算します。
Median 引数の中央値を計算します。
Min 最小値を計算します。
StdDev 標準偏差を計算します。
UniqueCount カラム内の空でない固有値の数を計算します。
論理関数
Case 複数の条件分岐ができます。
If 条件分岐が出来ます。
日付関数
DataAdd 間隔を日付、時刻または日付時刻に追加します
DataDiff 日付時刻カラムの間の差異を計算します。
DataTimeNow 現在時刻を返します。
DataPart 日付、時刻または日付時刻の指定部分を返します。
Rank関数
Rank,DenseRank 共にランキング順位を返す関数です。順位付けやソート順序に使用する事が多いです。

横方向にデータを追加

 カラムの追加

解析するデータが地域コードや顧客コード
商品コードなどコード化されている場合や、
製品コードを元に品質データと行程履歴データを紐付たい場合は
横方向にカラムを追加する事で分析の幅が広がります。

0

例えば、店舗データに対してカテゴリコードしかない場合
別にカテゴリマスタがあれば、カテゴリコードをキーにして
カテゴリ名を追加することができます。

1

Spotfireで取り込みが可能なデータであれば選択可能ですので、
データベース+Excelのようなマスタ結合も可能です。

データベースのデータを元に、
手元のExcelでカテゴリ分けして、結果を見るような場合でも、
データをリロードする事で結果を何度でも確認できます。

操作方法

一つ目のデータを取り込んだ状態で
「挿入」→「カラム」を選択します。

2

「追加」ボタンを押してデータソースを選択します。
今回は「ファイル」から選択しています。

3

インポートの設定画面が表示されるので、型や取り込みカラムの設定をします。

4

キーの設定

キーカラムの設定をします。
「現行データから」と「新規データから」のペインから
対応するカラムを選択し、「選択したカラムの対応付け」をクリックすると
「対応付けられたカラム」にペアが移動します。
キーが複数ある場合は、上記操作を繰り返してください。

5

「すべての可能なカラムの対応付け」を選択すると
名前と型が同じデータが自動的に追加されます。

設定が完了したら「次へ」を押します。

カラムの挿入

どのカラムをインポートするか、どのように結合を設定するかを設定します。
追加するカラムにチェックを入れてください。
結合方法は「左外部」が基本ですが、追加するマスタテーブルに重複する場合は元データが増えてしまうので「左の単一対応」を選択してください。

6

設定完了後「完了」を押すとカラムが追加されます。

7

データの縦連結

データファイルを縦に連結する。

1

ログデータのような同じフォーマットで異なるファイル名で
出力されるファイルを連結して解析することができます。
2

操作方法

データを読み込んだ状態で、
「挿入」→「ロー」を選択します。
3

「ローの挿入メニューが表示されます。
「選択」ボタンを押して「ファイル」を選択します。
ここではファイル以外の入力方法も選べます。
4

対応カラムの設定

「カラムの対応付け」メニューが表示され、
どのカラムを連結対象にするか選択します

「現行データから」と「新規データから」のカラムを選択して「選択したカラムの対応付け」を押すと「対応付けられたカラム」欄に追加されます。

5
「すべての可能なカラムの対応」ボタンを選択すると
カラム名とデータ型が同じものは自動的に対応付けられます。

対応付けられたカラムは灰色で表示されますので、
全てのカラムが灰色になっていれば、問題なく対応付けされています。

6確認画面が表示されます。

追加データ側に対応するカラムがない場合は、空白で追加されます。
逆に、追加するデータの方がカラムが多い場合は、「新規データから追加のカラムを組み込む」にカラム名が表示されますので、取り込み選択可能です。

「挿入するデータローの情報を追加する」チェックボックスをONにすると、
どのファイルから追加されたのか、情報カラムを追加することができます。
ファイル内部に製品名や日付などのキー情報が含まれてない場合は、
こちらに追加可能です。7

テーブルリレーション

テーブルにリレーションをもたせる

テーブル間にリレーションをもたせる事により、

    • テーブル間でのドリルダウン
      フィルターの連動
      グラフ内での計算

を行うことができます。

データテーブルを追加するには「ファイル」→「データテーブルの追加」を選択します。

1

リレーション設定方法

データを取り込み後、テーブル間のキーの設定をします。
「編集」→「データテーブルのプロパティ」を選択します。

2

キーカラムが複数ある場合には、複数回設定してください。
これで設定が完了です。

3

リレーションが設定されると、データテーブルの色が同一色になります。

4

リレーションを設定することでどのような利点があるのか見ていきましょう。

マークの共通化

2つのテーブルを表示した場合、
マーク範囲と同じ条件の別のテーブルデータもマークされます。

5

これだけだと、さほどメリットを感じないのでドリルダウンを見ていきます。

テーブル間ドリルダウン

マークの共通化が設定できたので、ドリルダウンも可能になります。
一つのテーブルでマークして、右クリック「ビジュアライゼーションの詳細を作成」を選択すると、データテーブルの選択ができるようになります。

6

 

データテーブルの選択

7

これでテーブルからマークに連動して、
選択した条件で別テーブルよりデータが抽出表示されます。
マーク範囲を変えると、一方のデータテーブルも更新されます。

8

勿論テーブルだけでなく、別のグラフでも可能です。

下記の場合は棒グラフから棒グラフへのドリルダウンです。

9

こちらもグラフの形式が異なるだけで、設定されたキーに元にデータが表示されます。。

フィルターの共通化

リレーションをかけただけでは、フィルターの共通化はできていないので、
片方のデータに対してフィルターをかけても、別のテーブルには影響はありません。

テーブル間でフィルターを共通化するには
フィルター設定を変更します。

リレーションを設定するとフィルターパネルより
「関連するデータテーブルのフィルター」が選択できます。

10

今回の例だとBSテーブルのフィルターにPLテーブルを連動させたいので
PLテーブルのフィルター定義を設定します。

11

この設定により、BSテーブルでフィルターをかけると、
PLテーブルも連動するようになります。

逆にPLテーブルのフィルターにBSテーブルを連動したい場合は
BSテーブルのフィルターを設定してください。

グラフ上で別テーブルの値を使用する

「カラムの対応」機能により、グラフ上で複数テーブルの値が使用できるようになります。
データテーブルのプロパティ「リレーション」の隣にある「カラムの対応」タブで
対応付けられたカラムはグラフ上で同一なものとして扱われます。

ColCorr

カラムの対応を設定すると軸の選択の際に集計項目の上にデータテーブル選択の項目が表示され、
別テーブルのカラムが選択できます。

12

カスタム演算式で見ても、別テーブルのカラムが使用されている事がわかります。

13
勿論、データテーブル間での集計も可能です。

こちらはグラフの項目に対応付けられたカラムが使用されていることが条件になります。
それ以外のカラムは使用できないのでご注意ください。
ColCorrScat

例えば上記の散布図では「マーカーの基準」が「コード」に設定されています。
「コード」は対応付けられているので縦軸がPLテーブル、横軸がBSテーブルから集計できます。

複数データテーブルを扱う

複数データテーブル

Spotfireでは複数データソースを扱うこともできます。
新規のデータテーブルは「ファイル」→「データテーブルの追加」で追加することができ、
1
それぞれのグラフで、どのテーブルを使用するか選択することができます。
2

 

そのままでは、個別データテーブルとして扱われますので、
一つのグラフで両方のデータを使用することはできません。

複数テーブルのリレーション

複数データテーブルのデータをマージして扱うには2種類の方法があります。
1.複数データ間にリレーションをもたせる
2.複数データからマージしたテーブルを作成する。

1.では、別々に持っているデータテーブルの間に関連性をもたせる方式で
フィルターの連動や、グラフ内での計算、
データテーブルにまたがるドリルダウンが可能になります。

2.の方法では複数のデータソースから一つのデータテーブルを作成します。
マスタ付をする場合や、Data Relationshipsを実行するような場合はこちらが便利です。