Skip to main content

data-catalog

Activates when querying Danish agricultural data from R2/cloud storage. Use this skill for: data discovery, finding datasets, understanding schemas, querying parquet files, joining datasets on CVR/CHR/BFE identifiers. Keywords: data, catalog, datasets, R2, GCS, parquet, schema, query, DuckDB, rclone

소스 정보

저장소
Klimabevaegelsen/landbruget.dk
최근 소스 활동
2026년 4월 6일 18:24
감지된 SKILL.md 언어
영어
스타
39
포크
15

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
6 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
data-catalog
description
Activates when querying Danish agricultural data from R2/cloud storage. Use this skill for: data discovery, finding datasets, understanding schemas, querying parquet files, joining datasets on CVR/CHR/BFE identifiers. Keywords: data, catalog, datasets, R2, GCS, parquet, schema, query, DuckDB, rclone
# Data Catalog - R2 Storage (landbruget-data) Data lake with 130+ datasets across bronze/silver/gold medallion layers in Cloudflare R2. ## Discovering Data **Use `rclone` to browse R2 — never use `gsutil` or `google.cloud.storage`.** ```bash # List top-level directories rclone lsd r2:landbruget-data/ # List datasets in a layer rclone lsd r2:landbruget-data/bronze/ rclone lsd r2:landbruget-data/silver/ rclone lsd r2:landbruget-data/gold/ # List snapshots (timestamped subdirectories) for a dataset rclone lsd r2:landbruget-data/silver/subsidies/ # List files in a snapshot rclone ls r2:landbruget-data/silver/subsidies/ # Find latest snapshot for a dataset rclone lsd r2:landbruget-data/gold/field_production_2024/ | tail -1 ``` **Important**: Some folder names contain spaces (e.g., `silver/animal welfare/`, `silver/work permits/`). Always quote paths when scripting. ## Reading Data with DuckDB DuckDB with R2 auth is the primary way to query data. Use `StorageAccess` from `backend/common/storage/core.py`: ```python from common.storage.core import StorageAccess storage = StorageAccess() # Read a parquet file into DuckDB storage.create_table_from_storage_parquet("my_table", "landbruget-data/silver/subsidies/20260401_020000/data.parquet") # Query it result = storage.execute_query("SELECT cvr_number, COUNT(*) FROM my_table GROUP BY cvr_number") ``` Or use DuckDB directly after auth setup: ```python import duckdb from common.storage.filesystem import setup_duckdb_cloud_auth conn = duckdb.connect() setup_duckdb_cloud_auth(conn) # Query directly from R2 result = conn.execute(""" SELECT cvr_number, SUM(area_ha) as total_area FROM read_parquet('r2://landbruget-data/gold/field_production_2024/*/data.parquet') GROUP BY cvr_number """).fetchdf() ``` ## Environment Variables ```bash # R2 credentials (required) R2_ACCESS_KEY_ID=<access-key> R2_SECRET_ACCESS_KEY=<secret-key> R2_ACCOUNT_ID=<account-id> # Bucket name (defaults to "landbruget-data") R2_BUCKET=landbruget-data # Or: STORAGE_BUCKET=landbruget-data ``` ## Medallion Architecture - `bronze/` — Raw data exactly as received (133 datasets) - `silver/` — Cleaned, validated, standardized (126 datasets) - `gold/` — Analysis-ready, joined datasets (86 datasets) ## Full Dataset Inventory ### Bronze (133 datasets) | Category | Datasets | |----------|----------| | **Fields** | `agricultural_blocks_{2020-2024}`, `agricultural_fields_{2020-2025}`, `fields` | | **FVM Marker** | `fvm_marker_{2008-2025}`, `fvm_marker_smaabiotoper_{2023-2025}` | | **FVM Markblokke** | `fvm_markblokke_{2005-2026}` | | **Organic** | `fvm_organic_areas_{2012-2024}`, `fvm_organic_subsidies_{2019-2024}` | | **Subsidies** | `subsidies`, `fvm_environmental_subsidies_{2019-2023}`, `fvm_grassland_subsidies_{2019-2024}` | | **Jordbrugsanalyser** | `jordbrugsanalyser_markers_{2012-2024}` | | **Cadastral/Geo** | `cadastral`, `dagi_kommuner`, `dagi_landsdele`, `dagi_postnumre`, `dagi_regioner`, `bbr_buildings` | | **Environment** | `bnbo_status`, `wetlands`, `soil_types`, `water_projects`, `water_typology_*` (3 datasets), `grukos_*` (2 datasets), `fertiliser` | | **Pesticides** | `pesticides`, `bmd`, `geus_dataverse_pesticides`, `kemidata_surface_water_pesticides` | | **Livestock** | `chr`, `animal_welfare`, `animal_mortality`, `animal_international_movements`, `pig_tail_cutting`, `slurry_leaks`, `stable_fires`, `transportation_accidents` | | **Companies** | `cvr_raw_companies`, `dst`, `dmi` | | **Workers** | `arbejdstilsynet_inspections`, `work_permits`, `worker_safety` | ### Silver (126 datasets) | Category | Datasets | |----------|----------| | **Fields** | `fvm_marker_{2008-2025}`, `fvm_markblokke_{2005-2026}`, `fvm_smaabiotoper_{2023-2025}`, `fields` | | **Organic** | `fvm_organic_areas_{2012-2023}`, `fvm_organic_subsidies_{2019-2024}` | | **Subsidies** | `subsidies`, `fvm_environmental_subsidies_{2019-2023}`, `fvm_grassland_subsidies_{2019-2024}` | | **Cadastral/Geo** | `cadastral`, `dagi_kommuner`, `dagi_landsdele`, `dagi_postnumre`, `dagi_regioner`, `bbr_buildings`, `dst_zone_mapping`, `dst_zone_mapping_reference` | | **Environment** | `bnbo_status`, `bnbo_status_dissolved`, `wetlands` (implied), `grukos`, `grukos_*_dissolved` (2), `water_projects`, `water_projects_dissolved`, `fertiliser` | | **Pesticides** | `pesticides`, `bmd`, `geus_dataverse_pesticides`, `geus_dataverse_pesticides_pfas` | | **Livestock** | `chr`, `svineflytning`, `animal welfare`, `animal mortality`, `animal international movements`, `pig tail cutting`, `slurry leaks`, `stable fires`, `transportation accidents` | | **Companies** | `cvr_companies`, `cvr_employment`, `cvr_persons`, `property_owners` | | **Workers** | `arbejdstilsynet_inspections`, `work permits`, `worker safety` | | **Legacy/Other** | `2016_*` (4 datasets), `gr {2015-2023}` (8 datasets), `fro_processed`, `gartn1_processed`, `halm1_processed`, `hst77_processed` | ### Gold (86 datasets) | Category | Datasets | |----------|----------| | **Field Production** | `field_production_{2008-2025}` (18 years) | | **Field Analysis** | `field_analysis_field_bnbo_intersections_{2024,2025}`, `field_analysis_field_bnbo_water_intersections_{2024,2025}`, `field_analysis_field_grukos_intersections_{2024,2025}`, `field_analysis_field_wetland_intersections_{2024,2025}`, `field_analysis_field_wetland_water_intersections_{2024,2025}`, `field_analysis_soil_intersections_{2024,2025}`, `field_analysis_water_projects_bnbo_intersections_{2024,2025}`, `field_analysis_water_projects_wetlands_intersections_{2024,2025}`, `field_analysis_wetland_water_coverage` | | **Environmental Analysis** | `field_environmental_analysis_fields_{2024,2025}`, `field_environmental_analysis_properties_{2024,2025}` | | **Pesticides** | `pesticide_disaggregation_{2010_2011 through 2023_2024}` (13 year-pairs), `pesticide_proximity_{2010_2011 through 2023_2024}` (13 year-pairs) | | **Pre-computed stages** | `stage0_bnbo_filtered_{2024,2025}`, `stage0_grukos_filtered_{2024,2025}`, `stage0_properties_filtered_{2024,2025}`, `stage0_soil_types_filtered_{2024,2025}`, `stage0_water_projects_filtered_{2024,2025}`, `stage0_wetlands_filtered_{2024,2025}` | | **Livestock** | `chr_timeline_summary`, `chr_veterinary_timeline` | | **Companies** | `cvr_enrichment`, `cvr_enrichment_collection`, `cvr_enrichment_companies`, `cvr_enrichment_financial`, `cvr_enrichment_financial_statements`, `cvr_enrichment_pnumbers` | | **Cadastral** | `property_cadastral_merged` | ### Other Top-Level - `api/` — API-related data - `cvr_collections/` — CVR collection data ## Key Identifiers | Identifier | Format | Description | Validation | |------------|--------|-------------|------------| | **CVR** | 8 digits | Company registration number | `^\d{8}$` | | **CHR** | 6 digits | Central Husbandry Register (herd ID) | `^\d{6}$` | | **BFE** | Variable | Cadastral parcel number | varies | | **field_id** | String | Field identifier from FVM | varies | | **field_uuid** | UUID | Unique field identifier | UUID format | ## Dataset Quick Reference ### Okonomi (Finance) | Dataset | Path | Rows | Key Columns | |---------|------|------|-------------| | Subsidies | `silver/subsidies/` | 554K | cvr_number, tilskudsberetigt | | CVR Enrichment | `gold/cvr_enrichment/` | varies | cvr_number, company data | | Property Owners | `silver/property_owners/` | 8.2M | CVRNummer, owner info | ### Landbrugsareal (Agricultural Land) | Dataset | Path | Rows | Key Columns | |---------|------|------|-------------| | FVM Marker (fields) | `silver/fvm_marker_{year}/` | 617K/year | field_id, cvr_number, crop_code, geometry | | Field Production | `gold/field_production_{year}/` | 617K/year | field_id, yield_estimate, crop_type | | Cadastral | `silver/cadastral/` | 2.16M | bfe_number, geometry | ### Miljo (Environment) | Dataset | Path | Rows | Key Columns | |---------|------|------|-------------| | Pesticide Disaggregation | `gold/pesticide_disaggregation_{year}/` | 1.52M | cvr_number, PesticideName, DosageQuantity | | BNBO Status | `silver/bnbo_status/` | 5.4K | geometry, status_bnbo | | Wetlands | `silver/wetlands/` (in bronze) | 1.7M | geometry, toerv_pct | ### Husdyr (Livestock) | Dataset | Path | Rows | Key Columns | |---------|------|------|-------------| | Svineflytning | `silver/svineflytning/` | 1.27M | sender_chr_number, receiver_chr_number, total_animals | | CHR Movements | `bronze/chr/` | 124K | reporting_herd_number, animal_count | | Animal Welfare | `silver/animal welfare/` | varies | chr_number | ### Medarbejdere (Employees) | Dataset | Path | Rows | Key Columns | |---------|------|------|-------------|
GitHub에서 보기
이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기