🍊

TableauのWildcard Union機能はCSVファイルの列の順番とか新規列とかをどこまで冗長的に読み込んでくれるのかを試した

2024/07/03に公開

はじめに

こんにちは。弊社では別システムから出力されたCSVファイルなどをTableauに読み込ませる際にWildcard Union(ワイルドカードユニオン)機能を使っています。
このとき,よくファイルの列構成が変更されるため,Tableau側がどこまで冗長的に読み込んでくれるかが気になっていたので,調べてみました。

環境

  • Tableau Desktop v2024.1
  • MacBook Pro M1 Ventura 13.6

実験

CSVファイルを作る

3種作りました。基本,列はid,city,nameを持たせています。中身のデータはAIにランダムに出力してもらったので意味はありません。

  • オリジナルのtest1.csv
  • 列の順番を変えたtest2_changeorder.csv
  • 新規列を追加したtest3_anothercolumn.csv

Tableauで読み込むときに列名を自動補完させないTips

下記ブログ様を参考にしました。

https://blog.truestar.co.jp/tableau/20220105/49812/

Tableauでは,読み込んだデータソースの列名を自動で変換してくれる機能があります。この節ではそれを「避ける」ためのTipsを書いておきます。

方法

自分のPCでは以下のコマンドで起動しています。-DOverride=ExternalBrowserOAuth:offという部分は,Tableau Desktopから会社のSingle Sign-Onに接続するときに必要な設定でして,開いているブラウザ側でその認証を走らせないようにするためのものです。
重要なのは-DADM=0の部分です。これをつけない場合とつけた場合とで,データソース読み込み時の反応を見比べてみます。

open -a "/Applications/Tableau Desktop 2024.1.app" --args -DOverride=ExternalBrowserOAuth:off -DADM=0

デフォルトではこう読み込まれる

まず,-DADM=0をつけなかった場合。デフォルトですね。
元ファイルの列名はすべて小文字である一方で,単語の頭が大文字になっていることが分かります。他にも,アンダースコア_が半角空白になったりします。

元に戻すには,列を選択して「名前のリセット」を行なう必要があります。

変換のルールの詳細は,下の公式ドキュメントで参照ください。

https://help.tableau.com/current/pro/desktop/ja-jp/data_clean_adm.htm

列名をそのまま読み込ませる

そして,-DADM=0をつけて起動させた場合です。こちらでは元ファイルの列名が使われていることが分かります。

状況によって列名の自動変換が便利である場面もあるとは思うので,使い分けていきたいですね。

CSVファイルを読み込ませてみよう

話がそれましたが,本題です。3種類のCSVファイルを読み込ませてみましょう。

テキストファイルのフォルダを指定して,ユニオンの新規作成をキャンバスにドラッグアンドドロップすると,ワイルドカードユニオンの設定画面が出てきます。

親子フォルダの中身の扱い方や,ファイルの名前でフィルタリングしたい場合はここで指定します。
今回はとくに書くことはありません。

結果は次のとおりです。分かることを書いてみますと,

  • test2の列の順番を変えたファイルのデータも,きちんと同じcityname列に格納されている。
  • test3にのみ存在する新規列ageも組み込まれる。その列を持たない他ファイルの該当部分はNULLになる。

とくにTableauに出力するデータをファイル経由で連携していて,よく列構成が変更されてしまう場合は,これらの知見をもっていると,余計な作業をしなくて済みそうです。

おわりに

ずっと気になっていたことを確認できてよかったです。(感想)

Discussion