アンケート集計ビュー
概要
Unity Catalog(カタログ cs / スキーマ cs_dm)上の集計済みビュー。アプリはこれらを読み取るだけで、書き込みは行わない。
テーブル定義
dm_vis_jreslso_tokyo23_comp_test(集計ビュー)
アプリが可視化に使う中心的なビュー。UI で選択できる他のテーブルも同じ列構成を前提にしている。
| 論理名 | 物理名 | カラム名 | データ型 | 主キー | リレーション | ユニーク | NULL許可 | デフォルト値 | 備考 |
|---|---|---|---|---|---|---|---|---|---|
| アンケート集計 | dm_vis_jreslso_tokyo23_comp_test | question_number | string | ◯ | 設問番号。表示ラベルとソートに使う | ||||
| question_type | string | ◯ | Text Select / Free Text。UI の表示分岐に使う |
||||||
| question | string | ◯ | 設問文。質問のグルーピングキー | ||||||
| choice_text | string | ◯ | 選択肢テキスト、または自由記述の回答 | ||||||
| sum_answer | bigint | ◯ | この選択肢の回答数 | ||||||
| total | bigint | ◯ | 設問の総回答数 | ||||||
| rate | double | ◯ | 回答比率(0〜1) | ||||||
| n | bigint | ◯ | ビューが公開する n 値 | ||||||
| is_comp | string | ◯ | 比較群ラベル。アプリは 'すべての有効回答' のみ取得する |
ut_dm_ana_jreslso_tokyo(回答者属性)
集計の元になる回答者属性テーブル。Pydantic モデルは生成済みだが、現状どの API からも参照されていない。
| 論理名 | 物理名 | カラム名 | データ型 | 主キー | リレーション | ユニーク | NULL許可 | デフォルト値 | 備考 |
|---|---|---|---|---|---|---|---|---|---|
| 回答者属性 | ut_dm_ana_jreslso_tokyo | user_no | string | ◯ | 回答者識別子 | ||||
| 性別 | string | ◯ | |||||||
| 年齢層 | string | ◯ | |||||||
| 婚姻状況 | string | ◯ | |||||||
| 居住地域 | string | ◯ | |||||||
| スマホ利用サービス | string | ◯ | |||||||
| 家族構成 | string | ◯ | |||||||
| 職業 | string | ◯ | |||||||
| 企業形態 | string | ◯ | |||||||
| 業務端末環境 | string | ◯ |
リレーション
- ビュー同士に外部キー制約はない。
ut_dm_ana_jreslso_tokyoは集計ビューの元データという論理的な関係にとどまる。
インデックス
- 未整備 — Unity Catalog のビューのため、アプリ側で管理するインデックスはない。SQL Warehouse 側の最適化に依存する。
注記
- 主キーは定義されていない。1 行は「設問 × 選択肢 × 比較群」の組で一意になる想定。
- 上記の列定義は
backend/models/dm_vis_jreslso_tokyo23_comp_test.pyとbackend/models/ut_dm_ana_jreslso_tokyo.py(backend/generate_models_from_databricks.pyによる自動生成)から起こしたもの。正確な型と NULL 制約は Unity Catalog を確認すること。 - API のレスポンス行モデル
QuestionDataRowはextra="allow"のため、テーブル固有の追加列はそのままフロントエンドへ渡る。 - 集計値の取得クエリは常に
is_comp = 'すべての有効回答'で絞られる(backend/sql/table_data.py)。 - モデルを再生成する場合は
python backend/generate_models_from_databricks.py --catalog cs --schema cs_dm --tables <table>を実行する。ただしこのスクリプトはbackend/models/__init__.pyを生成モデルだけで上書きするため、実行後にapi/data_sqlの import を手で戻す必要がある。