実は、AlteryxはExcelファイルで作り込んだようなフォーマット化された表を自力で出力するのはあまり得意とするところではありません。そもそもヘッダが二行になった時点でデフォルトのテーブルツールではもう手出しが出なくなります。そのため、通常はExcelであらかじめテンプレートを作っておき、そこに書き込むというのが常套手段となっています(古いバージョンだとフォーマットを崩さずに書き込みができませんでした)。
しかしながら、なんとかAlteryxだけでやりたい、という要望もあるかと思いますので、今回は少しチャレンジしていきたいと思います。
まず、今回は2行ヘッダとセル結合をやってみましょう(ヘッダが2行あって、上段のみセル結合というパターンが多いかと思いますので、それを再現します)。
こんなものを作りたい
作りたいのは以下のような表のヘッダ部分です。
ポイントは、1行目が「Category」「Sales」「Profit」と三列分しかないのに、実際は6列あることでしょうか。さらに、2行目は6列ばっちり入っています。つまり、A列とB列、C列とD列、E列とF列をそれぞれ結合セルにしている、ということになります。
そもそも2段のヘッダってどうやるの?
2段ヘッダを再現する
2段ヘッダはテーブルツール単独ではできません。2つのテーブルツールを組み合わせます。
1.ヘッダ用データの準備
まず、ヘッダ用のデータを用意します。
ヘッダ部分ではなく、データ部分にヘッダ用データを準備します。
2.テーブルツールを追加
ここにテーブルツールをそれぞれ接続します。
それぞれのテーブルツールは、「列見出しを表示する」のオプションのチェックを外します。これで不要なヘッダが表示されなくなります。
つまり、それぞれ以下のように表示されます。
3.ユニオンツールで結合
これらのテーブルをユニオンツールで結合します。
これ、1段目、2段目、と順番が関係あるので、出力順序オプションをオンにして、1段目のデータが先に到着するように設定を変更します。先に接続した方から#1、#2と番号がつき、通常その順番にデータが到着しますが、順序をしっかり抑えたいときは特定の出力順序を設定するオプションにチェックを入れます(このオプションを使うと、ユニオンツールに一度データが溜まるため実はパフォーマンスは低下します。このデータを一時的にためるツールを「ブロッキングツール」と呼んでいます)。
この時点では以下のような出力になります。
よく見るとまったく縦が揃ってないですよね・・・。
4.レイアウトツールを追加
次に、縦軸を揃えるためにレイアウトツールで一つのヘッダとして作り込みたいと思います。
レイアウトツールの設定は以下のとおりです。
ポイントは、「レイアウトモード」と「レイアウト設定」の「方向」です。
レイアウトモードは「レコードの各グループ」もしくは「結合されたすべてのレコード」を選択します。これにより各レコードに別れていたものが、一つのレコード内に結合されます。
また、レイアウト設定の「方向」を「テーブルの列を整列するための内容の垂直統合」にします。これがポイントです。これにより、テーブルのセル位置がピタッとあいます。
ここで、Alteryx側で綺麗に等間隔に合わせてくれています。つまり、2行目の2つごとに1行目の項目が1つずつ配置されています。
レンダリングツールでExcelに出力してみると、以下のようにAB、CD、EFは結合セルとなっています。
あとは、テーブルツール内でそれぞれデザイン的にいじっていけば、それなりのものができてきます。
注意点
ヘッダが奇数のとき
この方法は、ヘッダの数と位置がポイントになります。今回、6項目あって、2項目ずつセットでした。しかし、以下のように、最初にカテゴリのみの列があり、その後SalesとProfitがそれぞれ2列ずつあるような場合はどうなるのでしょうか?
同じように作ると、以下のようにズレます。
このような場合は、ダミーの列を入れておけばとりあえず回避できます。
以下のようにズレは回避できていますが、変な列が一列挿入されてしまいます。
うまくいかないとき
面倒ですが、小分けにすることで成功確率はあがるかと思います。例えば今回であれば、1セット目として、「1段目:Categoryと2段目:Category、Sub-Category」でまず作成。次に、2セット目として「1段目:Salesと2段目のPlan、Actual」で作成。3セット目として、「1段目:Profitと2段目のPlan、Actual」で作成。最後に横に連結します。
縦の結合セルは?
縦の結合セルはできません!空白セルなどで対処するしか無いです。
サンプルワークフローダウンロード
次回
次回はデータ行の加工をしてみたいと思います。今回セルの幅についても言及できていませんが、次回やってみたいと思います。
コメント