見出し画像

20210901_連続出場回数は? #WOW2021 Week 34

もう9月。早いものでDATA Saber の課題をきっかけとしてこの note を書き始めてそろそろ1か月になります。(ギリギリでしたが師匠や皆さんのおかげで無事 DATA Saber としての一歩を踏み出すことができました。感謝。)その間にいくつか Workout Wednesday に取り組んできましたが、今回はその中でもかなり自分的には難しく、改めて基本的な理解が足りてないことを気づかされた良いワークアウトでした。

2021 Week 34: How Many Consecutive Starts?

アメリカンフットボールのクォーターバックのポジションの選手の連続出場回数をカウントするというのがお題です。他の選手が出場するとカウントが1に戻ります。

この課題では、特定のチームで1人の選手が「先発」クォーターバックとして認められた週数を連続して数えます。NFLのチームは、17週にわたって16試合を行います。各チームには1週間の休みが与えられます。
目標は、各チームでクォーターバックが「先発」する週を連続して数えることです。初めて出場した週は1、次の試合でも出場した場合は2となり、48週連続で出場した場合は48となります。別のクォーターバックが出場すると、そのチームの値は1にリセットされます。つまり、プレーヤーAが48連勝した後、プレーヤーBが2連勝し、その後プレーヤーAが復帰した場合、カウントは1に戻ります。
( DeepL で翻訳しました)

画像1

画像をクリックでWOWページに飛びます

これって Week 30 にあった、PREVIOUS_VALUE 関数を使ったものと同じなのでは?と思ったのですが、確かに似ているところは多いですがまた違った形で表計算の奥深さを学べる内容でした。

必要条件

1. ダッシュボードのサイズ - 1800 x 800 px
2. # シートの数 - 1
3. [Week]と[Year]のフィールドを組み合わせて、ユニークな週のIDを作成します。
4. [Team]を使用
5. チーム別に名前が表示されている連続した週数を1からカウントアップする
6. 新しい名前が表示された場合は、カウントを1から再開します。
7. 名前が変わるたびにカウントを再開します。
8. チーム別連続カウントの最後の値をヘッダーの一部として表示する
9. Match tooltips(これらを参考にしてください)
10. 試合の書式設定
ちょっとしたヒント:必要に応じて、またはお好みで、一部の要素に別のデータセットを使用することができます。 私はSuperstoreでこれを実現できましたが、工夫が必要です。

https://www.deepl.com/ja/translator で翻訳

選手の連続出場回数をカウントしていくという意味では内容の理解はしやすかったです。ただ最後の「ちょっとしたヒント」というのが最後までよく分かりませんでした。

今回の攻略ポイント1:ネストされた計算

今回のお題は WOW2021 Week 30 同様に再帰的な関数である PREVIOUS_VALUE を使ってもできるのですが、解答を紐解いていくと、このワークアウトの狙いは表計算における「ネストされた計算」「特定のディメンション」の指定をより理解するための練習なのではないかと思いました。なのでこの note では解答同様に PREVIOS_VALUE を使わない方法を説明しています。(私が上げた Tableau Public には PREVIOS_VALUE を使った内容も含まれているので気になる方はぜひそちらも確認ください) 

■ 入れ子構造の計算 = ネストされた計算

画像2

同じプレーヤーが出場した週を累計カウントする「3. Streak」は、
「2. Streak Start Week」「1. started again?」とが入れ子(ネスト)
の構造になっています。

計算フィールドが入れ子構造になっていること自体は、特段珍しいことでもないですが、今回のポイントは それらが全部「表計算」であること にあります。つまり、表計算の向きを意識してそれを正しく指定しなければならないということです。

■ 表計算の編集で「ネストされた計算」項目が出現

画像3

表計算が入れ子になることで通常見ない「ネストされた計算」という項目が出てきます。これは上記で示した入れ子になった計算フィールドの表計算の向きなどを個別に指定する設定項目となります。

これまでこの設定項目を認識したことがなかったため、今回ここに気づくのに非常に時間がかかりました。気づいてしまえば入れ子状態になったそれぞれに表計算の向きの指定が必要なのは理解できるのですが、取り組んでいる最中はさっぱりでした。

今回の攻略ポイント2:特定のディメンション

こちらも普段なんとなく表計算をつかっていたため、そんな項目あるなぁ程度で全く理解しないままでいたものでした。要求事項の3と4がまさにこの「特定のディメンション」を使わせるものでした。

3. [Week]と[Year]のフィールドを組み合わせて、ユニークな週のIDを作成します。
4. [Team]を使用

■ 特定のディメンション について
こちらのブログがとても分かりやすく「特定のディメンション」について解説されており、大変参考になりました。

特定のディメンションを使うことで表計算の「区分」と「方向」を柔軟に設定することができます。今回のケースだと [Year]と[Week]を組み合わせたものと、選手を「方向」として、Team が「区分」となります。

画像4

チェックなしがなぜ計算アシスタントでハイライトされるのか最初は全く謎でしたが、チェックなしが「区分」になると上記ブログで解説されていたのでそれを読んでようやくスッキリしました。

ちなみに、上記画像の「1. started again?」については、隣り合うチームにおいて 2006 Week1 と 2020 Week17 とが同じ Playerになる可能性がなければ(実際可能性としてほぼ無いはず)「特定のディメンション」を使わずに、表(下) でも問題ないと思います。

■ 特定のディメンションには序列がある
これも説明を受ければその通りだと理解できたのですが、よく理解しないまま触っていたため、思うように設定が反映されないと(本当は自分のせいなのですが)大混乱しました。

画像5

ドラッグで移動できたんかい!って感じでした。
ここは感覚をつかむにはもうちょっと修行を積む必要がありそうです。

今回つくったもの

縦に長いので一部イメージで。クリックすると Tableau Public に飛びます。
ぜひ、Tableau ワークブックファイルをダウンロードして中身を見ていただけると嬉しいです。

画像6

https://public.tableau.com/app/profile/shinjiro.fuchigami/viz/WOW2021Week34-HowManyConsecutiveStarts/WOW2021_W34

今回のふりかえり

ちょっと前に同じようなものをやったはずなのに、何をやっているか全然わからず、今回はギブアップしようかと途中思ってしまいました。
日を変えて何度も中身をみたり自分でトライアンドエラーを繰り返すうちに、感覚的にも少しづつ理解が追い付いてきたように思います。また何より分かったときはパズルが解けたような気分になって達成感がありました。

普段の仕事などでは深みにはまりすぎないよう適当なところで見切りをつけるのも大事だったりもしますが、Workout Wednesday については、これからも悩みながらも楽しんでいきたいなと思いました。


あ、もう水曜日…


ここまで読んでいただいた方、ありがとうございました!
もしよければ 「スキ」や フォローいただけると嬉しいです。

以上