Sagebase のデータは、Google Cloud の BigQuery Sharing(旧 Analytics Hub) を通じて提供しています。ご自身の BigQuery プロジェクトからそのまま SQL でクエリできます。
前提条件
| 項目 | 内容 |
|---|---|
| アカウント | Google アカウントでのログインが必要です。匿名(ログインなし)ではアクセスできません |
| プロジェクト | BigQuery API が有効な Google Cloud プロジェクト(無料枠で利用可能) |
| 費用 | 料金について を参照 |
提供している 2 つのデータセット
| listing 表示名 | 内容 | 更新 | 用途 |
|---|---|---|---|
sagebase_data | main 層。議会・会議・発言・政治家・議案・賛否などのテーブル群(データ構造) | 随時(新規議事録の処理後) | 発言検索、議案と賛否の集計、政治家マスタとの結合 |
sagebase_graph_data | graph 層。政治家・議案・会議などの ノード と、投票・所属・発言などの エッジ | 週次(毎週月曜) | 投票類似度、会派の合従連衡、審議経路などの関係性分析 |
BigQuery Graph が Preview のため、graph 層は別 listing で Preview 提供です。
ステップ 1:listing を検索する
- Google Cloud Console にログイン
- 左メニューから BigQuery → Sharing(Analytics Hub) を選択(直リンク)
- Search listings で「Sagebase」または「政治ベース」と検索
- 上の表の 2 つの listing が表示されます
ステップ 2:データセットを購読する
listing ごとに同じ操作です。両方使う場合は 2 回行います。
- listing の詳細ページで Subscribe(データセットに追加) をクリック
- データを追加する Google Cloud プロジェクトを選択
- リンクされたデータセットの名前を確認し 保存。既定の名前は listing 表示名と同じで、本ページのクエリ例もその名前を前提にしています。名前を変えた場合はクエリ中のデータセット名を読み替え、
your-projectはご自身のプロジェクト ID に置き換えてください
これで、ご自身のプロジェクト配下に Sagebase のデータセットがリンクされます。データはコピーされず、常に最新の内容を参照します。
ステップ 3:クエリを実行する
BigQuery コンソールの左ペインでリンクされたデータセットを開き、テーブルを選んで プレビュー するか、クエリ から SQL を実行します。
クエリ例 3 本の正本はこのページです。参照するテーブル名と列名はデータの定義と機械的に照合しています。
例 1:政治家の発言を検索する(main 層)
発言本文は conversations.comment にあります。発言者(speakers)から政治家マスタへの名寄せは speakers.politician_id で辿れます。conversations は最も大きなテーブル(パーティション無し)で、WHERE や LIMIT ではスキャン量は減りません。費用を抑えるには、読む列を必要なものに絞ってください。
-- 名前に「山田」を含む発言者の 2025 年以降の発言を、新しい会議から順に 100 件
SELECT
s.name AS speaker_name,
c.comment AS speech,
m.date AS meeting_date,
conf.name AS conference_name,
s.politician_id,
s.matching_confidence
FROM `your-project.sagebase_data.conversations` AS c
JOIN `your-project.sagebase_data.speakers` AS s ON c.speaker_id = s.id
JOIN `your-project.sagebase_data.minutes` AS mi ON c.minutes_id = mi.id
JOIN `your-project.sagebase_data.meetings` AS m ON mi.meeting_id = m.id
JOIN `your-project.sagebase_data.conferences` AS conf ON m.conference_id = conf.id
WHERE s.name LIKE '%山田%'
AND m.date >= '2025-01-01'
ORDER BY m.date DESC
LIMIT 100;
例 2:議案ごとの賛否を数える(main 層)
議員個人単位の賛否は proposal_judges にあります。approve 列の値は日本語の 賛成 / 反対 です(英語の enum は入っていません)。
-- 題名に「予算」を含む議案について、賛成・反対の人数を数える
SELECT
p.title,
p.voted_date,
pj.approve,
COUNT(*) AS politicians
FROM `your-project.sagebase_data.proposal_judges` AS pj
JOIN `your-project.sagebase_data.proposals` AS p ON pj.proposal_id = p.id
WHERE p.title LIKE '%予算%'
GROUP BY p.title, p.voted_date, pj.approve
ORDER BY p.voted_date DESC, p.title, pj.approve
LIMIT 100;
例 3:誰がどの議案に投票したか(graph 層)
edges_voted_on の source_sid が政治家、dest_sid が議案の sagebase_id を指します。
-- 題名に「予算」を含む議案への個人票を、政治家名つきで 100 件
SELECT
pol.name AS politician,
prop.title AS proposal,
e.approve,
e.voted_date,
e.source_type
FROM `your-project.sagebase_graph_data.edges_voted_on` AS e
JOIN `your-project.sagebase_graph_data.nodes_politician` AS pol ON e.source_sid = pol.sagebase_id
JOIN `your-project.sagebase_graph_data.nodes_proposal` AS prop ON e.dest_sid = prop.sagebase_id
WHERE prop.title LIKE '%予算%'
ORDER BY e.voted_date DESC
LIMIT 100;
さらに多くのクエリ(投票類似度、審議経路の追跡、as-of スナップショットなど)は sagebase-community の docs/graph-queries にあります。
品質列と sagebase_id の読み方
名寄せの品質列
発言者と政治家、議案提出者と政治家などの対応づけ(名寄せ)は自動処理を含むため、結果の確からしさを列で持っています。厳密さが必要な分析では、これらで絞り込んでください。
| 列 | ある主なテーブル | 意味 |
|---|---|---|
matching_confidence | speakers、proposal_submitters、proposal_vote_records、graph 層の名寄せ由来エッジ(edges_group_voted_on、edges_submitted、edges_presided など。edges_spoke_in は min_matching_confidence) | 名寄せの信頼度(0〜1)。自動処理の確信度です |
is_manually_verified | speakers、conversations、conference_members、parliamentary_group_memberships など | 人が確認済みなら true。確認済みの行は自動処理で上書きされません |
matching_funnel_stage | speakers | 名寄せがどの段階まで進んだか |
source_type | proposal_judges、edges_voted_on | 賛否の由来。ROLL_CALL(記名投票の直接記録)、GROUP_EXPANSION(会派賛否からの展開。推定値)、VOTE_RECORD_MATCH(都道府県議会の個人票を氏名で名寄せ。graph 層のみ) |
sagebase_id
main 層のテーブルには内部連番の id と、外部参照用の sagebase_id があります。
idはソース DB の連番で、データベースの再構築で変わることがあります。同じデータセット内の JOIN には使えますが、ブックマークや外部からの参照には向きませんsagebase_idはpol_のような 3 文字の接頭辞と 32 桁の 16 進数を_でつないだ 36 文字の文字列です。UUID ではなく、議会名や URL などの自然キーから決定的に計算されるため、再取り込みを行っても同じ実体には同じ値が付きます。例外としてproposal_vote_recordsとproposal_vote_parliamentary_groups、proposal_vote_politiciansは中間表のため接頭辞 + UUID 形式のままで、再取り込みで変わることがあります- 外部から Sagebase の行を指すときは
sagebase_idを保存してください。graph 層のテーブルはすべてsagebase_idで結合します - 発言(
conversations)のsagebase_idは「所属する議事録のsagebase_id+ 議事録内の順番」で決まります。議事録の分割方法が改良されると変わる可能性があるため、特定の発言を長期的に指したい場合は議事録のsagebase_idと発言の抜粋テキストを併せて保存することをおすすめします
料金について
- 購読: 無料
- クエリ実行: 購読者側のプロジェクトに BigQuery の通常料金が適用されます(毎月 1 TB のスキャンまで無料)
- 全列を読む
SELECT *は課金対象のスキャン量が増えます。必要な列だけを選び、LIMITだけでは費用が減らない点にご注意ください - 詳しくは BigQuery の料金ページ をご参照ください
引用の形式
Sagebase が付与した層(テーブル構造、名寄せ結果、グラフ、sagebase_id など)は CC BY 4.0 で提供しています。どのデータセットをいつ参照したかを添えてください。
一般社団法人政治ベース. Sagebase: 日本の政治議論データソース.
https://sage-base.com/ (CC BY 4.0). 参照日: YYYY-MM-DD.
参照した listing(sagebase_data / sagebase_graph_data)も添えると再現性が上がります。短い表記や加工して利用する場合の書き方、議事録の発言原文の扱いは利用規約をご覧ください。
お問い合わせ
データの誤りの報告や追加リクエストは sagebase-community の Issue へ、その他のご相談はお問い合わせページからご連絡ください。