Canadian climate anomaly intelligence (monthly)
Monthly temperature and precipitation anomalies versus 1981-2010 climate normals for a curated panel of long-record Canadian climate stations, from ECCC's keyless MSC GeoMet OGC API (climate-monthly collection). Each row is one (station, month): mean/min/max temperature, the official normal, the temperature anomaly in C, total precipitation, its normal, the precipitation anomaly in %, snowfall, heating/cooling degree days, warm/cold/wet/dry extreme-month flags, station-record warmest/coldest flags, and a documented 0-100 extreme_score (0.50 |temp anomaly| + 0.30 |precip anomaly| + 0.20 station-record flag) ranked per month with a top-10 most-extreme flag. Station-months below the 25-valid-day coverage gate are dropped, never interpolated. Units: degrees C; mm; %. Caveats: station-identifier based (retired identifiers end, never spliced); ECCC revises history so re-ingests can legitimately differ; normals reference 1981-2010. ECCC Data Services End-use Licence v2.1.1 — commercial_use = yes, attribution required. Primary key: (as_of, station_id, local_date). Cadence: monthly.
- Rows
- 64,942
- Columns
- 34
- Source cadence
- Monthly
- Last refreshed
- Sep 27, 2026
- Theme
- environment
| Column | Type | Description |
|---|---|---|
| as_of | string | Reference month: the last complete calendar month (YYYY-MM). Fixed per run so identical input produces an identical content hash. (unit: month) |
| station_id | string | ECCC climate identifier (e.g. 6158875). Station-identifier based: retired identifiers end, never spliced. (unit: id) |
| station_name | string | Station name. |
| province_code | string | Canadian province/territory code (e.g. ON, QC, BC). |
| lat | float | Station latitude (WGS84). (unit: degrees) |
| lon | float | Station longitude (WGS84). (unit: degrees) |
| country_code | string | ISO alpha-3 country code; constant 'CAN'. |
| local_date | string | The month the row covers (YYYY-MM, station local time). (unit: month) |
| year | integer | Calendar year. (unit: year) |
| month | integer | Calendar month (1-12). (unit: month) |
| mean_temp_c | float | Monthly mean temperature (ECCC monthly summary). (unit: degrees C) |
| normal_mean_temp_c | float | 1981-2010 climate normal mean temperature for the month. (unit: degrees C) |
| temp_anomaly_c | float | Temperature anomaly vs the 1981-2010 normal (mean minus normal). (unit: degrees C) |
| min_temp_c | float | Monthly minimum temperature. (unit: degrees C) |
| max_temp_c | float | Monthly maximum temperature. (unit: degrees C) |
| total_precip_mm | float | Monthly total precipitation (null when the precipitation coverage gate fails). (unit: mm) |
| normal_precip_mm | float | 1981-2010 climate normal total precipitation for the month. (unit: mm) |
| precip_anomaly_pct | float | Precipitation anomaly vs the normal, in % (null when the normal is missing/zero or the precipitation coverage gate fails). (unit: percent) |
| total_snowfall_cm | float | Monthly total snowfall. (unit: cm) |
| heating_degree_days | float | Monthly heating degree days (base 18 C, ECCC convention). (unit: degree days) |
| cooling_degree_days | float | Monthly cooling degree days (base 18 C, ECCC convention). (unit: degree days) |
| days_with_valid_mean_temp | integer | Days with valid mean temperature in the month (>= 25 required by the coverage gate). (unit: days) |
| days_with_valid_precip | integer | Days with valid precipitation in the month (>= 25 required for precipitation-derived fields). (unit: days) |
| warm_month | boolean | True when temp_anomaly_c >= +2 C. |
| cold_month | boolean | True when temp_anomaly_c <= -2 C. |
| wet_month | boolean | True when precip_anomaly_pct >= +50 %. |
| dry_month | boolean | True when precip_anomaly_pct <= -50 %. |
| is_record_warm | boolean | True when this is the station's warmest temperature anomaly in its own history window. |
| is_record_cold | boolean | True when this is the station's coldest temperature anomaly in its own history window. |
| extreme_score | float | Documented 0-100 climate-extreme score: 100 * (0.50 * clip(|temp_anomaly_c| / 4, 0, 1) + 0.30 * clip(|precip_anomaly_pct| / 100, 0, 1) + 0.20 * record_flag) — absolute across months and snapshots. (unit: score) |
| extreme_rank | integer | Extreme rank within the month (1 = most extreme; ties broken by |temp_anomaly_c| desc, station_id asc). (unit: rank) |
| is_top10 | boolean | True for the 10 most extreme station-months per month. |
| source_url | string | The exact GeoMet OGC API items URL queried for this run. (unit: URL) |
| row_hash | string | SHA-256 (16 hex chars) over the row's content fields; identical input yields an identical hash. (unit: hash) |
First 10 sample rows — a preview, not the complete dataset.
| as_of | station_id | station_name | province_code | lat | lon | country_code | local_date | year | month | mean_temp_c | normal_mean_temp_c | temp_anomaly_c | min_temp_c | max_temp_c | total_precip_mm | normal_precip_mm | precip_anomaly_pct | total_snowfall_cm | heating_degree_days | cooling_degree_days | days_with_valid_mean_temp | days_with_valid_precip | warm_month | cold_month | wet_month | dry_month | is_record_warm | is_record_cold | extreme_score | extreme_rank | is_top10 | source_url | row_hash |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-08 | 1015105 | METCHOSIN | BC | 48.374 | -123.561 | CAN | 1911-11 | 1,911 | 11 | 4.533 | — | — | -4.4 | 13.3 | 182 | 213.04 | -14.57 | 0 | 404 | 0 | 30 | 30 | false | false | false | false | false | false | 4.37 | 3 | true | https://api.weather.gc.ca/collections/climate-monthly/items?f=json&limit=2000&CLIMATE_IDENTIFIER=8501900 | 8acf48ac1a2984be |
| 2026-08 | 1015105 | METCHOSIN | BC | 48.374 | -123.561 | CAN | 1915-08 | 1,915 | 8 | 17.71 | — | — | 7.8 | 31.1 | 0.3 | 24.83 | -98.79 | 0 | 26.7 | 17.7 | 31 | 31 | false | false | false | true | false | false | 29.64 | 4 | true | https://api.weather.gc.ca/collections/climate-monthly/items?f=json&limit=2000&CLIMATE_IDENTIFIER=8501900 | 03eb26015ccce197 |
| 2026-08 | 1015105 | METCHOSIN | BC | 48.374 | -123.561 | CAN | 1915-09 | 1,915 | 9 | 12.883 | — | — | 3.3 | 21.7 | 10.7 | 32.59 | -67.17 | 0 | 153.5 | 0 | 30 | 30 | false | false | false | true | false | false | 20.15 | 4 | true | https://api.weather.gc.ca/collections/climate-monthly/items?f=json&limit=2000&CLIMATE_IDENTIFIER=8501900 | 72f6d905ae8f5690 |
| 2026-08 | 1015105 | METCHOSIN | BC | 48.374 | -123.561 | CAN | 1915-10 | 1,915 | 10 | 10.423 | — | — | 3.3 | 17.2 | 140.9 | 112.76 | 24.96 | 0 | 234.9 | 0 | 31 | 31 | false | false | false | false | false | false | 7.49 | 7 | true | https://api.weather.gc.ca/collections/climate-monthly/items?f=json&limit=2000&CLIMATE_IDENTIFIER=8501900 | d6c9421b2afd5352 |
| 2026-08 | 1015105 | METCHOSIN | BC | 48.374 | -123.561 | CAN | 1915-11 | 1,915 | 11 | 5.527 | — | — | -1.1 | 12.2 | 172 | 213.04 | -19.26 | 0 | 374.2 | 0 | 30 | 30 | false | false | false | false | false | false | 5.78 | 7 | true | https://api.weather.gc.ca/collections/climate-monthly/items?f=json&limit=2000&CLIMATE_IDENTIFIER=8501900 | 545502cb112b8a1a |
| 2026-08 | 1015105 | METCHOSIN | BC | 48.374 | -123.561 | CAN | 1915-12 | 1,915 | 12 | 4.848 | — | — | -4.4 | 12.2 | 188.2 | 146.78 | 28.22 | 1.3 | 407.7 | 0 | 31 | 31 | false | false | false | false | false | false | 8.47 | 4 | true | https://api.weather.gc.ca/collections/climate-monthly/items?f=json&limit=2000&CLIMATE_IDENTIFIER=8501900 | eac865de2a1d35a3 |
| 2026-08 | 1015105 | METCHOSIN | BC | 48.374 | -123.561 | CAN | 1916-01 | 1,916 | 1 | -2.241 | — | — | -10.6 | 8.9 | 130.4 | 168.1 | -22.43 | 92.3 | 587 | 0 | 29 | 31 | false | false | false | false | false | false | 6.73 | 7 | true | https://api.weather.gc.ca/collections/climate-monthly/items?f=json&limit=2000&CLIMATE_IDENTIFIER=8501900 | c5eaded4e716ee3d |
| 2026-08 | 1015105 | METCHOSIN | BC | 48.374 | -123.561 | CAN | 1916-02 | 1,916 | 2 | 3.379 | — | — | -6.7 | 15 | 163.7 | 107.48 | 52.31 | 111.7 | 424 | 0 | 29 | 29 | false | false | true | false | false | false | 15.69 | 7 | true | https://api.weather.gc.ca/collections/climate-monthly/items?f=json&limit=2000&CLIMATE_IDENTIFIER=8501900 | 6cf617b82a520392 |
| 2026-08 | 1015105 | METCHOSIN | BC | 48.374 | -123.561 | CAN | 1916-03 | 1,916 | 3 | 5.352 | — | — | -1.7 | 11.7 | 181 | 89.17 | 102.98 | 0 | 392.1 | 0 | 31 | 31 | false | false | true | false | false | false | 30 | 5 | true | https://api.weather.gc.ca/collections/climate-monthly/items?f=json&limit=2000&CLIMATE_IDENTIFIER=8501900 | 319a8308fdb2405f |
| 2026-08 | 1015105 | METCHOSIN | BC | 48.374 | -123.561 | CAN | 1916-04 | 1,916 | 4 | 8.313 | — | — | 1.1 | 15.6 | 32.4 | 59.8 | -45.82 | 0 | 290.6 | 0 | 30 | 30 | false | false | false | false | false | false | 13.75 | 7 | true | https://api.weather.gc.ca/collections/climate-monthly/items?f=json&limit=2000&CLIMATE_IDENTIFIER=8501900 | 5413428b05a5fd51 |
Profiled Sep 27, 2026 from snapshot 20260927T025305Z-46c8ce7cf4ad
Measured- Completeness
- 99.8%
- Rows
- 64,942
- Columns
- 34
- Columns with gaps
- 5
| Column | Missing | Distinct | Range | Distribution |
|---|---|---|---|---|
| as_ofvarchar | 0% | 1 | — |
|
| station_idvarchar | 0% | 81 | — |
|
| station_namevarchar | 0% | 80 | — |
|
| province_codevarchar | 0% | 9 | — |
|
| latdouble | 0% | 127 | 42.04 → 55.69median 49.72 | 1,140 outside 1st–99th percentile |
| londouble | 0% | 122 | -133.06 → -53.9median -112.1 | 510 outside 1st–99th percentile |
| country_codevarchar | 0% | 1 | — |
|
| local_datevarchar | 0% | 1,500 | — |
|
| yearbigint | 0% | 159 | 1,888 → 2,026median 1,991 | 1,098 outside 1st–99th percentile |
| monthbigint | 0% | 13 | 1 → 12median 6 | |
| mean_temp_cdouble | 0% | 23,812 | -31.41 → 25.87median 7.12 | 1,300 outside 1st–99th percentile |
| normal_mean_temp_cdouble | 0.69% | 986 | -18.86 → 22.54median 6.85 | 1,231 outside 1st–99th percentile |
| temp_anomaly_cdouble | 0.69% | 10,225 | -20.69 → 11.9median -0.047 | 1,290 outside 1st–99th percentile |
| min_temp_cdouble | 0% | 654 | -52 → 17median -3 | 1,139 outside 1st–99th percentile |
| max_temp_cdouble | 0% | 485 | -18.9 → 45.5median 19.4 | 1,248 outside 1st–99th percentile |
| total_precip_mmdouble | 0.6% | 5,098 | 0 → 1,588median 71.2 | 1,288 outside 1st–99th percentile |
| normal_precip_mmdouble | 0% | 1,125 | 8.55 → 677.75median 80.57 | 1,214 outside 1st–99th percentile |
| precip_anomaly_pctdouble | 0.9% | 18,776 | -100 → 752.03median -8.97 | 1,283 outside 1st–99th percentile |
| total_snowfall_cmdouble | 4.7% | 1,953 | 0 → 383.8median 0 | 618 outside 1st–99th percentile |
| heating_degree_daysdouble | 0% | 11,205 | 0 → 1,532median 327.3 | 1,299 outside 1st–99th percentile |
| cooling_degree_daysdouble | 0% | 1,592 | 0 → 244median 0 | 647 outside 1st–99th percentile |
| days_with_valid_mean_tempbigint | 0% | 7 | 25 → 31median 31 | 486 outside 1st–99th percentile |
| days_with_valid_precipbigint | 0% | 30 | 0 → 31median 31 | 587 outside 1st–99th percentile |
| warm_monthboolean | 0% | 2 | — |
|
| cold_monthboolean | 0% | 2 | — |
|
| wet_monthboolean | 0% | 2 | — |
|
| dry_monthboolean | 0% | 2 | — |
|
| is_record_warmboolean | 0% | 2 | — |
|
| is_record_coldboolean | 0% | 2 | — |
|
| extreme_scoredouble | 0% | 6,221 | 0 → 100median 26.31 | 1,298 outside 1st–99th percentile |
| extreme_rankbigint | 0% | 92 | 1 → 91median 31 | 436 outside 1st–99th percentile |
| is_top10boolean | 0% | 2 | — |
|
| source_urlvarchar | 0% | 1 | — |
|
| row_hashvarchar | 0% | 61,643 | — |
|
- Current
20260927T025305Z-46c8ce7cf4ad · sha256 46c8ce7cf4ad…
64,942 rows · first snapshot
Point any LLM at the metadata endpoint — the documentation above is machine-readable too (JSON-LD + Croissant).
curl "https://datazimuts.com/v1/datasets/eccc_climate_intel/ca_climate_anomaly_monthly" | jq '{title, rows, columns_count, license}'import requests
ds = requests.get("https://datazimuts.com/v1/datasets/eccc_climate_intel/ca_climate_anomaly_monthly").json()
print(ds["title"], ds["rows"], "rows")
# Sample rows for an LLM context window
for row in ds.get("sample_rows", [])[:5]:
print(row)API endpoint: https://datazimuts.com/v1/datasets/eccc_climate_intel/ca_climate_anomaly_monthly
Tip: fetch /llms.txt for the full machine-readable catalog.
Where this data comes from and what was made from it. Other people's work shows as counts; only shared projects are named.
Cite this snapshot
Pinned to snapshot 20260927T025305Z-46c8ce7cf4ad and its content hash, so readers get exactly the data you used.
Canadian Climate Anomaly Intelligence. (2026). Canadian climate anomaly intelligence (monthly) [Data set, snapshot 20260927T025305Z-46c8ce7cf4ad, sha256 46c8ce7cf4ad]. Datazimuts. Retrieved 2026-09-27, from https://datazimuts.com/en/datasets/eccc_climate_intel/ca_climate_anomaly_monthly?snapshot=20260927T025305Z-46c8ce7cf4ad
@misc{dz_eccc_climate_intel_ca_climate_anomaly_mo_46c8ce7c,
title = {{Canadian climate anomaly intelligence (monthly)}},
author = {{Canadian Climate Anomaly Intelligence}},
year = {2026},
publisher = {Datazimuts},
howpublished = {\url{https://datazimuts.com/en/datasets/eccc_climate_intel/ca_climate_anomaly_monthly?snapshot=20260927T025305Z-46c8ce7cf4ad}},
note = {Snapshot 20260927T025305Z-46c8ce7cf4ad, sha256 46c8ce7cf4ad44ec9e0e9924168e9713cfcac2e40b8cf4a1f23a16754e55d9ad; accessed 2026-09-27}
}Embed a table or a chart
Paste this into any page. The embed is pinned to the same snapshot, follows the reader's light or dark setting, and always shows the source, license and a link back.
<iframe src="https://datazimuts.com/embed/chart?dataset=eccc_climate_intel%2Fca_climate_anomaly_monthly&lang=en&theme=auto&snapshot=20260927T025305Z-46c8ce7cf4ad&x=local_date&y=lat&agg=avg" title="Canadian climate anomaly intelligence (monthly)" width="100%" height="380" style="border:0" loading="lazy"></iframe>
Ask about this dataset. Answers come only from its catalog record, measured profile and change history, and list the facts they used.