「クロスタブ時にヘッダに含まれる特殊文字がアンダーバーに置換される問題」について、対応策を整理してみました。SaaSからデータをJSONで持ってきたりすると、どうしてもヘッダ内の特殊文字が避けられないことが多く、一般化できそうな対応策を考えてみた次第です。
クロスタブ前データのサンプル
汎用性のある手法
①ヘッダの固有値を取り出して、一意の番号を振る(集計+レコードID or タイル+集計)
②元データのヘッダを、①で生成した一意の番号に書き換える(検索置換)
③番号をヘッダにしてクロスタブ後、動的リネームでヘッダ書き換え
最初に思いついたけれど、不具合が発生する場合があり没にした手法
①「元のヘッダー名」vs 「アンダーバー強制変換後のヘッダー名」の対応表を作る(正規表現で\Wにマッチする文字を_に変換)
②クロスタブ後、動的リネームで書き換え
問題点
「元のヘッダー名」vs 「アンダーバー強制変換後のヘッダー名」が1対1に対応しない場合、意図しない結果になる。
(例: A A と A_A というヘッダ名は強制変換後はともに A_A になってしまう)
A_Aの後ろに勝手に番号が振られてしまう(名前がバッティングしてるから)
所感
これ専用のマクロとかもあるようですが、共有する際にマクロ含めたyxzp化するのもめんどくさいので、こんな感じでちょろちょろっと直しちゃうのが楽な気がします。
他に汎用性のある手法をご存じでしたら、教えてください!
解決済! 解決策の投稿を見る。
@gawa さん
おそらく一番最初の汎用性のある方法、が一番かと思います。私も改めて考えてみましたが、ほぼ同様の方法になりました(違いは、検索置換ツールではなく結合ツールを使っただけで、ほぼ違いありません)。
返信ありがとうございます。
@AkimasaKajitani さんにそう言っていただけると、現状これが最適解と確信がもてました。
あまりブロッキングツールが増えるのは好きではないのですが、これは仕様としてあきらめるしかないですね~。