[Tableau Desktop] データソースのカラム名と .twb ファイルについて
自宅警備員のおたいがです。こんにちは。( 挨拶 )
Tableau Desktop で選択 ( 接続 ) したデータソースのカラム名は、任意のカラムを右クリック→『名前の変更』を選択…またはダブルクリックすることで編集することができます。
カラム名改名後の .twb ファイルの変化
カラム名を改名すると .twb ファイルの <datasource> 要素内 <colmun> 要素に caption 属性が追加されます。( <colmun> 要素がない場合は新規に追加されます ) シートで該当カラムを使用している場合は <worksheet> 要素内 <colmun> 要素にも caption 属性が追加されます。また、<datasource> 要素に <aliases enabled='yes' /> 要素が追加されます。
以下の .twb は、『 Sample - superstore 』の [Orders] テーブルの [Order ID] を [オーダー ID] とリネームしたときの主な diff です。
<workbook> … <datasources> <datasource inline='true' name='Sample - Superstore' version='10.2'> <aliases enabled='yes' /> <column caption='オーダー ID' datatype='string' name='[Order ID]' role='dimension' type='nominal' /> … </datasource> … </datasources> <worksheets> <worksheet name='シート 1'> <table> <view> … <datasource-dependencies datasource='Sample - Superstore'> <column caption='オーダー ID' datatype='string' name='[Order ID]' role='dimension' type='nominal' /> </datasource-dependencies> </view> </table> </worksheet> … </worksheets> </workbook>
ここで注目したいのが
<column caption='オーダー ID' datatype='string' name='[Order ID]' role='dimension' type='nominal' />
です。
name 属性がデータソースのオリジナルのカラム名 ( 物理名 ) で、caption 属性が改名後のカラム名 ( 論理名 ) と覚えておくと良さそうです。
リレーションが作成されている場合
Tableau Desktop では、テーブルを結合したときに、データソース上の 2 つ目以降の同名のカラム名は『<カラム名> (<テーブル名>)』と自動的に変更されます。
『 Sample - superstore 』の [Orders] テーブルと [Returns] テーブルを結合すると、[Returns] テーブルの [Order ID] は [Order ID (Returns)] と変更されます。さらに、このカラム名を修正すると…
<column caption='任意のなまえ' datatype='string' name='[Order ID (Returns)]' role='dimension' type='nominal' />
…といった具合に置換されますが、name 属性は Tableau Desktop が自動的に改名したカラム名になっています。
カラム名を一括置換したいんですが…
冒頭で説明した通り、カラム名を改名するには、Tableau Desktop 上で一つ一つ編集を施す以外に手段はありません。ですが、できれば一括で置換したい…そんな問題を解決するプログラムを自作する場合…
- カラム名の物理名と論理名のマッピング情報が必要
( できればマッピング情報を無視してデータソースのフィールドの並び順に置換したい… ) - リレーションを作成している場合は、テーブル名も必要
…といったことが考えられます。実際に組むことを考えると骨が折れそうですが、単一のテーブルでデータソースを構築した場合限定…といった条件に絞れば、カラム名一括置換することはさほど難しくなさそうです。
Tableau Desktop にこういった機能が実装されると嬉しいんですが…とお祈りしておきます。
2017 年 5 月 29 日追記
作りました。