![見出し画像](https://assets.st-note.com/production/uploads/images/141128568/rectangle_large_type_2_a9c0fbb9f2e566dcc6ce402e2dfa4917.png?width=1200)
Tableau超初心者が「組み合わせ」について悩んだ話
📝Tableauで、自分がよく忘れるポイント、うっかりハマった点を備忘録として書いていきます。
利用するデータ・サンプルは、Tableauに付属している"スーパーストア"を利用しています。
はじめに
Tableau DATA Saberの学習を開始した直後に、「組み合わせ」をどう算出するかで悩みました。
実際の方法は、めっちゃくちゃ簡単で、
1)列か行に、ディメンションを複数入れる
2)計算式で、ディメンションを足し算する
1)であれば、組み合わせが全部表示されるので、その総数をチェックすれば良いです。
2)の場合は、計算式で作成したディメンションを、行か列に入れると1)と同じものが表示されるので、同様に総数をチェックするか、「メジャー」→「カウント(個別)」を指定することで、組み合わせの数として扱うことができます。
こんな簡単なのに、何を悩むの?と思われるかもしれません。いや、多分ほとんどの人がそう思うでしょう….
でも、私は、2)の足し算でなぜこうなるのか、が理解できずにいました。
数値データに対して計算式を適用できるのはわかるんですが、なぜ、数値以外のデータに計算式が適用できるのか?足し算があるなら、引き算・掛け算もあるの?それはなさそうだけど…
実際に、どういう挙動になっているから組み合わせになるのかがわからずにモヤモヤしておりました。
結論
ちょっと調べて、Tableauを操作してみると、サクッとわかりました。
計算式での足し算表記は、「文字列フィールドの結合」でした。
公式のナレッジベースにも、めちゃくちゃシンプルに書いています。
つまり、A、Bという2つのディメンション(文字列)があったときに、Aの文字列に対して、同じデータ(行)に含まれているBの文字列を全部結合している、という挙動でした。
その結果、"AとBの全てを組み合わせた文字列を生成している"、ということです。
そのため、これを個別カウントしたら、組み合わせ数が取れるよ、という理解に辿り着きました。
Hands Onの動画で説明されてたら恥ずかしいな…と思い、動画を見直しましたが、「文字列なので簡単に足すことができる」という説明でした。
"文字列なので"という説明で、足す=結合なんだな、と理解できそうなものですが、当時の自分はそこまで頭が回らなかった…
実際のデータで確認した結果
みんな大好きスーパーストアのデータを利用して確認します。
わかりやすく、カテゴリとサブカテゴリで、やってみます。
まず、Viz上で行にカテゴリとサブカテゴリを入れてみます。
![](https://assets.st-note.com/img/1702800003326-YMJKs8T8L4.png)
はい、普通に表示されます。
家具に属するものは、テーブル・椅子・家具・本棚があるんだよ、みたいな感じですね。
では、計算式で書いてみます。
![](https://assets.st-note.com/img/1702800100585-Iib3IbT77m.png)
これを、Vizに入れてみると…
![](https://assets.st-note.com/img/1702800136567-WIMm5K6iT7.png)
文字列結合されているのが、よくわかりました。
では、順番を変えて、サブカテゴリ・カテゴリを入れてみます。
![](https://assets.st-note.com/img/1702800300335-Z9F9ybGeT4.png)
当然、カテゴリ単位でまとめてくれません。最初に分割したのがより細かいサブカテゴリなので、まずそっちでデータを仕分けます。そのあと、カテゴリでさらに仕分ける…という感じですが、サブカテゴリはカテゴリに含まれるので、バリエーションは生まれません。ただただ、このサブカテゴリはこのカテゴリに属してるんだよ、っていう付加情報がつく形。
これだと、文字列結合とほぼ同じような結果ですね。
![](https://assets.st-note.com/img/1702800528795-z01XZoEP3e.png)
![](https://assets.st-note.com/img/1702800516038-dAUSE7uejr.png)
カテゴリ・サブカテゴリだと、包含関係になっちゃうので、別データでもやってみます。
サブカテゴリと顧客区分の場合。
Vizにディメンション入れると、当たり前のこんな結果に。
![](https://assets.st-note.com/img/1702801198710-h4oDj6ElLU.png)
計算式で足すと、こんな感じです。
![](https://assets.st-note.com/img/1702801273012-BvlYH78bQb.png)
本当に純粋な文字列結合。
計算式の足し算は文字列結合なので、当然、文字列以外のデータは扱えません。
数値データなら、STR関数で文字列に変換。
日付データの場合は、DATENAME関数で文字列に変換が必要です。
やってみます。
オーダー日をそのまま足してみると、案の定エラーになります。
![](https://assets.st-note.com/img/1702801396937-WIOoYVRw2j.png)
オーダー日を文字列変換する必要があるので、DATENAMEで変換します。
![](https://assets.st-note.com/img/1702801773473-0GkfABXDlK.png)
こんな感じで文字列結合されます。
![](https://assets.st-note.com/img/1702801793312-57EUnxa163.png)
ちなみに、地理的役割のデータは、そのまま文字列結合できました。
まとめ
計算式で文字列に対して足し算をすると、文字列が結合されます。
普通に考えて、そうだよな…って感じですよねw
超初心者で、こんなことに悩んだのが恥ずかしい….
この記事が気に入ったらサポートをしてみませんか?