Data Centers Database — 反対の記録がある案件は、中止・保留の割合が3.5倍

今週のお題
今週のデータは、全米のデータセンター施設・建設計画を集めたデータベースでした。1件1施設で 1,621件、48州 をカバーしています。列は45あり、所在地・事業者・電力容量(MW)・冷却方式に加えて、住民の反対運動がどう記録されているか(resistance_status)という列が含まれているのが特徴です。
案件のステータス(status)の内訳は次のとおりです。
| status | 件数 | 構成比 |
|---|---|---|
| Proposed(提案中) | 740 | 45.7% |
| Operating(稼働中) | 530 | 32.7% |
| Approved/Permitted/Under construction | 159 | 9.8% |
| Cancelled(中止) | 66 | 4.1% |
| Suspended(保留) | 62 | 3.8% |
| Expanding(拡張中) | 60 | 3.7% |
| Pre-proposal | 4 | 0.2% |
半分近くがまだ「提案中」で、稼働にたどり着いているのは3分の1という段階です。州別ではバージニア州が460件で突出し、テキサス州206件、ジョージア州180件、ペンシルベニア州106件と続きます。電力容量は記載のある521件だけで合計209,658MWに達します。
一方、resistance_status(反対運動の記録)は次のように大きく偏っています。
| resistance_status | 件数 | 構成比 |
|---|---|---|
| Unknown / 未記録 | 1,533 | 94.6% |
| Organized Advocacy(組織的な反対活動) | 65 | 4.0% |
| Emerging Concern(懸念が生じつつある) | 23 | 1.4% |
94.6%が「未記録」です。この列を見たときに引っかかったのが、反対の記録がある案件と、記録がない案件とでは、その後の結末が違うのか? という点でした。今回のダッシュボードはこの一問だけで組み立てています。
作成したダッシュボード
Data Centers & Community Resistance(Tableau Public)
反対運動の記録レベルを3行に並べ、行ごとに 左=中止・保留の割合/中央=ステータス構成比/右=稼働中の割合 を配置しました。背景には全米地図を敷いています。
結果は次のとおりです。
| 反対運動の記録 | 件数 | 中止・保留 | 稼働中 | 提案中 |
|---|---|---|---|---|
| Organized Advocacy | 65 | 24.6% | 3.1% | 46.2% |
| Emerging Concern | 23 | 17.4% | 8.7% | 69.6% |
| Unknown / 未記録 | 1,533 | 7.0% | 34.3% | 45.3% |
組織的な反対活動が記録されている案件は、中止・保留の割合が24.6%。未記録の7.0%と比べると 約3.5倍 です。稼働中の割合で見ると逆で、3.1%対34.3%と10倍以上の開きがあります。
ただし、この差は「反対運動が計画を止めた」ことを示すものではありません。理由は後述します。
工夫した点・こだわり
1. 中央から左右に開く配置にした
「中止・保留」と「稼働中」は、同じ案件の対になる結末です。これを縦に積んだ表で並べると、読み手は上下に視線を往復させて差を計算することになります。そこで中央にステータス構成比の帯を置き、そこから左に「中止・保留」、右に「稼働中」が伸びる形にしました。1行を左右に見渡すだけで、上の行ほど左に長く、下の行ほど右に長い、という関係が読み取れます。
2. 行の並び順を「反対の強さ」にした
上から Organized Advocacy → Emerging Concern → Unknown の順です。この順に中止・保留率が24.6% → 17.4% → 7.0%と下がり、稼働率が3.1% → 8.7% → 34.3%と上がります。並べ替えただけで単調な傾きが出るため、注釈を足さなくても関係が目に入ります。
3. 「Unknown」を捨てずに1カテゴリとして扱った
94.6%を占める未記録を除外すると、残るのは88件だけになり、比較そのものが成立しません。未記録は「データが無い」のであって「反対が無い」わけでもないので、独立した1行として残しました。
4. 「関連であって因果ではない」と画面に書いた
ダッシュボード下部に注記を置いています。
Unknown or unrecorded resistance status does not indicate the absence of community resistance. Results show an association between recorded resistance status and project status, not causation.
この一文を入れた理由は次のセクションに書きます。
5. 背景に暗い地図を敷いた
全米のどこの話なのかという文脈を、余計な情報を足さずに伝えるためです。地図は背面に沈めて、前面の数値の読み取りを邪魔しないようにしています。
使ったTableauの技術・Tips
欠損を1カテゴリに寄せる
resistance_status は空欄が多いため、そのままでは NULL として脇に置かれてしまいます。
c.Resistance State = IFNULL([resistance_status], "Unknown")
IFNULL で明示的に “Unknown” というカテゴリにしておくことで、行ラベルとして扱えるようになります。「欠損は欠損として数える」ことを、集計より前の段階で決めておくのが要点です。
条件付きカウントで比率を作る
「中止または保留の割合」は、IIF で対象だけを残して COUNT する形にしました。
c.Cancelled_Suspended(%) =
COUNT(IIF([status] IN ("Cancelled","Suspended"), [id], NULL))
/ [c.total_num]
IIF の偽値を NULL にしておくと COUNT が数えないので、フィルターを掛けずに分子だけを絞れます。全体を残したまま部分の比率を出したいときに使える形です。稼働中の割合も同じ作りです。
c.Oparation(%) = COUNT(IIF([status] IN ("Operating"), [id], NULL)) / [c.total_num]
分母は TOTAL() で取る
c.num = COUNT([id])
c.total_num = TOTAL([c.num])
TOTAL() は表計算なので、ビューの区画(この場合は反対運動の記録レベルごと)に対する合計を返します。分母をデータソース側の固定値ではなく表計算で取ることで、フィルターを掛けたときに分母も一緒に動きます。中央の構成比の帯は、合計に対する割合(percent of total)の表計算で描いています。
符号を反転して左右に開く
左右に開くレイアウトは、片方の計算フィールドにマイナスを付けた別フィールドを作り、列に並べて実現しています。
-c.Operating(%) = -[c.Cancelled_Suspended(%)(コピー)]
軸の向きを反転させるのではなく値そのものを負にしているので、同じ列棚の中で左右に伸ばせます。
円と棒を1枚に混在させる
シート内のマークは Circle と Bar が混在しています。ロリポップの「棒+先端の円」と、中央の積み上げ棒を、1枚のビューの中で描き分けている形です。
色は1つの意味にだけ使う
色は status(Operating / Cancelled / Suspended など)だけに割り当て、行ラベルや数値ラベルには色を使っていません。visualanalysisbestpractices_jp.pdf の「1つのビューで使用する色と形状の数を制限」の節にも、色や形状が多すぎると「逆効果になります」「見分けのつきやすい色の種類が限られているため、複数の(対象)が同じ色または似たような色で表示されて」しまう、と書かれています。今回は赤系=止まった案件、青系=動いている案件、という2方向だけに絞りました。
「相関は関係を保証しない」を画面に書く根拠
注記を入れたのは、同じ資料に次の一節があるためです。
相関性は必ずしも関係性を保証するものではありません。相関性は関係性の可能性を示唆するくらいの意味合いと捉えてください。関係性が確かに存在すると立証するには、より洗練された手法が必要になることがあります。 (
visualanalysisbestpractices_jp.pdf「相関性」の節)
今回のデータには、反対が起きたから止まった のか、止まった(=計画が表に出て揉めた)から反対が記録された のかを判別する材料がありません。加えて、記録そのものが調査の網の掛かった案件に偏っている可能性もあります。実際、提案中(Proposed)740件のうち反対が記録されているのは46件(6.2%)にとどまります。数字が強く出るときほど、読み手が因果として受け取らないよう、画面の側で線を引いておく必要があると考えました。
学び・振り返り
欠損の扱いが、この回のいちばんの判断でした。 94.6%が未記録というデータで「記録あり」だけを見ると、母数88件の話になってしまいます。かといって未記録を「反対なし」と読み替えれば、それは事実ではありません。未記録を未記録のまま1カテゴリとして並べ、注記で意味を限定する、という形に落ち着きました。
計算フィールドの名前は後から直すべきでした。 左右反転に使ったフィールドは -c.Operating(%) という名前ですが、中身は中止・保留のコピーを負にしたものです。作っている最中に列の配置を変えた名残で、名前と中身がずれたまま残っています。公開版の見た目には影響しませんが、数か月後の自分が読んだら確実に誤解します。次回は、計算フィールドを複製した時点で名前を付け直すところまでを1セットにします。
強い数字が出たときほど、書かないことを決める作業が要ります。 24.6%対7.0%という差はそのまま見出しにできる大きさですが、このデータで言えるのは「関連がある」までです。ダッシュボードの見出しも Show Higher Cancellation and Suspension Rates(〜の割合が高い)にとどめ、「止めた」「効果があった」といった動詞は使いませんでした。
Tableau Public プロフィール: https://public.tableau.com/app/profile/tamaball38175/vizzes
⚠️ 注記: この記事はAIを活用して生成されています。内容に誤りが含まれる可能性があります。技術的な詳細については公式ドキュメントも合わせてご確認ください。
