Sagebase のデータは、Google Cloud の BigQuery Sharing(旧 Analytics Hub) を通じて提供しています。ご自身の BigQuery プロジェクトからそのまま SQL でクエリできます。


前提条件

項目内容
アカウントGoogle アカウントでのログインが必要です。匿名(ログインなし)ではアクセスできません
プロジェクトBigQuery API が有効な Google Cloud プロジェクト(無料枠で利用可能)
費用料金について を参照

提供している 2 つのデータセット

listing 表示名内容更新用途
sagebase_datamain 層。議会・会議・発言・政治家・議案・賛否などのテーブル群(データ構造)随時(新規議事録の処理後)発言検索、議案と賛否の集計、政治家マスタとの結合
sagebase_graph_datagraph 層。政治家・議案・会議などの ノード と、投票・所属・発言などの エッジ週次(毎週月曜)投票類似度、会派の合従連衡、審議経路などの関係性分析

BigQuery Graph が Preview のため、graph 層は別 listing で Preview 提供です。


ステップ 1:listing を検索する

  1. Google Cloud Console にログイン
  2. 左メニューから BigQuery → Sharing(Analytics Hub) を選択(直リンク)
  3. Search listings で「Sagebase」または「政治ベース」と検索
  4. 上の表の 2 つの listing が表示されます

ステップ 2:データセットを購読する

listing ごとに同じ操作です。両方使う場合は 2 回行います。

  1. listing の詳細ページで Subscribe(データセットに追加) をクリック
  2. データを追加する Google Cloud プロジェクトを選択
  3. リンクされたデータセットの名前を確認し 保存。既定の名前は 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_confidencespeakers、proposal_submitters、proposal_vote_records、graph 層の名寄せ由来エッジ(edges_group_voted_on、edges_submitted、edges_presided など。edges_spoke_in は min_matching_confidence)名寄せの信頼度(0〜1)。自動処理の確信度です
is_manually_verifiedspeakers、conversations、conference_members、parliamentary_group_memberships など人が確認済みなら true。確認済みの行は自動処理で上書きされません
matching_funnel_stagespeakers名寄せがどの段階まで進んだか
source_typeproposal_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 へ、その他のご相談はお問い合わせページからご連絡ください。