[Tableau Desktop] データソースのカラム名と .twb ファイルについて

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

自宅警備員のおたいがです。こんにちは。( 挨拶 )

Tableau Desktop で選択 ( 接続 ) したデータソースのカラム名は、任意のカラムを右クリック→『名前の変更』を選択…またはダブルクリックすることで編集することができます。

[170522]tableau_001

[170522]tableau_002

カラム名改名後の .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 つ目以降の同名のカラム名は『<カラム名> (<テーブル名>)』と自動的に変更されます。

[170522]tableau_003

『 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 日追記

作りました。

[Tableau Desktop] データソースのカラム名を一括置換するアプリを作った