Skip to content

funtuan/g0vcongressthon-data-etl

Repository files navigation

政府預算資料 ETL v2

將政府預算資料遷移至 Supabase 並完全公開的工具。

目標

  • 保留完整完全相同的資料結構
  • 建立 Supabase 資料表
  • 完全公開預算資料,訪客可存取

資料來源

本專案處理以下 8 個 CSV 檔案:

中央政府總預算紀錄

  • 中央政府總預算紀錄 - 工作計劃.csvcentral_work_plans
  • 中央政府總預算紀錄 - 業務計劃.csvcentral_business_plans
  • 中央政府總預算紀錄 - 歲入子目列表.csvcentral_revenue_subcategories
  • 中央政府總預算紀錄 - 歲入細目列表.csvcentral_revenue_details

地方預算資料

  • 地方預算資料 - 工作計劃.csvlocal_work_plans
  • 地方預算資料 - 業務計劃.csvlocal_business_plans
  • 地方預算資料 - 歲入子目.csvlocal_revenue_subcategories
  • 地方預算資料 - 歲入細目.csvlocal_revenue_details

快速開始

1. 設定 Supabase

  1. 在 Supabase 中建立新專案
  2. 執行 supabase_schema.sql 建立資料表結構
  3. 執行 supabase_rls.sql 設定公開存取權限

2. 建立虛擬環境並安裝依賴

# 建立虛擬環境
python3 -m venv venv

# 啟動虛擬環境
source venv/bin/activate

# 安裝依賴套件
pip install -r requirements.txt

3. 設定環境變數

複製環境變數範例檔案:

cp .env.example .env

編輯 .env 檔案,填入你的 Supabase 設定:

SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_ROLE_KEY=your_service_role_key

4. 執行資料遷移

# 確保虛擬環境已啟動
source venv/bin/activate

# 執行遷移腳本
python migrate_data.py

檔案說明

SQL 腳本

  • supabase_schema.sql - 建立所有資料表和索引
  • supabase_rls.sql - 設定 Row Level Security 為完全公開

Python 腳本

  • migrate_data.py - 主要遷移工具
  • requirements.txt - Python 依賴套件

設定檔案

  • .env.example - 環境變數範例
  • .env - 實際環境變數(不會提交到版本控制)

資料表結構

所有資料表都包含以下共同欄位:

  • id - 自動遞增主鍵
  • created_at - 建立時間
  • updated_at - 更新時間

其餘欄位完全對應原始 CSV 檔案的欄位名稱,保持資料結構完整性。

存取權限

資料設定為完全公開:

  • ✅ 任何人都可以讀取所有預算資料
  • ❌ 只有 service_role 可以寫入/修改資料
  • 🌐 支援匿名存取和已認證使用者存取

API 使用範例

JavaScript (瀏覽器)

import { createClient } from '@supabase/supabase-js'

const supabase = createClient(
  'https://your-project.supabase.co',
  'your-anon-key' // 使用 anon key,不需要 service role key
)

// 查詢中央政府工作計劃
const { data, error } = await supabase
  .from('central_work_plans')
  .select('*')
  .eq('年', 114)
  .limit(10)

REST API

# 查詢地方預算資料
curl "https://your-project.supabase.co/rest/v1/local_business_plans?年=eq.114&limit=10" \
  -H "apikey: your-anon-key"

資料統計

執行遷移後,預期的資料筆數:

  • central_work_plans: ~35,320 筆
  • central_business_plans: ~30,962 筆
  • central_revenue_subcategories: ~33,151 筆
  • central_revenue_details: ~49,286 筆
  • local_work_plans: ~23,869 筆
  • local_business_plans: ~19,812 筆
  • local_revenue_subcategories: ~30,398 筆
  • local_revenue_details: ~43,486 筆

常見問題

Q: 如何重新匯入資料?

A: 直接執行 python migrate_data.py,腳本會自動清空舊資料並重新匯入。

Q: 如何查詢特定年度的資料?

A: 所有資料表都有 欄位,可以用來篩選特定年度。

Q: 資料更新頻率?

A: 此工具主要用於一次性遷移,如需定期更新,可以設定排程執行遷移腳本。

Q: 虛擬環境相關問題

A:

  • 啟動虛擬環境: source venv/bin/activate
  • 退出虛擬環境: deactivate
  • 重新建立虛擬環境: 刪除 venv 目錄後重新執行 python3 -m venv venv
  • 檢查虛擬環境是否已啟動: 終端提示符前會顯示 (venv)

授權

本專案為開源專案,歡迎貢獻和使用。政府預算資料為公開資料。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages