【Tableau Tips】データインタープリターと名前の定義
なぜか2行目から始まる表、結合されたセル…ビジュアルアナリティクスには数多の壁があります。それらの壁をどうにかしてくれる便利機能がデータインタープリターです。
データインタープリターとは
Tableau DesktopとTableau Prepについている、そのままでは読み取りづらい微妙なExcelファイルを分析できるよういい感じにしてくれる入力オプションです。詳しくはヘルプを参照ください。
Excel、CSV、PDF、および Google スプレッドシートからのデータ インタープリターを使用するデータのクリーニング - Tableau
例えば左のデータをそのまま読み込むと、右のようにタイトル行が間違ったり、結合セルがNULLまみれになってしまいます。
これがワンクリックで分析できる形になります。便利ですね。
1シートに複数表入っている場合
これでは簡単すぎるので、少し意地悪な表を用意しました。1シートに複数表を入れないでほしいですね。すると親切にも、ここに複数の表が入っていませんか?と表のありそうな範囲を提示してくれました。
実際のファイルと見比べて、表の範囲が間違っている場合は手修正することもできます。
上記はTableau Desktop限定なのですが、Prep Builderにもつけて!というIdea(機能要望)があります。ぜひ投票を!
Excelの「名前の定義」と組み合わせる
とはいっても、読み込みたいセル範囲が定期的に変わってしまうときがあります。そんなときはExcelの「名前の定義」を使います。
Excelの「名前の定義」でセルの範囲に名前を付ける:Tech TIPS - @IT
Excelでは指定した範囲に名前をつけておくことができ、データインタープリターは定義した名前の範囲を読み込めるため、Tableau Desktop、Prep Builder側で範囲を指定する必要がなくなります。
また、この定義した範囲内に行列を挿入した場合、それらも範囲の対象になります。下に右などに項目を追加した場合は、範囲には入らないため注意しましょう。
定義した範囲を動的に変化させられるか?
名前の定義はをオフセットして動的に動かすこともできるため、例えば以下のようにNo.9以下を足してもNo.15までを表の範囲として認識させることができます。しかし、これはデータインタープリターでは読み取り対象にはなりませんでした。オフセット関数は使わず、通常通り範囲を定義しましょう。
=OFFSET(Sheet1!$B$3, 0, 0, COUNT(Sheet1!$B:$B)+1 ,4)
*B3セルを基準にして、B列にデータがあれば4行を対象に範囲を広げる。
ワークシートに動的に定義された範囲を作成する - Office | Microsoft Learn
まとめ
読み取りづらいExcelの処理方法は他にも様々ありますが、定型化したデータはまずデータインタープリターを試してみるのも一案です。
また、複数シートやファイルをまとめて読み込む場合は、シート構造が異なっていないか確認してから使うことをおすすめします。たまに最初の1シートしか読み込めてない…なんてこともありますので、Vizを作り始める前にデータのモレがないかチェックしておきましょう。
【Tableau Tips】いつでも作れる会計年度
Tableauを仕事用に使っていると、ほしい会計年度がうまく出てこないことがあります。毎回検算用Vizを作るのはつらいので、色々試した結果を残しておきます。
Tableau Desktopの「年度開始月」設定機能
そもそもTableau Desktopには年度始まりを設定する機能があります。対象の日付を右クリック > 規定のプロパティ > 会計年度の開始 で指定できます。
それでええやん、と思うじゃないですか。そうでもないのです。
- 想定した年度より大きい
例えば年度始まりを4月にすると、2022年4月は2023年度になります。日本では2022年度と表示されてほしいところですが、Tableauは米国基準の会計年度を表示します。米国基準だと締めの月(=2023年3月)を基準に年度表示されるため、1つ大きい数字が出てくるんですね。
- Tableau Cloud/ServerのWeb編集では設定できない(2023年1月時点)
この機能はTableau Desktopのみで使用できます。Tableau CloudやServerのWeb編集を中心に使う方やExplorerユーザの方だと、別の方法で年度を表示する必要があります。
1大きいなら1引けばいいじゃない
もし「会計年度の開始」を設定できた場合は、こちらのKB(KnowledgeBase)が役に立ちます。出てきた年度から1を引いてしまえばいいのです。
会計年度が予想より大きい | Tableau Software
うるう年を考慮する
これで解決…と思いきや、そうはいきません。そう、うるう年です。上記のKBでは対象の日付から1年引きますが、うるう日から1年引くと存在しない日付が発生してしまいます。
- 2020年2月29日から1を引く
- 2019年2月29日は存在しない
- 2019年2月28日に丸められる
日付単位で数値を表示したい場合、2020年2月28,29日のデータがまとめて2020年2月28日に丸められるため、この方法はそのまま使えません。逆に日付単位では見せない、月単位でいい場合は気にしなくて済む可能性があります。
どこでも使える会計年度計算フィールド(4月始まり)
では「会計年度の開始」が利用できず、日単位の分析もあってうるう年も気にする人はどのように会計年度を表現すればよいのでしょうか。そんなときはほしい日付を計算フィールドで作っておいて、階層化します。
- 年度
//月が3以下なら年から1引く
IF MONTH([オーダー日])<=3
THEN YEAR([オーダー日])-1
ELSE YEAR([オーダー日])
END
- 上期下期
IF MONTH([オーダー日])<=9 AND MONTH([オーダー日])>3
THEN "上期"
ELSE "下期"
END
- 四半期
IF MONTH([オーダー日])<=3 THEN 4
ELSEIF MONTH([オーダー日])<=6 THEN 1
ELSEIF MONTH([オーダー日])<=9 THEN 2
ELSE 3
END
- 月
MONTH([オーダー日])
できあがったら元にした日付(ここではオーダー日)を使って、検算しておきましょう。
まとめ
Tableau Desktopがなくても、Explorerユーザでも、計算フィールドだけでできる会計年度計算でした。
会計年度の設定自体は便利なのですが、いつでも使える計算フィールドが手元にあると安心です。
人生スキルツリーを書く
以下にも書きましたが、時間だけがたくさんあります。一生ゲームして毎日9時間寝ていたい…とはいえ放ってはおけないレイオフの恐怖。でも楽しいから一生ゲームしていたい…
人生がゲームになればいいのでは?
と思うわけです。なぜゲームは楽しいのか。ワクワクするシナリオに、場面を盛り上げるBGM、善悪を超えた選択肢、寄り道、周回要素、PvP、アチーブメント…etc。個人的には本筋に関係のない寄り道が好きで、オープンワールドだと特に気がついたらスキルポイントとお金が貯まっているタイプです。
とはいえ人生はゲームと同じようにはいきません。日々取り返しのつかない要素を考慮しつつ、安全志向で日銭を稼いでいく必要があります。
より人生に近いゲームを遊ぶ
そんなとき、しみじみと楽しめるゲームを見つけました。Kenshiです。出自に合わせた場所からフィールドに放り出されるオープンワールドゲームで、最初は貧弱なので野犬や野盗にボコボコにされます。失血が多いと数日は動けないし、下手すると手足を欠損します。
そこで、序盤は街の外に転がっている死体を担いで、筋力やスピードを上げていきます。これで野盗にも追いつかれません。万が一襲われたら街の守衛に倒してもらい、落とした装備を店に売ります。あとは街の中に家を買ったり、人を雇ったりして、好きに生活できるようになっていきます。
十分に死体担ぎをしたか
ここで現実世界に話を戻すと、死体担ぎを十分やっていないな、と思うことが多々あります。フィールドを歩くのが遅い、持てる持ち物が少ないとか、最低限のことで今更困るやつです。知識が足りず詰められて凹んだり、調べ物に時間がかかったり、細かいところでロスが積み重なっているため、ここを解消する必要があります。
じゃあ現代の死体担ぎは何かというと基本知識の積み重ねです。資格をとっても意味がないとはよく言われますが、いくつかが紐づくとすぐに引き出せて人に話せます。簡単なことに挑戦するのは恥ずかしい?自分に最低限必要だとわかっていれば、他人のレベルを気にすることもありません。
スキルツリーを動的に変える
基礎知識の習得にためらいがなくなったら、スキルツリーを作っていきます。どの順番でいつどれを習得するってやつです。私は最近までやむを得ずオンプレ向けのスキル強化をしていましたが、界隈の急なクラウドシフトで組んでたツリーが微妙になりました。
そういえば、最近PoEを少しプレイする機会があったのですが、広大なスキルツリーから目指すビルドに最適なステータスを選び、実現できる装備を集めてエンドコンテンツに挑むのが楽しいゲームです。にもかかわらず、Quaterぐらいの頻度でリーグがリセットされるので、ビルドを再考する機会が訪れます。それごとにコンテンツの改廃や調整も行われます。
現実世界ではリーグのリセットがないので、今あるスキルをもとにツリーを改良するゲームになります。共通言語的なスキルを取らないのは危ないし、かといって技術に秀でた人と同じビルドはステータス制限で組めない可能性すらあります。
そんなこともあり、後戻りのできないPoEだな〜と思いながら年間計画を立てています。
技術以外のスキルを活用する
そんなわけで、私に他者と戦える技術スキルはほぼないため、単体では微妙なスキルを組み合わせて内部でアピールする作戦をとっています。私の場合はコールセンター仕込みの「聞きやすい声質」「少ない練習ですぐ喋れる」という単体で扱いづらいスキルがあります。SRPGによくいる加入時は微妙なユニットです。
例えばこれを外部講演やユーザー会、デモ録画などの形で内部にアピールし、イベント補助もできるだけ手を上げて瞬発力を高めます。多少技術力に難ありでも、これでイベントに呼んでもらって経験値を積めばよいのです。
ここに相手の問いを掘り下げるとか、気の利いたアイスブレイク、国内企業文化への理解が加われば喋れるSEっぽくなってくるはずです。
どのゲームを人生に採用するか
そういう意味で、好みのゲームシステムをもとに自分を構築していくのも面白いかもしれません。偶然に複数のスキルが噛み合うローグライクタイプや、ある程度方向性のあるジョブ選択型か…あなたの人生はどんなゲームシステムですか?
今さら統計検定3級を取った
きっかけ
年末年始やることがなかったので…
という本音はさておき、長年データや数字、ビジュアライズに関わる仕事をしておきながら、実は統計を履修していませんでした。本は買ったけど記号のビジュアルでウェってなって何度か投げています。
教科書で体系的に勉強するのは大変なのでまず問題集を買いました。良くない癖です。
申し込み
申し込みフェーズが地味に大変。アカウントを作るなどしなければならず、年末に都合のよい会場の空きを調べて結局1/7に申し込みました。
過去問を解く
過去問においては、表とグラフが読めれば8割前後取れます。65%の合格点は余裕です。
問題は冒頭にある新傾向の例題です。2021年の過去問に若干その要素があるものの、似たような問題の経験値があまり積めません。
本番は電卓ありといえど60分30問なので、時間のかかる計算問題は捨てていきます。
なお試験当日やっと過去問を1周できたので、間違えたところだけあと2周しました。あとは「統計検定3級 チートシート」でググった結果を眺めながら現地へ向かいます。
テストを受ける
試験形式はCBTなので、会場のPCでポチポチするやつです。自前の計算機と、配られた紙とペンが使えました。
以前他の試験でラミネート加工された用紙とぶっといペンを使うのがありましたが、今回は普通の紙で安心しました。会場やテストで違うのかな?
そんなこんなで1時間ギリギリまで奮闘しているとその場で結果が出ます。待ち時間がないので心臓に優しいですね。
結果
ほぼ過去問と同じような点数で合格。
というか仕事内容的に落ちたら退職レベル…なので、また時間を作って2級に挑戦したいです。
30代めっちゃ暇
新居への入居が完了して今年から思いのほか暇になりました。転職決まって新居申し込みまでが2ヶ月弱、新しい仕事を始めて入居まで1年と少しを過ごし、気がついたら次の目標がなくなっていました。
人生から降りると暇
友人や同僚に子供が生まれ育児に取り組む30代に突入しつつも、すっかり一般的な人生からドロップアウトし、ほぼ余生を送っています。
猫2匹と人間を養いながらも、食事は朝昼完全栄養食、夕食その他家事は家族にお任せ。腹が弱いため食べるのも億劫になりました。
SEワークは基本リモートで、対面の打ち合わせもほぼないので多くて週1回くらい出社ついでに通院や買い物を済ませます。管理職ルートからも全降りして、個人商店と会社員のいいとこ取りみたいになっています。
仕事が終わればゲームしても猫と遊んでもいいし、毎日8時間寝られます。新居のローンも家賃とほぼ変わらないし、むしろ防音断熱つきかつ24時間ゴミ出し可能で超快適。
30代ともなれば忙しくなるかと思っていたら、不要なことを削り切って存外暇になっていました。
目標:現状維持の難しさ
ではこの暇な時間を何に使うかというと現状維持です。猫と昼寝がしたい。
とはいえレイオフされる危険はあるし、物価も上がるし、今の生活を維持するには職にあぶれずぼちぼち収入を上げる必要があります。
しかも次々新製品や新技術が出てきて、現状維持しようと思ったらそこそこのキャッチアップが必要です。そして隣を見ると情報系修士卒の若者や導入に詳しいSIer出身者、純粋に技術が好きで昼夜手を動かしている人がゴロゴロいます。
そう考えると、凡人にとっては現状維持だけでも意外と大変な感じがしてきます。
やること
しかし今の私には膨大な暇があります。それだけで何とかなりそうな気がしてきますね。
- 学習負債を返す
まずは残業や出張、家庭事情で積み上がった20代の学習負債を、資格取得等々で返すことにしました。
資格を取っても意味ないと言われることが多いですが、基礎知識がないと知らない言葉が多くて効率が悪くなりがちです。一言で済むことを聞き返したり調べたりすると何倍も時間がかかります。そういう非効率を避ける意味で、最低限取っておく意図です。同人誌を出すときと同じく期限を切りやすいので、自分への強制力もあります。
- できるだけ多くの世界観を摂取する
老いのひとつなのか、以前に比べると今期アニメを追ったり新作ゲームを遊んだりするのも労力を要する感があります。これを放っておいたら一気に老いそうな気がひしひしとします。
ご飯ついでにアニメを見るとか、アプリで漫画一気読みするとか、フォロワーさんおすすめのゲームをSteamセールで買ってみるとか、時間的に無理のない範囲でやっていきたいですね。
- 何か書く
ほぼ隠居生活をしていると、基本的に人と話すことがありません。話さなくて良いのは楽ですが、会話の瞬発力が下がる上に人と話すのに使用すべき話題が何か分からなくなります。家事しないし、家出ないし…
せめて自分が把握している範囲は書いて整理して、スムーズに出せるようにしておきたいものです。諸々のTipsが書かないまま1年半溜まっており、いざ聞かれたときに作り直すのを今日やりました…
健康な余生のために
あまりにも平和なのでつい9時前にお布団に入ってしまいがちですが、動かなさすぎて動けなくなりそうなので何とかしたいです。
いっそ外に出ないことで防疫に寄与していると言いたいのですが、運動しろとよく言われるのでそれもつらいです。
早く動かない生活がスタンダードになってほしいなあ…