{
  "manifestVersion": 1,
  "dataset": {
    "id": "eea-air-quality",
    "name": "European air quality (EEA)",
    "description": "Europe's air quality archive, as the European Environment Agency publishes it through the Air Quality Download Service: one row per sampling point, time interval and aggregation type, from 2013 to now, for the 39 reporting countries. Both of the EEA’s quality tiers are included and flagged in a `tier` column — E1a, the verified data each country reports by 30 September for the previous year, and E2a (\"Up-To-Date\"), the unverified stream transmitted continuously and running about two hours behind live. The data is kept in the source’s own long form, so every pollutant a country reports is present rather than a curated handful: alongside PM10, PM2.5, NO2, O3, SO2 and CO there are benzene, the heavy metals and the rest of the Eionet vocabulary. Every value carries its validity and verification status, and the companion tables turn the codes into words: stations, sampling points, pollutants and the three code vocabularies. For Romania this is the same national monitoring network (RNMCA/ANPM) reached through the official European channel: no credentials, full history back to 2013, and verified numbers where they exist.",
    "descriptions": {
      "ro": "Arhiva europeană de calitate a aerului, așa cum o publică Agenția Europeană de Mediu (EEA) prin Air Quality Download Service: câte un rând pentru fiecare punct de prelevare, interval de timp și tip de agregare, din 2013 până acum, pentru cele 39 de țări care raportează. Sunt incluse ambele niveluri de calitate pe care le publică EEA, marcate în coloana `tier`: E1a — datele validate, pe care fiecare țară le raportează până la 30 septembrie pentru anul precedent — și E2a („Up-To-Date”) — fluxul transmis continuu, nevalidat, la aproximativ două ore în urma momentului real. Datele sunt păstrate în forma „lungă” a sursei, așa încât toți poluanții raportați sunt prezenți, nu doar câțiva: pe lângă PM10, PM2.5, NO2, O3, SO2 și CO se regăsesc benzenul, metalele grele și restul codurilor din vocabularul Eionet. Fiecare valoare vine însoțită de starea ei de validitate și de verificare, iar tabelele însoțitoare traduc codurile în text: stații, puncte de prelevare, poluanți și cele trei vocabulare de coduri. Pentru România, aceasta este aceeași rețea națională de monitorizare (RNMCA/ANPM), dar prin canalul european oficial: fără credențiale, cu istoric complet din 2013 și cu date validate acolo unde există.",
      "en": "Europe's air quality archive, as the European Environment Agency publishes it through the Air Quality Download Service: one row per sampling point, time interval and aggregation type, from 2013 to now, for the 39 reporting countries. Both of the EEA’s quality tiers are included and flagged in a `tier` column — E1a, the verified data each country reports by 30 September for the previous year, and E2a (\"Up-To-Date\"), the unverified stream transmitted continuously and running about two hours behind live. The data is kept in the source’s own long form, so every pollutant a country reports is present rather than a curated handful: alongside PM10, PM2.5, NO2, O3, SO2 and CO there are benzene, the heavy metals and the rest of the Eionet vocabulary. Every value carries its validity and verification status, and the companion tables turn the codes into words: stations, sampling points, pollutants and the three code vocabularies. For Romania this is the same national monitoring network (RNMCA/ANPM) reached through the official European channel: no credentials, full history back to 2013, and verified numbers where they exist."
    },
    "names": {
      "ro": "Calitatea aerului în Europa — Agenția Europeană de Mediu",
      "en": "European air quality (EEA)"
    },
    "sourceUrl": "https://eeadmz1-downloads-webapp.azurewebsites.net/",
    "license": {
      "id": "CC-BY-4.0",
      "name": "Creative Commons Attribution 4.0 International",
      "url": "https://www.eea.europa.eu/en/legal-notice",
      "attribution": "Air quality data from the European Environment Agency (EEA) Air Quality Download Service, reported by the EEA member and cooperating countries under Directive 2008/50/EC. Licensed CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); copyright holder: European Environment Agency.",
      "notes": "THE TERMS. The EEA legal notice (https://www.eea.europa.eu/en/legal-notice, modified 2026-07-02) states: \"Unless otherwise indicated, the European Environment Agency (EEA) is the owner of copyrights and database rights in this website and its contents, and EEA materials are published under the CC-BY license\" and \"Information, documents and material available on this website and for which the EEA holds the rights of use are public and may be re-used without prior permission, free of charge, for commercial or non-commercial purposes, provided that the EEA is always acknowledged as the original source of the material and that the original meaning or message of the content is not distorted. Such acknowledgment must be included in each copy of the material. The re-use of the content on the EEA website covers the reproduction, adaptation and/or distribution, irrespective of the means and/or the format used.\" The EEA re-use policy follows Directive 2003/98/EC, the Commission Decision of 12 December 2011 on the re-use of Commission documents (2011/833/EU) and Directive 2013/37/EU. This specific dataset carries the same licence at the record level: the INSPIRE metadata for \"Air Quality download service for verified and Up To Date data, 2013-now\" in the EEA spatial data catalogue (https://sdi.eea.europa.eu/catalogue/datahub/api/records/fe809728-9cec-41c0-a9be-3a8f04600974) records its legal constraints verbatim as \"License CC-BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Copyright holder: European Environment Agency (EEA).\" CAVEATS A REUSER MUST READ. (1) THIRD-PARTY CONTENT. The same legal notice says the permission above \"do[es] not apply to content supplied by third parties\". The measurements here are reported to the EEA by national environmental agencies under the Air Quality Directive (2008/50/EC) and its Implementing Decision 2011/850/EU, and the EEA publishes the aggregate; a reuser redistributing one country’s subset should name that country’s agency as well — for Romania, ANPM / Rețeaua Națională de Monitorizare a Calității Aerului. The EEA logo is separately restricted and is not republished here. (2) THE E2a TIER IS NOT THE OFFICIAL RECORD. Rows with tier = \"E2a\" are the Up-To-Date stream: unverified, mostly verification = 2 or 3, and subject to revision or withdrawal. The official, ratified record is the E1a tier, which arrives up to twenty-one months later. Presenting an E2a number as a country’s official air quality figure misrepresents the source. (3) INVALID VALUES ARE PUBLISHED, NOT REMOVED. A negative `validity` means the value failed its check or the station was being calibrated; those rows are kept so the record is complete, and an analysis that does not filter them is wrong. (4) WHAT IS CHANGED. This is a derived work: the source’s own columns, renamed to snake_case, with the no-data sentinel -9900 stored as NULL, a UTC instant added beside the source’s UTC+1 wall clock, and the Eionet vocabularies joined in as lookup tables. No value is converted, rounded or removed. Every measurement column description quotes the EEA’s own \"Parquet schema definition\" section verbatim, from https://eeadmz1-downloads-webapp.azurewebsites.net/content/documentation/How_To_Downloads.pdf."
    },
    "cadence": "hourly",
    "tags": [
      "air-quality",
      "environment",
      "pollution",
      "europe",
      "eea",
      "romania",
      "pm10",
      "pm25",
      "no2",
      "ozone",
      "calitatea-aerului"
    ],
    "sources": [
      {
        "key": "e2a",
        "kind": "parquet",
        "description": "EEA E2a (Up-To-Date/UTD) air quality parquet: one file per sampling point, unverified, rolling window from the beginning of 2025 to about two hours behind live.",
        "access": "public",
        "location": "az://airquality-p/RO/*.parquet",
        "extensions": [
          "azure"
        ],
        "secrets": [
          {
            "name": "eea_air_quality_public_blob",
            "type": "azure",
            "scope": [],
            "env": [],
            "literals": [
              {
                "key": "PROVIDER",
                "value": "config"
              },
              {
                "key": "CONNECTION_STRING",
                "value": "BlobEndpoint=https://eeadmz1batchservice02.blob.core.windows.net"
              }
            ]
          }
        ],
        "attach": [],
        "requiresEnv": [],
        "relation": "read_parquet('az://airquality-p/RO/*.parquet', filename = true, union_by_name = true)"
      },
      {
        "key": "metadata",
        "kind": "tsv",
        "description": "EEA pan-European air quality metadata: one row per sampling-point configuration, with its station, network, coordinates, altitude, station type and area, measurement type and equipment. Tab-separated despite the .csv name.",
        "access": "public",
        "location": "https://discomap.eea.europa.eu/map/fme/metadata/PanEuropean_metadata.csv",
        "extensions": [
          "httpfs"
        ],
        "secrets": [],
        "attach": [],
        "requiresEnv": [],
        "relation": "read_csv('https://discomap.eea.europa.eu/map/fme/metadata/PanEuropean_metadata.csv', header = true, normalize_names = false, sample_size = -1, delim = '\t', all_varchar = true)"
      },
      {
        "key": "sampling_point_index",
        "kind": "csv",
        "description": "The download service's own index of station code, pollutant label, sampling point and coordinates, stored beside the data it describes.",
        "access": "public",
        "location": "az://airquality-p/station-spo-metadata.csv",
        "extensions": [
          "azure"
        ],
        "secrets": [
          {
            "name": "eea_air_quality_public_blob",
            "type": "azure",
            "scope": [],
            "env": [],
            "literals": [
              {
                "key": "PROVIDER",
                "value": "config"
              },
              {
                "key": "CONNECTION_STRING",
                "value": "BlobEndpoint=https://eeadmz1batchservice02.blob.core.windows.net"
              }
            ]
          }
        ],
        "attach": [],
        "requiresEnv": [],
        "relation": "read_csv('az://airquality-p/station-spo-metadata.csv', header = true, normalize_names = false, sample_size = -1, all_varchar = true)"
      },
      {
        "key": "similar_stations",
        "kind": "csv",
        "description": "The similarity ranking the EEA stores beside the data: for each target station and pollutant, the other stations its own model considers comparable.",
        "access": "public",
        "location": "az://airquality-p/similar-stations.csv",
        "extensions": [
          "azure"
        ],
        "secrets": [
          {
            "name": "eea_air_quality_public_blob",
            "type": "azure",
            "scope": [],
            "env": [],
            "literals": [
              {
                "key": "PROVIDER",
                "value": "config"
              },
              {
                "key": "CONNECTION_STRING",
                "value": "BlobEndpoint=https://eeadmz1batchservice02.blob.core.windows.net"
              }
            ]
          }
        ],
        "attach": [],
        "requiresEnv": [],
        "relation": "read_csv('az://airquality-p/similar-stations.csv', header = true, normalize_names = false, sample_size = -1, all_varchar = true)"
      },
      {
        "key": "pollutant_vocabulary",
        "kind": "csv",
        "description": "Eionet Data Dictionary vocabulary \"AQD - Pollutant\": the numeric code, symbol, name and mandatory unit of every pollutant the measurement files can carry.",
        "access": "public",
        "location": "https://dd.eionet.europa.eu/vocabulary/aq/pollutant/csv",
        "extensions": [
          "httpfs"
        ],
        "secrets": [],
        "attach": [],
        "requiresEnv": [],
        "relation": "read_csv('https://dd.eionet.europa.eu/vocabulary/aq/pollutant/csv', header = true, normalize_names = false, sample_size = -1, all_varchar = true)"
      },
      {
        "key": "validity_vocabulary",
        "kind": "csv",
        "description": "Eionet Data Dictionary vocabulary \"AQD - Observation Validity\": what each Validity code means.",
        "access": "public",
        "location": "https://dd.eionet.europa.eu/vocabulary/aq/observationvalidity/csv",
        "extensions": [
          "httpfs"
        ],
        "secrets": [],
        "attach": [],
        "requiresEnv": [],
        "relation": "read_csv('https://dd.eionet.europa.eu/vocabulary/aq/observationvalidity/csv', header = true, normalize_names = false, sample_size = -1, all_varchar = true)"
      },
      {
        "key": "verification_vocabulary",
        "kind": "csv",
        "description": "Eionet Data Dictionary vocabulary \"AQD - Observation Verification\": what each Verification code means.",
        "access": "public",
        "location": "https://dd.eionet.europa.eu/vocabulary/aq/observationverification/csv",
        "extensions": [
          "httpfs"
        ],
        "secrets": [],
        "attach": [],
        "requiresEnv": [],
        "relation": "read_csv('https://dd.eionet.europa.eu/vocabulary/aq/observationverification/csv', header = true, normalize_names = false, sample_size = -1, all_varchar = true)"
      },
      {
        "key": "aggregation_vocabulary",
        "kind": "csv",
        "description": "Eionet Data Dictionary vocabulary \"AQD - Primary Observations Time\": what each AggType value (hour, day, var, …) means.",
        "access": "public",
        "location": "https://dd.eionet.europa.eu/vocabulary/aq/primaryObservation/csv",
        "extensions": [
          "httpfs"
        ],
        "secrets": [],
        "attach": [],
        "requiresEnv": [],
        "relation": "read_csv('https://dd.eionet.europa.eu/vocabulary/aq/primaryObservation/csv', header = true, normalize_names = false, sample_size = -1, all_varchar = true)"
      },
      {
        "key": "e1a",
        "kind": "parquet",
        "description": "EEA E1a air quality parquet: one file per sampling point, quality-verified by the reporting country, 2013 to the last year reported by 30 September.",
        "access": "public",
        "location": "az://airquality-p-e1a/RO/*.parquet",
        "extensions": [
          "azure"
        ],
        "secrets": [
          {
            "name": "eea_air_quality_public_blob",
            "type": "azure",
            "scope": [],
            "env": [],
            "literals": [
              {
                "key": "PROVIDER",
                "value": "config"
              },
              {
                "key": "CONNECTION_STRING",
                "value": "BlobEndpoint=https://eeadmz1batchservice02.blob.core.windows.net"
              }
            ]
          }
        ],
        "attach": [],
        "requiresEnv": [],
        "relation": "read_parquet('az://airquality-p-e1a/RO/*.parquet', filename = true, union_by_name = true)"
      }
    ]
  },
  "ingest": {
    "id": "01M5JGPAY7D0MJB0EEY6TZAFJ3",
    "startedAt": "2026-10-22T19:16:33.351Z",
    "snapshotDate": "2026-10-22",
    "catalogSnapshotId": 149,
    "params": {
      "countries": "RO",
      "tiers": "e2a"
    }
  },
  "baseUrl": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality",
  "catalog": {
    "url": "https://data-directory.fsn1.your-objectstorage.com/catalog/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/catalog.ducklake",
    "latestUrl": "https://data-directory.fsn1.your-objectstorage.com/catalog/eea-air-quality/catalog.ducklake",
    "sha256": "3b3be6589a4d874a83457917c8c939c8fe3a93652857da099522510a9c050faf",
    "duckdbVersion": "v1.5.5",
    "attachExample": "ATTACH 'ducklake:https://data-directory.fsn1.your-objectstorage.com/catalog/eea-air-quality/catalog.ducklake' AS lake (READ_ONLY); SELECT * FROM lake.main.measurements LIMIT 5;"
  },
  "queryHints": {
    "examples": [
      {
        "title": "One station’s NO2 series, verified data only",
        "sql": "SELECT m.start_utc, m.value, m.unit\nFROM measurements m\nWHERE m.tier = 'E1a'\n  AND m.country_code = 'RO'\n  AND m.pollutant_code = 8\n  AND m.sampling_point_id = 'SPO-RO0122A_00008_100'\n  AND m.agg_type = 'hour'\n  AND m.validity IN (1, 2, 3, 4)\nORDER BY m.start_time;",
        "description": "The sort order is built for exactly this: tier, country and pollutant prune first, the sampling point lands on one contiguous run, and start_time keeps it in reading order. validity IN (1, 2, 3, 4) keeps only the values the reporting country stands behind."
      },
      {
        "title": "Daily PM2.5 average per station, most recent month",
        "sql": "SELECT sp.station_code, sp.station_type, date_trunc('day', m.start_time) AS day,\n       round(avg(m.value), 1) AS pm25\nFROM measurements m\nJOIN (SELECT DISTINCT sampling_point_id, station_code, station_type\n      FROM sampling_points) sp USING (sampling_point_id)\nWHERE m.obs_year = 2026\n  AND m.pollutant_code = 6001\n  AND m.country_code = 'RO'\n  AND m.agg_type = 'hour'\n  AND m.validity > 0\nGROUP BY 1, 2, 3\nORDER BY day DESC, pm25 DESC;",
        "description": "obs_year is the partition column, so constraining it means the read never opens the other years’ files. Note the DISTINCT subquery: sampling_points has one row per sampling-point CONFIGURATION, so joining it directly would multiply every measurement row by the number of configurations that sampling point has had."
      },
      {
        "title": "How many hours each station exceeded the NO2 limit value",
        "sql": "SELECT s.station_code, s.station_type, s.station_area, count(*) AS hours_over_200\nFROM measurements m\nJOIN (SELECT DISTINCT sampling_point_id, station_code\n      FROM sampling_points) sp USING (sampling_point_id)\nJOIN stations s ON s.station_code = sp.station_code\nJOIN pollutants p ON p.pollutant_code = m.pollutant_code\nWHERE p.notation = 'NO2'\n  AND m.country_code = 'RO'\n  AND m.agg_type = 'hour'\n  AND m.validity > 0\n  AND m.value > 200\n  AND m.obs_year = 2025\nGROUP BY 1, 2, 3\nORDER BY hours_over_200 DESC\nLIMIT 20;",
        "description": "Directive 2008/50/EC sets an hourly NO2 limit value of 200 µg/m³, not to be exceeded more than 18 times a calendar year. The pollutants join is what lets the query name the pollutant instead of remembering that 8 is NO2; the DISTINCT subquery over sampling_points is what stops a sampling point with several configurations counting its hours more than once."
      },
      {
        "title": "What each validity and verification code means",
        "sql": "SELECT 'validity' AS vocabulary, code::VARCHAR AS code, label FROM validity_codes\nUNION ALL\nSELECT 'verification', code::VARCHAR, label FROM verification_codes\nORDER BY 1, 2;",
        "description": "The two lookups that decide whether an analysis is right. Run this once before writing any filter on measurements."
      }
    ]
  },
  "tables": [
    {
      "name": "measurements",
      "description": "One row per sampling point, time interval and aggregation type — the whole of the EEA air quality archive in the source’s own long form, both the quality-verified E1a tier and the unverified near-real-time E2a tier, with `tier` saying which. `pollutant_code` says what was measured (join `pollutants`), `sampling_point_id` says where (join `sampling_points` for the station, its coordinates and its classification), and `value` is the number in the unit `unit` names. Values that FAILED their quality check are present, not removed: `validity = 1` (or 2, 3, 4) is the filter almost every analysis wants, and `validity < 0` is how the source marks a value it does not stand behind.",
      "descriptions": {
        "ro": "Câte un rând pentru fiecare punct de prelevare, interval de timp și tip de agregare — întreaga arhivă de calitate a aerului a EEA în forma „lungă” a sursei, atât nivelul validat E1a, cât și nivelul nevalidat, aproape în timp real, E2a, coloana `tier` spunând din care provine rândul. `pollutant_code` spune ce s-a măsurat (join cu `pollutants`), `sampling_point_id` spune unde (join cu `sampling_points` pentru stație, coordonate și clasificare), iar `value` este numărul, în unitatea indicată de `unit`. Valorile care au PICAT verificarea de calitate sunt prezente, nu eliminate: `validity = 1` (sau 2, 3, 4) este filtrul pe care îl vrea aproape orice analiză, iar `validity < 0` este modul în care sursa marchează o valoare pe care nu o susține.",
        "en": "One row per sampling point, time interval and aggregation type — the whole of the EEA air quality archive in the source’s own long form, both the quality-verified E1a tier and the unverified near-real-time E2a tier, with `tier` saying which. `pollutant_code` says what was measured (join `pollutants`), `sampling_point_id` says where (join `sampling_points` for the station, its coordinates and its classification), and `value` is the number in the unit `unit` names. Values that FAILED their quality check are present, not removed: `validity = 1` (or 2, 3, 4) is the filter almost every analysis wants, and `validity < 0` is how the source marks a value it does not stand behind."
      },
      "rowCount": 47117763,
      "lastRunRows": 5905869,
      "totalBytes": 279028880,
      "sortBy": [
        "tier",
        "country_code",
        "pollutant_code",
        "sampling_point_id",
        "start_time"
      ],
      "searchColumns": [],
      "primaryKey": [
        "tier",
        "sampling_point_id",
        "start_time",
        "agg_type"
      ],
      "writeMode": "snapshot_history",
      "storage": "lake",
      "source": "e2a",
      "columns": [
        {
          "name": "tier",
          "type": "VARCHAR",
          "nullable": false,
          "description": "Which EEA delivery this row came from. \"E1a\" is the quality-verified dataset a country reports by 30 September for the previous year; \"E2a\" is the Up-To-Date/UTD stream it transmits continuously and has not yet verified. The two are never mixed silently — this column is the reason, and it is the leading sort column so filtering on it is free.",
          "descriptions": {
            "ro": "Din ce livrare EEA provine rândul. „E1a” este setul validat pe care o țară îl raportează până la 30 septembrie pentru anul precedent; „E2a” este fluxul Up-To-Date/UTD transmis continuu și încă neverificat. Cele două nu sunt niciodată amestecate în tăcere — această coloană este motivul, iar fiind prima coloană de sortare, filtrarea după ea este gratuită.",
            "en": "Which EEA delivery this row came from. \"E1a\" is the quality-verified dataset a country reports by 30 September for the previous year; \"E2a\" is the Up-To-Date/UTD stream it transmits continuously and has not yet verified. The two are never mixed silently — this column is the reason, and it is the leading sort column so filtering on it is free."
          },
          "min": "E1a",
          "max": "E2a",
          "distinctApprox": 2
        },
        {
          "name": "country_code",
          "type": "VARCHAR",
          "nullable": false,
          "description": "ISO 3166-1 alpha-2 reporting country code, taken from the prefix the source puts on every sampling point identifier (\"RO/SPO-RO0122A_00008_100\"). It is the unit in which this table is reloaded — re-running a country replaces exactly that country — and the second sort column, so \"everything in Romania\" is a range rather than a pattern match.",
          "descriptions": {
            "ro": "Codul de țară ISO 3166-1 alfa-2 al țării raportoare, preluat din prefixul pe care sursa îl pune pe fiecare identificator de punct de prelevare („RO/SPO-RO0122A_00008_100”). Este unitatea în care se reîncarcă tabelul — o rulare repetată pentru o țară înlocuiește exact acea țară — și a doua coloană de sortare, așa încât „tot ce este în România” devine un interval, nu o potrivire de șablon.",
            "en": "ISO 3166-1 alpha-2 reporting country code, taken from the prefix the source puts on every sampling point identifier (\"RO/SPO-RO0122A_00008_100\"). It is the unit in which this table is reloaded — re-running a country replaces exactly that country — and the second sort column, so \"everything in Romania\" is a range rather than a pattern match."
          },
          "min": "RO",
          "max": "RO",
          "distinctApprox": 1
        },
        {
          "name": "pollutant_code",
          "type": "INTEGER",
          "nullable": false,
          "description": "Numeric pollutant identifier from the Eionet vocabulary at http://dd.eionet.europa.eu/vocabulary/aq/pollutant — 1 is SO2, 5 is PM10, 7 is O3, 8 is NO2, 10 is CO, 6001 is PM2.5, and so on for 678 codes. Joins to pollutants.pollutant_code for the symbol, the name and the mandatory unit. The EEA documentation calls the source column simply \"the pollutant identifier\".",
          "descriptions": {
            "ro": "Identificatorul numeric al poluantului, din vocabularul Eionet de la http://dd.eionet.europa.eu/vocabulary/aq/pollutant — 1 este SO2, 5 este PM10, 7 este O3, 8 este NO2, 10 este CO, 6001 este PM2.5 și așa mai departe, pentru 678 de coduri. Se leagă de pollutants.pollutant_code pentru simbol, denumire și unitatea obligatorie. Documentația EEA numește coloana-sursă pur și simplu „identificatorul poluantului”.",
            "en": "Numeric pollutant identifier from the Eionet vocabulary at http://dd.eionet.europa.eu/vocabulary/aq/pollutant — 1 is SO2, 5 is PM10, 7 is O3, 8 is NO2, 10 is CO, 6001 is PM2.5, and so on for 678 codes. Joins to pollutants.pollutant_code for the symbol, the name and the mandatory unit. The EEA documentation calls the source column simply \"the pollutant identifier\"."
          },
          "min": 1,
          "max": 6001
        },
        {
          "name": "sampling_point_id",
          "type": "VARCHAR",
          "nullable": false,
          "description": "The sampling point this row was measured at, without the country prefix. The EEA documents it as \"identifier known as 'local id' of the sampling point … created by national reporters, therefore there is no vocabulary for this parameter\", so its exact shape differs by country. Joins to sampling_points.sampling_point_id and to sampling_point_index.sampling_point_id, which are where the station, its coordinates and its classification live. Deliberately NOT parsed into a station code here: only about a third of Europe’s sampling point ids embed one, and 4,380 of them embed a string that is not the station’s EoI code at all.",
          "descriptions": {
            "ro": "Punctul de prelevare la care s-a făcut măsurătoarea, fără prefixul de țară. EEA îl documentează drept „identificatorul cunoscut ca «local id» al punctului de prelevare … creat de raportorii naționali, deci nu există vocabular pentru acest parametru”, așa că forma lui diferă de la o țară la alta. Se leagă de sampling_points.sampling_point_id și de sampling_point_index.sampling_point_id, acolo unde se află stația, coordonatele și clasificarea. Nu este descompus aici într-un cod de stație, în mod deliberat: doar aproximativ o treime dintre identificatorii europeni conțin unul, iar 4.380 dintre ei conțin un șir care nu este deloc codul EoI al stației.",
            "en": "The sampling point this row was measured at, without the country prefix. The EEA documents it as \"identifier known as 'local id' of the sampling point … created by national reporters, therefore there is no vocabulary for this parameter\", so its exact shape differs by country. Joins to sampling_points.sampling_point_id and to sampling_point_index.sampling_point_id, which are where the station, its coordinates and its classification live. Deliberately NOT parsed into a station code here: only about a third of Europe’s sampling point ids embed one, and 4,380 of them embed a string that is not the station’s EoI code at all."
          },
          "min": "SPO-RO0008R_00001_100",
          "max": "SPO-RO0280A_00007_100",
          "distinctApprox": 1595
        },
        {
          "name": "start_time",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "Beginning of the time interval the value is reported for, exactly as the source writes it — a wall clock with no offset attached. The EEA converts hourly and variable-interval measurements to UTC+1 before publishing them; daily values are instead left in the time zone the reporting country uses (sampling_points.time_zone). Use start_utc when you need a true instant, and this column when you need the number the source published.",
          "descriptions": {
            "ro": "Începutul intervalului de timp pentru care este raportată valoarea, exact așa cum îl scrie sursa — un ceas local, fără decalaj atașat. EEA convertește măsurătorile orare și cele cu interval variabil la UTC+1 înainte de publicare; valorile zilnice rămân în fusul orar folosit de țara raportoare (sampling_points.time_zone). Folosiți start_utc când aveți nevoie de un moment real și această coloană când aveți nevoie de numărul publicat de sursă.",
            "en": "Beginning of the time interval the value is reported for, exactly as the source writes it — a wall clock with no offset attached. The EEA converts hourly and variable-interval measurements to UTC+1 before publishing them; daily values are instead left in the time zone the reporting country uses (sampling_points.time_zone). Use start_utc when you need a true instant, and this column when you need the number the source published."
          },
          "min": "2012-12-31 23:00:00",
          "max": "2026-10-22 19:00:00",
          "distinctApprox": 107725
        },
        {
          "name": "obs_year",
          "type": "INTEGER",
          "nullable": false,
          "description": "Calendar year of start_time. Redundant with start_time on purpose: it is the column the published parquet is partitioned on, so a query constrained to a year or a range of years skips the other years’ files without opening them.",
          "descriptions": {
            "ro": "Anul calendaristic al lui start_time. Redundant față de start_time în mod intenționat: este coloana după care este partiționat fișierul parquet publicat, așa că o interogare limitată la un an sau la un interval de ani sare peste fișierele celorlalți ani fără să le deschidă.",
            "en": "Calendar year of start_time. Redundant with start_time on purpose: it is the column the published parquet is partitioned on, so a query constrained to a year or a range of years skips the other years’ files without opening them."
          }
        },
        {
          "name": "start_utc",
          "type": "TIMESTAMPTZ",
          "nullable": true,
          "description": "start_time as a true instant in UTC. Filled for the hourly and variable-interval rows, which the EEA states are published in UTC+1; NULL for daily rows, whose clock is the reporting country’s own and is not carried in the measurement file — join sampling_points.time_zone if you need to place those on a UTC axis.",
          "descriptions": {
            "ro": "start_time ca moment real, în UTC. Este completat pentru rândurile orare și cele cu interval variabil, despre care EEA afirmă că sunt publicate în UTC+1; este null pentru rândurile zilnice, al căror ceas este cel al țării raportoare și nu este purtat de fișierul de măsurători — folosiți sampling_points.time_zone dacă vreți să le așezați pe o axă UTC.",
            "en": "start_time as a true instant in UTC. Filled for the hourly and variable-interval rows, which the EEA states are published in UTC+1; NULL for daily rows, whose clock is the reporting country’s own and is not carried in the measurement file — join sampling_points.time_zone if you need to place those on a UTC axis."
          }
        },
        {
          "name": "end_time",
          "type": "TIMESTAMP",
          "nullable": true,
          "description": "End of the time interval the value is reported for, on the same clock as start_time — UTC+1 for hourly and variable-interval rows, the reporting country’s own zone for daily rows (see start_time). For hourly rows it is start_time plus one hour.",
          "descriptions": {
            "ro": "Sfârșitul intervalului de timp pentru care este raportată valoarea, pe același ceas ca start_time — UTC+1 pentru rândurile orare și cele cu interval variabil, fusul propriu al țării raportoare pentru rândurile zilnice (vezi start_time). Pentru rândurile orare este start_time plus o oră.",
            "en": "End of the time interval the value is reported for, on the same clock as start_time — UTC+1 for hourly and variable-interval rows, the reporting country’s own zone for daily rows (see start_time). For hourly rows it is start_time plus one hour."
          }
        },
        {
          "name": "agg_type",
          "type": "VARCHAR",
          "nullable": false,
          "description": "The primary observation the value is: \"hour\", \"day\" or \"var\" (a variable interval — weekly, monthly, anything that is not one of the first two). Joins to aggregation_types.code. Part of the primary key, because one sampling point publishes both hourly values and daily aggregates for the same day.",
          "descriptions": {
            "ro": "Tipul de observație primară pe care îl reprezintă valoarea: „hour” (oră), „day” (zi) sau „var” (interval variabil — săptămânal, lunar, orice nu este una dintre primele două). Se leagă de aggregation_types.code. Face parte din cheia primară, pentru că un punct de prelevare publică atât valori orare, cât și agregate zilnice pentru aceeași zi.",
            "en": "The primary observation the value is: \"hour\", \"day\" or \"var\" (a variable interval — weekly, monthly, anything that is not one of the first two). Joins to aggregation_types.code. Part of the primary key, because one sampling point publishes both hourly values and daily aggregates for the same day."
          },
          "distinctApprox": 2
        },
        {
          "name": "value",
          "type": "DOUBLE",
          "nullable": true,
          "description": "The measurement, in the unit `unit` names. The source writes -9900 where there is no measurement at all; that sentinel is stored as NULL here, because a -9900 left in place silently ruins every average taken over the column. Nothing else is altered: no unit conversion, no rounding, no removal of values that failed a quality check — `validity` is what tells you about those.",
          "descriptions": {
            "ro": "Măsurătoarea, în unitatea indicată de `unit`. Sursa scrie -9900 acolo unde nu există nicio măsurătoare; această valoare-santinelă este păstrată aici ca null, pentru că un -9900 lăsat la locul lui strică în tăcere orice medie calculată pe coloană. Nimic altceva nu este modificat: nicio conversie de unitate, nicio rotunjire, nicio eliminare a valorilor care au picat verificarea de calitate — despre acelea vă spune `validity`.",
            "en": "The measurement, in the unit `unit` names. The source writes -9900 where there is no measurement at all; that sentinel is stored as NULL here, because a -9900 left in place silently ruins every average taken over the column. Nothing else is altered: no unit conversion, no rounding, no removal of values that failed a quality check — `validity` is what tells you about those."
          },
          "unit": "the unit named by this row’s unit column"
        },
        {
          "name": "unit",
          "type": "VARCHAR",
          "nullable": true,
          "description": "Unit of measurement, from the Eionet vocabulary at http://dd.eionet.europa.eu/vocabulary/uom/concentration. \"ug.m-3\" is µg/m³, \"mg.m-3\" is mg/m³, \"ng.m-3\" is ng/m³. It varies by pollutant — CO is reported in mg/m³ and heavy metals in ng/m³ — so never aggregate across pollutants without grouping by it.",
          "descriptions": {
            "ro": "Unitatea de măsură, din vocabularul Eionet de la http://dd.eionet.europa.eu/vocabulary/uom/concentration. „ug.m-3” înseamnă µg/m³, „mg.m-3” înseamnă mg/m³, „ng.m-3” înseamnă ng/m³. Diferă de la un poluant la altul — CO se raportează în mg/m³, iar metalele grele în ng/m³ — deci nu agregați niciodată peste mai mulți poluanți fără să grupați după ea.",
            "en": "Unit of measurement, from the Eionet vocabulary at http://dd.eionet.europa.eu/vocabulary/uom/concentration. \"ug.m-3\" is µg/m³, \"mg.m-3\" is mg/m³, \"ng.m-3\" is ng/m³. It varies by pollutant — CO is reported in mg/m³ and heavy metals in ng/m³ — so never aggregate across pollutants without grouping by it."
          }
        },
        {
          "name": "validity",
          "type": "INTEGER",
          "nullable": true,
          "description": "Validity of the measurement, from http://dd.eionet.europa.eu/vocabulary/aq/observationvalidity. 1 valid, 2 valid but below the detection limit, 3 the same with the number replaced by half the detection limit, 4 valid ozone using CCQM.O3.2019; -1 not valid (or simply missing) and -99 not valid because the station was being calibrated or maintained. Joins to validity_codes.code. Invalid rows are published rather than dropped, so filter them out deliberately.",
          "descriptions": {
            "ro": "Validitatea măsurătorii, din http://dd.eionet.europa.eu/vocabulary/aq/observationvalidity. 1 validă, 2 validă dar sub limita de detecție, 3 la fel, cu numărul înlocuit cu jumătate din limita de detecție, 4 ozon valid folosind CCQM.O3.2019; -1 nevalidă (sau pur și simplu lipsă) și -99 nevalidă pentru că stația era în calibrare sau în mentenanță. Se leagă de validity_codes.code. Rândurile nevalide sunt publicate, nu eliminate, deci filtrați-le în mod explicit.",
            "en": "Validity of the measurement, from http://dd.eionet.europa.eu/vocabulary/aq/observationvalidity. 1 valid, 2 valid but below the detection limit, 3 the same with the number replaced by half the detection limit, 4 valid ozone using CCQM.O3.2019; -1 not valid (or simply missing) and -99 not valid because the station was being calibrated or maintained. Joins to validity_codes.code. Invalid rows are published rather than dropped, so filter them out deliberately."
          }
        },
        {
          "name": "verification",
          "type": "INTEGER",
          "nullable": true,
          "description": "Verification status, from http://dd.eionet.europa.eu/vocabulary/aq/observationverification: 1 verified, 2 preliminary verified, 3 not verified. Joins to verification_codes.code. Independent of validity — a value can be verified and invalid, or valid and unverified. E1a rows are overwhelmingly 1; E2a rows are 2 or 3.",
          "descriptions": {
            "ro": "Starea de verificare, din http://dd.eionet.europa.eu/vocabulary/aq/observationverification: 1 verificată, 2 verificată preliminar, 3 neverificată. Se leagă de verification_codes.code. Este independentă de validitate — o valoare poate fi verificată și nevalidă, sau validă și neverificată. Rândurile E1a sunt în covârșitoare majoritate 1; cele E2a sunt 2 sau 3.",
            "en": "Verification status, from http://dd.eionet.europa.eu/vocabulary/aq/observationverification: 1 verified, 2 preliminary verified, 3 not verified. Joins to verification_codes.code. Independent of validity — a value can be verified and invalid, or valid and unverified. E1a rows are overwhelmingly 1; E2a rows are 2 or 3."
          }
        },
        {
          "name": "result_time",
          "type": "TIMESTAMP",
          "nullable": true,
          "description": "When the file that carried this value was generated, in the EEA’s words \"the date and time in which the information of the file that contained the reported data was generated\". It is the closest thing the source gives to \"when was this number last restated\", and it moves when a country re-delivers a period.",
          "descriptions": {
            "ro": "Momentul în care a fost generat fișierul care a purtat această valoare — în cuvintele EEA, „data și ora la care a fost generată informația din fișierul care conținea datele raportate”. Este cel mai apropiat lucru pe care sursa îl oferă la întrebarea „când a fost reafirmat ultima dată acest număr” și se schimbă atunci când o țară retrimite o perioadă.",
            "en": "When the file that carried this value was generated, in the EEA’s words \"the date and time in which the information of the file that contained the reported data was generated\". It is the closest thing the source gives to \"when was this number last restated\", and it moves when a country re-delivers a period."
          }
        },
        {
          "name": "data_capture",
          "type": "DOUBLE",
          "nullable": true,
          "description": "Data capture associated with the primary observation: the percentage of the interval for which a sample or observation was actually taken. Mostly NULL — the countries that report it do so for aggregated values rather than for hourly ones.",
          "descriptions": {
            "ro": "Gradul de captare a datelor asociat observației primare: procentul din interval în care s-a prelevat efectiv o probă sau s-a făcut o observație. În cea mai mare parte null — țările care îl raportează o fac pentru valori agregate, nu pentru cele orare.",
            "en": "Data capture associated with the primary observation: the percentage of the interval for which a sample or observation was actually taken. Mostly NULL — the countries that report it do so for aggregated values rather than for hourly ones."
          },
          "unit": "%"
        },
        {
          "name": "snapshot_date",
          "type": "DATE",
          "nullable": false,
          "description": "The UTC run day on which this tier and country were last read from the EEA containers. The source republishes each sampling point’s full series, and a value can be revised or withdrawn, so this column says how fresh our copy of it is.",
          "descriptions": {
            "ro": "Ziua de rulare (UTC) în care acest nivel și această țară au fost citite ultima dată din containerele EEA. Sursa republică seria completă a fiecărui punct de prelevare, iar o valoare poate fi revizuită sau retrasă, așa că această coloană spune cât de proaspătă este copia noastră.",
            "en": "The UTC run day on which this tier and country were last read from the EEA containers. The source republishes each sampling point’s full series, and a value can be revised or withdrawn, so this column says how fresh our copy of it is."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When the ingest run that produced this row started (UTC).",
          "descriptions": {
            "ro": "Momentul (UTC) la care a pornit rularea care a produs acest rând.",
            "en": "When the ingest run that produced this row started (UTC)."
          }
        }
      ],
      "files": [
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/measurements/obs_year=2012/data_0.parquet",
          "sizeBytes": 5165,
          "rowCount": 303,
          "etag": "\"c9732af56ffd8d9bf3ecfec1c089a804\"",
          "stats": {
            "tier": {
              "min": "E1a",
              "max": "E2a"
            },
            "country_code": {
              "min": "RO",
              "max": "RO"
            },
            "pollutant_code": {
              "min": 1,
              "max": 6001
            },
            "sampling_point_id": {
              "min": "SPO-RO0008R_00001_100",
              "max": "SPO-RO0280A_00007_100"
            },
            "start_time": {
              "min": "2012-12-31 23:00:00",
              "max": "2026-10-22 19:00:00"
            }
          }
        },
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/measurements/obs_year=2013/data_0.parquet",
          "sizeBytes": 17314109,
          "rowCount": 2728929,
          "etag": "\"4d215a46a2715d32d628740caff88c4a\"",
          "stats": {
            "tier": {
              "min": "E1a",
              "max": "E2a"
            },
            "country_code": {
              "min": "RO",
              "max": "RO"
            },
            "pollutant_code": {
              "min": 1,
              "max": 6001
            },
            "sampling_point_id": {
              "min": "SPO-RO0008R_00001_100",
              "max": "SPO-RO0280A_00007_100"
            },
            "start_time": {
              "min": "2012-12-31 23:00:00",
              "max": "2026-10-22 19:00:00"
            }
          }
        },
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/measurements/obs_year=2014/data_0.parquet",
          "sizeBytes": 12083912,
          "rowCount": 1988603,
          "etag": "\"88f5bad77824f9be6dc84c71178e194a\"",
          "stats": {
            "tier": {
              "min": "E1a",
              "max": "E2a"
            },
            "country_code": {
              "min": "RO",
              "max": "RO"
            },
            "pollutant_code": {
              "min": 1,
              "max": 6001
            },
            "sampling_point_id": {
              "min": "SPO-RO0008R_00001_100",
              "max": "SPO-RO0280A_00007_100"
            },
            "start_time": {
              "min": "2012-12-31 23:00:00",
              "max": "2026-10-22 19:00:00"
            }
          }
        },
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/measurements/obs_year=2015/data_0.parquet",
          "sizeBytes": 16349283,
          "rowCount": 2712298,
          "etag": "\"f7173c08253872546c19723a98ca30c9\"",
          "stats": {
            "tier": {
              "min": "E1a",
              "max": "E2a"
            },
            "country_code": {
              "min": "RO",
              "max": "RO"
            },
            "pollutant_code": {
              "min": 1,
              "max": 6001
            },
            "sampling_point_id": {
              "min": "SPO-RO0008R_00001_100",
              "max": "SPO-RO0280A_00007_100"
            },
            "start_time": {
              "min": "2012-12-31 23:00:00",
              "max": "2026-10-22 19:00:00"
            }
          }
        },
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/measurements/obs_year=2016/data_0.parquet",
          "sizeBytes": 16495688,
          "rowCount": 3160554,
          "etag": "\"a621f2984136fb4bd841db3a9d28a721\"",
          "stats": {
            "tier": {
              "min": "E1a",
              "max": "E2a"
            },
            "country_code": {
              "min": "RO",
              "max": "RO"
            },
            "pollutant_code": {
              "min": 1,
              "max": 6001
            },
            "sampling_point_id": {
              "min": "SPO-RO0008R_00001_100",
              "max": "SPO-RO0280A_00007_100"
            },
            "start_time": {
              "min": "2012-12-31 23:00:00",
              "max": "2026-10-22 19:00:00"
            }
          }
        },
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/measurements/obs_year=2017/data_0.parquet",
          "sizeBytes": 23352311,
          "rowCount": 4444693,
          "etag": "\"776da6b552056401412963bf3b9b09f4\"",
          "stats": {
            "tier": {
              "min": "E1a",
              "max": "E2a"
            },
            "country_code": {
              "min": "RO",
              "max": "RO"
            },
            "pollutant_code": {
              "min": 1,
              "max": 6001
            },
            "sampling_point_id": {
              "min": "SPO-RO0008R_00001_100",
              "max": "SPO-RO0280A_00007_100"
            },
            "start_time": {
              "min": "2012-12-31 23:00:00",
              "max": "2026-10-22 19:00:00"
            }
          }
        },
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/measurements/obs_year=2018/data_0.parquet",
          "sizeBytes": 31942606,
          "rowCount": 5463829,
          "etag": "\"d1d85c955b0b530ab1bff88e63c98091\"",
          "stats": {
            "tier": {
              "min": "E1a",
              "max": "E2a"
            },
            "country_code": {
              "min": "RO",
              "max": "RO"
            },
            "pollutant_code": {
              "min": 1,
              "max": 6001
            },
            "sampling_point_id": {
              "min": "SPO-RO0008R_00001_100",
              "max": "SPO-RO0280A_00007_100"
            },
            "start_time": {
              "min": "2012-12-31 23:00:00",
              "max": "2026-10-22 19:00:00"
            }
          }
        },
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/measurements/obs_year=2019/data_0.parquet",
          "sizeBytes": 19548180,
          "rowCount": 3479724,
          "etag": "\"fef7cf3bc1b8ecc646111e9db91d52bb\"",
          "stats": {
            "tier": {
              "min": "E1a",
              "max": "E2a"
            },
            "country_code": {
              "min": "RO",
              "max": "RO"
            },
            "pollutant_code": {
              "min": 1,
              "max": 6001
            },
            "sampling_point_id": {
              "min": "SPO-RO0008R_00001_100",
              "max": "SPO-RO0280A_00007_100"
            },
            "start_time": {
              "min": "2012-12-31 23:00:00",
              "max": "2026-10-22 19:00:00"
            }
          }
        },
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/measurements/obs_year=2020/data_0.parquet",
          "sizeBytes": 25589305,
          "rowCount": 5098577,
          "etag": "\"fd049f9f65f4df549e9ad071f572e287\"",
          "stats": {
            "tier": {
              "min": "E1a",
              "max": "E2a"
            },
            "country_code": {
              "min": "RO",
              "max": "RO"
            },
            "pollutant_code": {
              "min": 1,
              "max": 6001
            },
            "sampling_point_id": {
              "min": "SPO-RO0008R_00001_100",
              "max": "SPO-RO0280A_00007_100"
            },
            "start_time": {
              "min": "2012-12-31 23:00:00",
              "max": "2026-10-22 19:00:00"
            }
          }
        },
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/measurements/obs_year=2021/data_0.parquet",
          "sizeBytes": 33881515,
          "rowCount": 5441036,
          "etag": "\"b67feef611c906fa61ba93d4ca27c9de\"",
          "stats": {
            "tier": {
              "min": "E1a",
              "max": "E2a"
            },
            "country_code": {
              "min": "RO",
              "max": "RO"
            },
            "pollutant_code": {
              "min": 1,
              "max": 6001
            },
            "sampling_point_id": {
              "min": "SPO-RO0008R_00001_100",
              "max": "SPO-RO0280A_00007_100"
            },
            "start_time": {
              "min": "2012-12-31 23:00:00",
              "max": "2026-10-22 19:00:00"
            }
          }
        },
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/measurements/obs_year=2022/data_0.parquet",
          "sizeBytes": 18535911,
          "rowCount": 2663123,
          "etag": "\"83da7a37d9897117466d677df069b731\"",
          "stats": {
            "tier": {
              "min": "E1a",
              "max": "E2a"
            },
            "country_code": {
              "min": "RO",
              "max": "RO"
            },
            "pollutant_code": {
              "min": 1,
              "max": 6001
            },
            "sampling_point_id": {
              "min": "SPO-RO0008R_00001_100",
              "max": "SPO-RO0280A_00007_100"
            },
            "start_time": {
              "min": "2012-12-31 23:00:00",
              "max": "2026-10-22 19:00:00"
            }
          }
        },
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/measurements/obs_year=2023/data_0.parquet",
          "sizeBytes": 10801890,
          "rowCount": 1770239,
          "etag": "\"ef0d384cc321f3937a36e2bdd5cb8f93\"",
          "stats": {
            "tier": {
              "min": "E1a",
              "max": "E2a"
            },
            "country_code": {
              "min": "RO",
              "max": "RO"
            },
            "pollutant_code": {
              "min": 1,
              "max": 6001
            },
            "sampling_point_id": {
              "min": "SPO-RO0008R_00001_100",
              "max": "SPO-RO0280A_00007_100"
            },
            "start_time": {
              "min": "2012-12-31 23:00:00",
              "max": "2026-10-22 19:00:00"
            }
          }
        },
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/measurements/obs_year=2024/data_0.parquet",
          "sizeBytes": 15023482,
          "rowCount": 2259986,
          "etag": "\"2b58e54aac45385ee5fc65fc5e88662b\"",
          "stats": {
            "tier": {
              "min": "E1a",
              "max": "E2a"
            },
            "country_code": {
              "min": "RO",
              "max": "RO"
            },
            "pollutant_code": {
              "min": 1,
              "max": 6001
            },
            "sampling_point_id": {
              "min": "SPO-RO0008R_00001_100",
              "max": "SPO-RO0280A_00007_100"
            },
            "start_time": {
              "min": "2012-12-31 23:00:00",
              "max": "2026-10-22 19:00:00"
            }
          }
        },
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/measurements/obs_year=2025/data_0.parquet",
          "sizeBytes": 10426,
          "rowCount": 796,
          "etag": "\"9b0b6c6747c38274bc29ffe4cecdfad7\"",
          "stats": {
            "tier": {
              "min": "E1a",
              "max": "E2a"
            },
            "country_code": {
              "min": "RO",
              "max": "RO"
            },
            "pollutant_code": {
              "min": 1,
              "max": 6001
            },
            "sampling_point_id": {
              "min": "SPO-RO0008R_00001_100",
              "max": "SPO-RO0280A_00007_100"
            },
            "start_time": {
              "min": "2012-12-31 23:00:00",
              "max": "2026-10-22 19:00:00"
            }
          }
        },
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/measurements/obs_year=2026/data_0.parquet",
          "sizeBytes": 38095097,
          "rowCount": 5905073,
          "etag": "\"e1b32fc98767bf50dc355654f71e3754\"",
          "stats": {
            "tier": {
              "min": "E1a",
              "max": "E2a"
            },
            "country_code": {
              "min": "RO",
              "max": "RO"
            },
            "pollutant_code": {
              "min": 1,
              "max": 6001
            },
            "sampling_point_id": {
              "min": "SPO-RO0008R_00001_100",
              "max": "SPO-RO0280A_00007_100"
            },
            "start_time": {
              "min": "2012-12-31 23:00:00",
              "max": "2026-10-22 19:00:00"
            }
          }
        }
      ],
      "example": [
        {
          "tier": "E1a",
          "country_code": "RO",
          "pollutant_code": 1,
          "sampling_point_id": "SPO-RO0008R_00001_100",
          "start_time": "2012-12-31T23:00:00.000Z",
          "obs_year": 2012,
          "start_utc": "2012-12-31T22:00:00.000Z",
          "end_time": "2013-01-01T00:00:00.000Z",
          "agg_type": "hour",
          "value": 5.05,
          "unit": "ug.m-3",
          "validity": 1,
          "verification": 1,
          "result_time": "2017-12-07T15:30:18.000Z",
          "data_capture": null,
          "snapshot_date": "2026-09-05T00:00:00.000Z",
          "ingested_at": "2026-09-05T11:01:42.335Z"
        },
        {
          "tier": "E1a",
          "country_code": "RO",
          "pollutant_code": 1,
          "sampling_point_id": "SPO-RO0008R_00001_100",
          "start_time": "2013-01-01T00:00:00.000Z",
          "obs_year": 2013,
          "start_utc": "2012-12-31T23:00:00.000Z",
          "end_time": "2013-01-01T01:00:00.000Z",
          "agg_type": "hour",
          "value": 9.29,
          "unit": "ug.m-3",
          "validity": 1,
          "verification": 1,
          "result_time": "2017-12-07T15:30:18.000Z",
          "data_capture": null,
          "snapshot_date": "2026-09-05T00:00:00.000Z",
          "ingested_at": "2026-09-05T11:01:42.335Z"
        }
      ]
    },
    {
      "name": "stations",
      "description": "One row per air quality monitoring station in the EEA’s pan-European metadata — 6,716 of them across 42 reporting countries — with its coordinates, altitude, network, station type and area classification. The metadata file describes a station once per sampling-point configuration and a station that moved or was re-classified appears more than once, so this table keeps the most recently commissioned description of each station; sampling_points has every row of the file, unaggregated.",
      "descriptions": {
        "ro": "Câte un rând pentru fiecare stație de monitorizare a calității aerului din metadatele paneuropene ale EEA — 6.716 stații din 42 de țări raportoare — cu coordonate, altitudine, rețea, tip de stație și clasificare a zonei. Fișierul de metadate descrie o stație câte o dată pentru fiecare configurație de punct de prelevare, iar o stație mutată sau reclasificată apare de mai multe ori, așa că acest tabel păstrează cea mai recentă descriere a fiecărei stații; sampling_points conține toate rândurile fișierului, neagregate.",
        "en": "One row per air quality monitoring station in the EEA’s pan-European metadata — 6,716 of them across 42 reporting countries — with its coordinates, altitude, network, station type and area classification. The metadata file describes a station once per sampling-point configuration and a station that moved or was re-classified appears more than once, so this table keeps the most recently commissioned description of each station; sampling_points has every row of the file, unaggregated."
      },
      "rowCount": 6716,
      "lastRunRows": 6716,
      "totalBytes": 205078,
      "sortBy": [
        "country_code",
        "station_code"
      ],
      "searchColumns": [],
      "primaryKey": [
        "station_code"
      ],
      "writeMode": "upsert",
      "storage": "lake",
      "source": "metadata",
      "columns": [
        {
          "name": "country_code",
          "type": "VARCHAR",
          "nullable": false,
          "description": "ISO 3166-1 alpha-2 code of the reporting country. Leads the sort order, so \"every station in Romania\" is a range on a sort column.",
          "descriptions": {
            "ro": "Codul ISO 3166-1 alfa-2 al țării raportoare. Este prima coloană de sortare, așa încât „toate stațiile din România” devine un interval pe o coloană sortată.",
            "en": "ISO 3166-1 alpha-2 code of the reporting country. Leads the sort order, so \"every station in Romania\" is a range on a sort column."
          },
          "min": "AD",
          "max": "XK"
        },
        {
          "name": "station_code",
          "type": "VARCHAR",
          "nullable": false,
          "description": "The station’s EoI code — the pan-European identifier, two letters of country followed by a number and a letter. This is the code EEA maps and reports use, and the key sampling_points.station_code and similar_stations.station_code join to.",
          "descriptions": {
            "ro": "Codul EoI al stației — identificatorul paneuropean, două litere de țară urmate de un număr și o literă. Este codul folosit de hărțile și rapoartele EEA și cheia de care se leagă sampling_points.station_code și similar_stations.station_code.",
            "en": "The station’s EoI code — the pan-European identifier, two letters of country followed by a number and a letter. This is the code EEA maps and reports use, and the key sampling_points.station_code and similar_stations.station_code join to."
          },
          "min": "4101422",
          "max": "XK0012A",
          "distinctApprox": 6801
        },
        {
          "name": "station_id",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The station’s INSPIRE local identifier as reported (\"STA-\" plus the national code). Not the same string as station_code, and it is the one that appears inside the reporting country’s own XML deliveries.",
          "descriptions": {
            "ro": "Identificatorul local INSPIRE al stației, așa cum a fost raportat („STA-” plus codul național). Nu este același șir cu station_code și este cel care apare în livrările XML ale țării raportoare.",
            "en": "The station’s INSPIRE local identifier as reported (\"STA-\" plus the national code). Not the same string as station_code, and it is the one that appears inside the reporting country’s own XML deliveries."
          }
        },
        {
          "name": "station_national_code",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The station’s identifier in the reporting country’s own national system, as the country declared it. Its format is entirely national — a number in some countries, a mnemonic in others.",
          "descriptions": {
            "ro": "Identificatorul stației în sistemul național al țării raportoare, așa cum l-a declarat țara. Formatul este în întregime național — un număr în unele țări, un mnemonic în altele.",
            "en": "The station’s identifier in the reporting country’s own national system, as the country declared it. Its format is entirely national — a number in some countries, a mnemonic in others."
          }
        },
        {
          "name": "network_id",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The monitoring network the station belongs to, as an INSPIRE local identifier (\"NET-\" plus a national code). In most countries this is the regional or agency-level network that operates the station.",
          "descriptions": {
            "ro": "Rețeaua de monitorizare din care face parte stația, ca identificator local INSPIRE („NET-” plus un cod național). În majoritatea țărilor este rețeaua regională sau a agenției care operează stația.",
            "en": "The monitoring network the station belongs to, as an INSPIRE local identifier (\"NET-\" plus a national code). In most countries this is the regional or agency-level network that operates the station."
          }
        },
        {
          "name": "namespace",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The reporting namespace that owns these identifiers, e.g. \"RO.ANPM.AQ\" for Romania’s national environmental protection agency. It is what makes a national code unique across Europe.",
          "descriptions": {
            "ro": "Spațiul de nume de raportare căruia îi aparțin acești identificatori, de exemplu „RO.ANPM.AQ” pentru agenția națională de mediu a României. El este cel care face ca un cod național să fie unic la nivel european.",
            "en": "The reporting namespace that owns these identifiers, e.g. \"RO.ANPM.AQ\" for Romania’s national environmental protection agency. It is what makes a national code unique across Europe."
          }
        },
        {
          "name": "time_zone",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The time zone the reporting country delivers this station’s data in, as the last segment of the Eionet timezone vocabulary URI. It is what daily measurement rows are timed in (hourly and variable rows are converted to UTC+1 by the EEA before publication).",
          "descriptions": {
            "ro": "Fusul orar în care țara raportoare livrează datele acestei stații, ca ultim segment al URI-ului din vocabularul Eionet de fusuri orare. Este fusul în care sunt exprimate rândurile zilnice de măsurători (cele orare și cele variabile sunt convertite de EEA la UTC+1 înainte de publicare).",
            "en": "The time zone the reporting country delivers this station’s data in, as the last segment of the Eionet timezone vocabulary URI. It is what daily measurement rows are timed in (hourly and variable rows are converted to UTC+1 by the EEA before publication)."
          }
        },
        {
          "name": "projection",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The coordinate reference system the longitude, latitude and altitude are given in. Every row of the source file says EPSG:4979 — WGS 84 in three dimensions.",
          "descriptions": {
            "ro": "Sistemul de referință în care sunt date longitudinea, latitudinea și altitudinea. Toate rândurile fișierului-sursă spun EPSG:4979 — WGS 84 în trei dimensiuni.",
            "en": "The coordinate reference system the longitude, latitude and altitude are given in. Every row of the source file says EPSG:4979 — WGS 84 in three dimensions."
          }
        },
        {
          "name": "longitude",
          "type": "DOUBLE",
          "nullable": true,
          "description": "Station longitude in decimal degrees.",
          "descriptions": {
            "ro": "Longitudinea stației, în grade zecimale.",
            "en": "Station longitude in decimal degrees."
          },
          "unit": "degrees"
        },
        {
          "name": "latitude",
          "type": "DOUBLE",
          "nullable": true,
          "description": "Station latitude in decimal degrees.",
          "descriptions": {
            "ro": "Latitudinea stației, în grade zecimale.",
            "en": "Station latitude in decimal degrees."
          },
          "unit": "degrees"
        },
        {
          "name": "altitude",
          "type": "DOUBLE",
          "nullable": true,
          "description": "Station altitude above sea level. Genuinely negative values occur (192 rows of the source file are between -4 and -1 m, in countries that lie below sea level) and are kept as they are; the file carries no \"unknown\" sentinel in this column.",
          "descriptions": {
            "ro": "Altitudinea stației deasupra nivelului mării. Există valori negative reale (192 de rânduri ale fișierului-sursă sunt între -4 și -1 m, în țări aflate sub nivelul mării) și sunt păstrate ca atare; fișierul nu folosește nicio valoare-santinelă pentru „necunoscut” în această coloană.",
            "en": "Station altitude above sea level. Genuinely negative values occur (192 rows of the source file are between -4 and -1 m, in countries that lie below sea level) and are kept as they are; the file carries no \"unknown\" sentinel in this column."
          },
          "unit": "m"
        },
        {
          "name": "station_type",
          "type": "VARCHAR",
          "nullable": true,
          "description": "What dominates the air the station measures: \"background\", \"traffic\" or \"industrial\". This is the classification the Air Quality Directive requires, and comparing a traffic station with a background one without saying so is the single most common way to misread this dataset.",
          "descriptions": {
            "ro": "Ce domină aerul pe care îl măsoară stația: „background” (fond), „traffic” (trafic) sau „industrial”. Este clasificarea cerută de Directiva privind calitatea aerului, iar compararea unei stații de trafic cu una de fond fără a spune asta este cel mai frecvent mod de a citi greșit acest set de date.",
            "en": "What dominates the air the station measures: \"background\", \"traffic\" or \"industrial\". This is the classification the Air Quality Directive requires, and comparing a traffic station with a background one without saying so is the single most common way to misread this dataset."
          }
        },
        {
          "name": "station_area",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The kind of area the station stands in: \"urban\", \"suburban\", \"rural\", or one of the three finer rural classes \"rural-regional\", \"rural-nearcity\" and \"rural-remote\".",
          "descriptions": {
            "ro": "Tipul de zonă în care se află stația: „urban”, „suburban”, „rural” sau una dintre cele trei clase rurale mai fine — „rural-regional”, „rural-nearcity” și „rural-remote”.",
            "en": "The kind of area the station stands in: \"urban\", \"suburban\", \"rural\", or one of the three finer rural classes \"rural-regional\", \"rural-nearcity\" and \"rural-remote\"."
          }
        },
        {
          "name": "sampling_point_count",
          "type": "INTEGER",
          "nullable": true,
          "description": "How many distinct sampling points the metadata file lists for this station. Derived here rather than read from the source, so \"which stations measure more than one thing\" is answerable without a join.",
          "descriptions": {
            "ro": "Câte puncte de prelevare distincte listează fișierul de metadate pentru această stație. Este derivat aici, nu citit din sursă, ca „ce stații măsoară mai mult de un lucru” să poată fi răspuns fără un join.",
            "en": "How many distinct sampling points the metadata file lists for this station. Derived here rather than read from the source, so \"which stations measure more than one thing\" is answerable without a join."
          }
        },
        {
          "name": "pollutant_count",
          "type": "INTEGER",
          "nullable": true,
          "description": "How many distinct pollutants the metadata file lists for this station. Derived here for the same reason as sampling_point_count.",
          "descriptions": {
            "ro": "Câți poluanți distincți listează fișierul de metadate pentru această stație. Derivat aici din același motiv ca sampling_point_count.",
            "en": "How many distinct pollutants the metadata file lists for this station. Derived here for the same reason as sampling_point_count."
          }
        },
        {
          "name": "observation_begin",
          "type": "TIMESTAMP",
          "nullable": true,
          "description": "The earliest ObservationDateBegin across the station’s sampling points — when the station first started reporting anything, as the metadata file records it.",
          "descriptions": {
            "ro": "Cea mai timpurie valoare ObservationDateBegin dintre punctele de prelevare ale stației — momentul în care stația a început să raporteze ceva, așa cum îl consemnează fișierul de metadate.",
            "en": "The earliest ObservationDateBegin across the station’s sampling points — when the station first started reporting anything, as the metadata file records it."
          }
        },
        {
          "name": "observation_end",
          "type": "TIMESTAMP",
          "nullable": true,
          "description": "The latest ObservationDateEnd across the station’s sampling points. NULL while at least one of its sampling points is still open, which is the normal case for an active station.",
          "descriptions": {
            "ro": "Cea mai târzie valoare ObservationDateEnd dintre punctele de prelevare ale stației. Este null cât timp cel puțin unul dintre puncte este încă deschis, ceea ce este cazul normal pentru o stație activă.",
            "en": "The latest ObservationDateEnd across the station’s sampling points. NULL while at least one of its sampling points is still open, which is the normal case for an active station."
          }
        },
        {
          "name": "first_seen_date",
          "type": "DATE",
          "nullable": false,
          "description": "The first UTC run day on which this station appeared in the EEA metadata. Maintained by the framework: it is never moved forward.",
          "descriptions": {
            "ro": "Prima zi de rulare (UTC) în care această stație a apărut în metadatele EEA. Menținută automat de sistemul de încărcare: nu este mutată niciodată înainte.",
            "en": "The first UTC run day on which this station appeared in the EEA metadata. Maintained by the framework: it is never moved forward."
          }
        },
        {
          "name": "last_seen_date",
          "type": "DATE",
          "nullable": false,
          "description": "The most recent UTC run day on which this station still appeared in the EEA metadata. A station that stops being listed keeps its old value rather than being deleted, so its measurements never lose their dimension row.",
          "descriptions": {
            "ro": "Cea mai recentă zi de rulare (UTC) în care stația mai apărea în metadatele EEA. O stație care dispare din listă își păstrează valoarea veche în loc să fie ștearsă, așa încât măsurătorile ei nu rămân niciodată fără rândul lor de dimensiune.",
            "en": "The most recent UTC run day on which this station still appeared in the EEA metadata. A station that stops being listed keeps its old value rather than being deleted, so its measurements never lose their dimension row."
          }
        },
        {
          "name": "snapshot_date",
          "type": "DATE",
          "nullable": false,
          "description": "The UTC run day this row was last read from the metadata file.",
          "descriptions": {
            "ro": "Ziua de rulare (UTC) în care acest rând a fost citit ultima dată din fișierul de metadate.",
            "en": "The UTC run day this row was last read from the metadata file."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When the ingest run that last wrote this row started (UTC).",
          "descriptions": {
            "ro": "Momentul (UTC) la care a pornit rularea care a scris ultima dată acest rând.",
            "en": "When the ingest run that last wrote this row started (UTC)."
          }
        }
      ],
      "files": [
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/stations.parquet",
          "sizeBytes": 205078,
          "rowCount": 6716,
          "etag": "\"59101056009e869c29e0a7b24fbf45dc\"",
          "stats": {
            "country_code": {
              "min": "AD",
              "max": "XK"
            },
            "station_code": {
              "min": "4101422",
              "max": "XK0012A"
            }
          }
        }
      ],
      "example": [
        {
          "country_code": "AD",
          "station_code": "AD0942A",
          "station_id": "STA-AD0942A",
          "station_national_code": "942",
          "network_id": "NET-AD001A",
          "namespace": "AD.GovernAndorra.AQ",
          "time_zone": "UTC+01",
          "projection": "EPSG:4979",
          "longitude": 1.539138,
          "latitude": 42.50969400000001,
          "altitude": 1080,
          "station_type": "background",
          "station_area": "urban",
          "sampling_point_count": 8,
          "pollutant_count": 8,
          "observation_begin": "2005-01-01T00:00:00.000Z",
          "observation_end": null,
          "first_seen_date": "2026-09-03T00:00:00.000Z",
          "last_seen_date": "2026-10-22T00:00:00.000Z",
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        },
        {
          "country_code": "AD",
          "station_code": "AD0944A",
          "station_id": "STA-AD0944A",
          "station_national_code": "944",
          "network_id": "NET-AD001A",
          "namespace": "AD.GovernAndorra.AQ",
          "time_zone": "UTC+01",
          "projection": "EPSG:4979",
          "longitude": 1.56525,
          "latitude": 42.516943999999995,
          "altitude": 1637,
          "station_type": "background",
          "station_area": "rural",
          "sampling_point_count": 1,
          "pollutant_count": 1,
          "observation_begin": "2005-01-01T00:00:00.000Z",
          "observation_end": null,
          "first_seen_date": "2026-09-03T00:00:00.000Z",
          "last_seen_date": "2026-10-22T00:00:00.000Z",
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        }
      ]
    },
    {
      "name": "sampling_points",
      "description": "The EEA pan-European metadata export, landed row for row: one row per sampling-point configuration — the instrument, its inlet, the pollutant it measures and the period it measured it for. A sampling point that was re-equipped or re-classified has more than one row, which is why this table declares no primary key: all 69,342 rows of the file are distinct, and collapsing them would throw away the only record the source publishes of that change. It is the authoritative way to get from measurements.sampling_point_id to a station, a location and a pollutant — but JOIN IT THROUGH A DISTINCT: `JOIN (SELECT DISTINCT sampling_point_id, station_code, station_type FROM sampling_points) USING (sampling_point_id)`, or a sampling point with several configurations multiplies every measurement row it matches.",
      "descriptions": {
        "ro": "Exportul de metadate paneuropene al EEA, adus rând cu rând: câte un rând pentru fiecare configurație de punct de prelevare — instrumentul, priza de aer, poluantul măsurat și perioada în care a fost măsurat. Un punct de prelevare reechipat sau reclasificat are mai multe rânduri, motiv pentru care acest tabel nu declară o cheie primară: toate cele 69.342 de rânduri ale fișierului sunt distincte, iar comasarea lor ar arunca singura consemnare publicată de sursă a acelei schimbări. Este calea autoritativă de la measurements.sampling_point_id către o stație, o locație și un poluant — dar FACEȚI JOIN PRINTR-UN DISTINCT: `JOIN (SELECT DISTINCT sampling_point_id, station_code, station_type FROM sampling_points) USING (sampling_point_id)`, altfel un punct de prelevare cu mai multe configurații multiplică fiecare rând de măsurători pe care îl potrivește.",
        "en": "The EEA pan-European metadata export, landed row for row: one row per sampling-point configuration — the instrument, its inlet, the pollutant it measures and the period it measured it for. A sampling point that was re-equipped or re-classified has more than one row, which is why this table declares no primary key: all 69,342 rows of the file are distinct, and collapsing them would throw away the only record the source publishes of that change. It is the authoritative way to get from measurements.sampling_point_id to a station, a location and a pollutant — but JOIN IT THROUGH A DISTINCT: `JOIN (SELECT DISTINCT sampling_point_id, station_code, station_type FROM sampling_points) USING (sampling_point_id)`, or a sampling point with several configurations multiplies every measurement row it matches."
      },
      "rowCount": 69342,
      "lastRunRows": 69342,
      "totalBytes": 1170086,
      "sortBy": [
        "country_code",
        "station_code",
        "sampling_point_id",
        "pollutant_code"
      ],
      "searchColumns": [],
      "primaryKey": [],
      "writeMode": "replace",
      "storage": "lake",
      "source": "metadata",
      "columns": [
        {
          "name": "country_code",
          "type": "VARCHAR",
          "nullable": false,
          "description": "ISO 3166-1 alpha-2 code of the reporting country.",
          "descriptions": {
            "ro": "Codul ISO 3166-1 alfa-2 al țării raportoare.",
            "en": "ISO 3166-1 alpha-2 code of the reporting country."
          },
          "min": "AD",
          "max": "XK"
        },
        {
          "name": "station_code",
          "type": "VARCHAR",
          "nullable": false,
          "description": "EoI code of the station this sampling point belongs to; joins to stations.station_code.",
          "descriptions": {
            "ro": "Codul EoI al stației de care aparține punctul de prelevare; se leagă de stations.station_code.",
            "en": "EoI code of the station this sampling point belongs to; joins to stations.station_code."
          },
          "min": "4101422",
          "max": "XK0012A"
        },
        {
          "name": "sampling_point_id",
          "type": "VARCHAR",
          "nullable": false,
          "description": "The sampling point identifier, in exactly the form measurements.sampling_point_id carries it. NOT UNIQUE in this table: 69,342 rows cover 48,717 sampling points, so join through a DISTINCT subquery — see the table description.",
          "descriptions": {
            "ro": "Identificatorul punctului de prelevare, exact în forma în care îl poartă measurements.sampling_point_id. NU ESTE UNIC în acest tabel: 69.342 de rânduri acoperă 48.717 puncte de prelevare, deci faceți join printr-un subselect DISTINCT — vezi descrierea tabelului.",
            "en": "The sampling point identifier, in exactly the form measurements.sampling_point_id carries it. NOT UNIQUE in this table: 69,342 rows cover 48,717 sampling points, so join through a DISTINCT subquery — see the table description."
          },
          "min": "GB_SamplingPoint_105",
          "max": "SP_52001002_9_A"
        },
        {
          "name": "pollutant_code",
          "type": "INTEGER",
          "nullable": true,
          "description": "Numeric pollutant identifier, taken from the trailing segment of the source’s AirPollutantCode URI. Joins to pollutants.pollutant_code and to measurements.pollutant_code.",
          "descriptions": {
            "ro": "Identificatorul numeric al poluantului, preluat din ultimul segment al URI-ului AirPollutantCode din sursă. Se leagă de pollutants.pollutant_code și de measurements.pollutant_code.",
            "en": "Numeric pollutant identifier, taken from the trailing segment of the source’s AirPollutantCode URI. Joins to pollutants.pollutant_code and to measurements.pollutant_code."
          },
          "min": 1,
          "max": 7910
        },
        {
          "name": "pollutant_uri",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The full Eionet vocabulary URI the source writes for the pollutant, kept verbatim alongside the code parsed out of it.",
          "descriptions": {
            "ro": "URI-ul complet din vocabularul Eionet pe care îl scrie sursa pentru poluant, păstrat ca atare alături de codul extras din el.",
            "en": "The full Eionet vocabulary URI the source writes for the pollutant, kept verbatim alongside the code parsed out of it."
          }
        },
        {
          "name": "sampling_process_id",
          "type": "VARCHAR",
          "nullable": true,
          "description": "Identifier of the sampling process — the measurement method plus the instrument, as the country declared it. Two rows for the same sampling point usually differ here.",
          "descriptions": {
            "ro": "Identificatorul procesului de prelevare — metoda de măsurare împreună cu instrumentul, așa cum le-a declarat țara. Două rânduri pentru același punct de prelevare diferă de obicei aici.",
            "en": "Identifier of the sampling process — the measurement method plus the instrument, as the country declared it. Two rows for the same sampling point usually differ here."
          }
        },
        {
          "name": "sample_id",
          "type": "VARCHAR",
          "nullable": true,
          "description": "Identifier of the sample the process feeds, as the country declared it. Part of the INSPIRE model the EEA’s e-Reporting is built on.",
          "descriptions": {
            "ro": "Identificatorul probei pe care o alimentează procesul, așa cum a declarat-o țara. Face parte din modelul INSPIRE pe care este construită raportarea electronică a EEA.",
            "en": "Identifier of the sample the process feeds, as the country declared it. Part of the INSPIRE model the EEA’s e-Reporting is built on."
          }
        },
        {
          "name": "station_id",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The station’s INSPIRE local identifier (\"STA-\" plus a national code); joins to stations.station_id.",
          "descriptions": {
            "ro": "Identificatorul local INSPIRE al stației („STA-” plus un cod național); se leagă de stations.station_id.",
            "en": "The station’s INSPIRE local identifier (\"STA-\" plus a national code); joins to stations.station_id."
          }
        },
        {
          "name": "station_national_code",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The station’s identifier in the reporting country’s own national system.",
          "descriptions": {
            "ro": "Identificatorul stației în sistemul național al țării raportoare.",
            "en": "The station’s identifier in the reporting country’s own national system."
          }
        },
        {
          "name": "network_id",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The monitoring network this sampling point reports through.",
          "descriptions": {
            "ro": "Rețeaua de monitorizare prin care raportează acest punct de prelevare.",
            "en": "The monitoring network this sampling point reports through."
          }
        },
        {
          "name": "namespace",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The reporting namespace that owns these identifiers.",
          "descriptions": {
            "ro": "Spațiul de nume de raportare căruia îi aparțin acești identificatori.",
            "en": "The reporting namespace that owns these identifiers."
          }
        },
        {
          "name": "time_zone",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The time zone the reporting country delivers this sampling point’s data in, as the last segment of the Eionet timezone vocabulary URI. This is the clock daily measurement rows are on.",
          "descriptions": {
            "ro": "Fusul orar în care țara raportoare livrează datele acestui punct de prelevare, ca ultim segment al URI-ului din vocabularul Eionet de fusuri orare. Acesta este ceasul pe care sunt exprimate rândurile zilnice de măsurători.",
            "en": "The time zone the reporting country delivers this sampling point’s data in, as the last segment of the Eionet timezone vocabulary URI. This is the clock daily measurement rows are on."
          }
        },
        {
          "name": "observation_begin",
          "type": "TIMESTAMP",
          "nullable": true,
          "description": "When this configuration started producing observations, as the country declared it.",
          "descriptions": {
            "ro": "Momentul în care această configurație a început să producă observații, așa cum l-a declarat țara.",
            "en": "When this configuration started producing observations, as the country declared it."
          }
        },
        {
          "name": "observation_end",
          "type": "TIMESTAMP",
          "nullable": true,
          "description": "When it stopped. NULL while the configuration is still in use, which is the normal case for an operating sampling point.",
          "descriptions": {
            "ro": "Momentul în care a încetat. Este null cât timp configurația este încă în uz, ceea ce este cazul normal pentru un punct de prelevare în funcțiune.",
            "en": "When it stopped. NULL while the configuration is still in use, which is the normal case for an operating sampling point."
          }
        },
        {
          "name": "projection",
          "type": "VARCHAR",
          "nullable": true,
          "description": "Coordinate reference system of longitude, latitude and altitude. EPSG:4979 throughout the file — WGS 84 in three dimensions.",
          "descriptions": {
            "ro": "Sistemul de referință al longitudinii, latitudinii și altitudinii. EPSG:4979 în tot fișierul — WGS 84 în trei dimensiuni.",
            "en": "Coordinate reference system of longitude, latitude and altitude. EPSG:4979 throughout the file — WGS 84 in three dimensions."
          }
        },
        {
          "name": "longitude",
          "type": "DOUBLE",
          "nullable": true,
          "description": "Longitude of the sampling point, in decimal degrees.",
          "descriptions": {
            "ro": "Longitudinea punctului de prelevare, în grade zecimale.",
            "en": "Longitude of the sampling point, in decimal degrees."
          },
          "unit": "degrees"
        },
        {
          "name": "latitude",
          "type": "DOUBLE",
          "nullable": true,
          "description": "Latitude of the sampling point, in decimal degrees.",
          "descriptions": {
            "ro": "Latitudinea punctului de prelevare, în grade zecimale.",
            "en": "Latitude of the sampling point, in decimal degrees."
          },
          "unit": "degrees"
        },
        {
          "name": "altitude",
          "type": "DOUBLE",
          "nullable": true,
          "description": "Altitude of the sampling point above sea level.",
          "descriptions": {
            "ro": "Altitudinea punctului de prelevare deasupra nivelului mării.",
            "en": "Altitude of the sampling point above sea level."
          },
          "unit": "m"
        },
        {
          "name": "measurement_type",
          "type": "VARCHAR",
          "nullable": true,
          "description": "How the measurement is made: \"automatic\" (a continuous analyser), \"active\" (a pump drawing air through a filter that is later analysed), \"passive\" (a diffusive sampler) or \"remote\" (an optical technique measuring at a distance).",
          "descriptions": {
            "ro": "Cum se face măsurarea: „automatic” (analizor cu funcționare continuă), „active” (o pompă care trage aer printr-un filtru analizat ulterior), „passive” (prelevator prin difuzie) sau „remote” (tehnică optică ce măsoară de la distanță).",
            "en": "How the measurement is made: \"automatic\" (a continuous analyser), \"active\" (a pump drawing air through a filter that is later analysed), \"passive\" (a diffusive sampler) or \"remote\" (an optical technique measuring at a distance)."
          }
        },
        {
          "name": "station_type",
          "type": "VARCHAR",
          "nullable": true,
          "description": "Station classification for this configuration: \"background\", \"traffic\" or \"industrial\". It sits on the sampling-point row because a station can be re-classified over its life.",
          "descriptions": {
            "ro": "Clasificarea stației pentru această configurație: „background”, „traffic” sau „industrial”. Se află pe rândul punctului de prelevare pentru că o stație poate fi reclasificată de-a lungul vieții ei.",
            "en": "Station classification for this configuration: \"background\", \"traffic\" or \"industrial\". It sits on the sampling-point row because a station can be re-classified over its life."
          }
        },
        {
          "name": "station_area",
          "type": "VARCHAR",
          "nullable": true,
          "description": "Area classification for this configuration: \"urban\", \"suburban\", \"rural\", \"rural-regional\", \"rural-nearcity\" or \"rural-remote\".",
          "descriptions": {
            "ro": "Clasificarea zonei pentru această configurație: „urban”, „suburban”, „rural”, „rural-regional”, „rural-nearcity” sau „rural-remote”.",
            "en": "Area classification for this configuration: \"urban\", \"suburban\", \"rural\", \"rural-regional\", \"rural-nearcity\" or \"rural-remote\"."
          }
        },
        {
          "name": "equivalence_demonstrated",
          "type": "VARCHAR",
          "nullable": true,
          "description": "Whether the method has been shown equivalent to the reference method the Air Quality Directive prescribes: \"ref\" the reference method itself, \"yes\" demonstrated equivalent, \"no\" not demonstrated, \"noRef\" no reference method exists for this pollutant, \"inprogress\" a demonstration under way.",
          "descriptions": {
            "ro": "Dacă metoda a fost demonstrată echivalentă cu metoda de referință prevăzută de Directiva privind calitatea aerului: „ref” chiar metoda de referință, „yes” demonstrată echivalentă, „no” nedemonstrată, „noRef” nu există metodă de referință pentru acest poluant, „inprogress” demonstrație în curs.",
            "en": "Whether the method has been shown equivalent to the reference method the Air Quality Directive prescribes: \"ref\" the reference method itself, \"yes\" demonstrated equivalent, \"no\" not demonstrated, \"noRef\" no reference method exists for this pollutant, \"inprogress\" a demonstration under way."
          }
        },
        {
          "name": "measurement_equipment",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The instrument model, as the last segment of the Eionet measurement-equipment vocabulary URI the country reported. NULL when the country reported no equipment.",
          "descriptions": {
            "ro": "Modelul instrumentului, ca ultim segment al URI-ului din vocabularul Eionet de echipamente de măsurare raportat de țară. Este null când țara nu a raportat niciun echipament.",
            "en": "The instrument model, as the last segment of the Eionet measurement-equipment vocabulary URI the country reported. NULL when the country reported no equipment."
          }
        },
        {
          "name": "inlet_height",
          "type": "DOUBLE",
          "nullable": true,
          "description": "Height of the sampling inlet above the ground. The source writes a negative sentinel (-99, -999, -9900 or -9999, depending on the country) where the value is unknown; since a height cannot be negative, anything below zero is stored as NULL here.",
          "descriptions": {
            "ro": "Înălțimea prizei de aer deasupra solului. Sursa scrie o valoare-santinelă negativă (-99, -999, -9900 sau -9999, în funcție de țară) acolo unde valoarea este necunoscută; cum o înălțime nu poate fi negativă, orice valoare sub zero este păstrată aici ca null.",
            "en": "Height of the sampling inlet above the ground. The source writes a negative sentinel (-99, -999, -9900 or -9999, depending on the country) where the value is unknown; since a height cannot be negative, anything below zero is stored as NULL here."
          },
          "unit": "m"
        },
        {
          "name": "building_distance",
          "type": "DOUBLE",
          "nullable": true,
          "description": "Distance from the inlet to the nearest building. Same negative-sentinel handling as inlet_height.",
          "descriptions": {
            "ro": "Distanța de la priza de aer până la cea mai apropiată clădire. Aceeași tratare a valorilor-santinelă negative ca la inlet_height.",
            "en": "Distance from the inlet to the nearest building. Same negative-sentinel handling as inlet_height."
          },
          "unit": "m"
        },
        {
          "name": "kerb_distance",
          "type": "DOUBLE",
          "nullable": true,
          "description": "Distance from the inlet to the kerb of the nearest road — the number that makes a traffic station’s readings interpretable. Same negative-sentinel handling as inlet_height.",
          "descriptions": {
            "ro": "Distanța de la priza de aer până la bordura celui mai apropiat drum — numărul care face interpretabile citirile unei stații de trafic. Aceeași tratare a valorilor-santinelă negative ca la inlet_height.",
            "en": "Distance from the inlet to the kerb of the nearest road — the number that makes a traffic station’s readings interpretable. Same negative-sentinel handling as inlet_height."
          },
          "unit": "m"
        },
        {
          "name": "snapshot_date",
          "type": "DATE",
          "nullable": false,
          "description": "The UTC run day this row was read from the metadata file.",
          "descriptions": {
            "ro": "Ziua de rulare (UTC) în care acest rând a fost citit din fișierul de metadate.",
            "en": "The UTC run day this row was read from the metadata file."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When the ingest run that produced this row started (UTC).",
          "descriptions": {
            "ro": "Momentul (UTC) la care a pornit rularea care a produs acest rând.",
            "en": "When the ingest run that produced this row started (UTC)."
          }
        }
      ],
      "files": [
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/sampling_points.parquet",
          "sizeBytes": 1170086,
          "rowCount": 69342,
          "etag": "\"b2cab4bf32073309d60191e842ac2655\"",
          "stats": {
            "country_code": {
              "min": "AD",
              "max": "XK"
            },
            "station_code": {
              "min": "4101422",
              "max": "XK0012A"
            },
            "sampling_point_id": {
              "min": "GB_SamplingPoint_105",
              "max": "SP_52001002_9_A"
            },
            "pollutant_code": {
              "min": 1,
              "max": 7910
            }
          }
        }
      ],
      "example": [
        {
          "country_code": "AD",
          "station_code": "AD0942A",
          "sampling_point_id": "SPO-AD0942A-0001",
          "pollutant_code": 1,
          "pollutant_uri": "http://dd.eionet.europa.eu/vocabulary/aq/pollutant/1",
          "sampling_process_id": "SPP-AD0942A-0001-API100E",
          "sample_id": "SAM-AD0942A-0001",
          "station_id": "STA-AD0942A",
          "station_national_code": "942",
          "network_id": "NET-AD001A",
          "namespace": "AD.GovernAndorra.AQ",
          "time_zone": "UTC+01",
          "observation_begin": "2005-01-01T00:00:00.000Z",
          "observation_end": null,
          "projection": "EPSG:4979",
          "longitude": 1.539138,
          "latitude": 42.50969400000001,
          "altitude": 1080,
          "measurement_type": "automatic",
          "station_type": "background",
          "station_area": "urban",
          "equivalence_demonstrated": "ref",
          "measurement_equipment": "API100E",
          "inlet_height": 3,
          "building_distance": 6,
          "kerb_distance": null,
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        },
        {
          "country_code": "AD",
          "station_code": "AD0942A",
          "sampling_point_id": "SPO-AD0942A-0005",
          "pollutant_code": 5,
          "pollutant_uri": "http://dd.eionet.europa.eu/vocabulary/aq/pollutant/5",
          "sampling_process_id": "SPP-AD0942A-0005-TEOM1400A",
          "sample_id": "SAM-AD0942A-0005",
          "station_id": "STA-AD0942A",
          "station_national_code": "942",
          "network_id": "NET-AD001A",
          "namespace": "AD.GovernAndorra.AQ",
          "time_zone": "UTC+01",
          "observation_begin": "2005-01-01T00:00:00.000Z",
          "observation_end": null,
          "projection": "EPSG:4979",
          "longitude": 1.539138,
          "latitude": 42.50969400000001,
          "altitude": 1080,
          "measurement_type": "automatic",
          "station_type": "background",
          "station_area": "urban",
          "equivalence_demonstrated": "no",
          "measurement_equipment": "TEOM1400A",
          "inlet_height": 3,
          "building_distance": 6,
          "kerb_distance": null,
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        }
      ]
    },
    {
      "name": "sampling_point_index",
      "description": "The station-to-sampling-point index the download service keeps beside the data itself (station-spo-metadata.csv, in the same container as the parquet files). Thinner than sampling_points — station, pollutant label and coordinates, nothing else — but considerably fresher: it covered 1,445 of Romania’s 1,536 near-real-time sampling points on 2026-09-02, where the pan-European metadata export, last regenerated in March 2024, covered 1,194. Use it when a sampling point in measurements has no row in sampling_points.",
      "descriptions": {
        "ro": "Indexul stație–punct de prelevare pe care serviciul de descărcare îl ține chiar lângă date (station-spo-metadata.csv, în același container cu fișierele parquet). Este mai sărac decât sampling_points — stație, eticheta poluantului și coordonate, atât — dar considerabil mai proaspăt: la 2 septembrie 2026 acoperea 1.445 din cele 1.536 de puncte de prelevare românești din fluxul aproape în timp real, față de 1.194 acoperite de exportul de metadate paneuropene, regenerat ultima dată în martie 2024. Folosiți-l când un punct de prelevare din measurements nu are rând în sampling_points.",
        "en": "The station-to-sampling-point index the download service keeps beside the data itself (station-spo-metadata.csv, in the same container as the parquet files). Thinner than sampling_points — station, pollutant label and coordinates, nothing else — but considerably fresher: it covered 1,445 of Romania’s 1,536 near-real-time sampling points on 2026-09-02, where the pan-European metadata export, last regenerated in March 2024, covered 1,194. Use it when a sampling point in measurements has no row in sampling_points."
      },
      "rowCount": 59730,
      "lastRunRows": 59730,
      "totalBytes": 660934,
      "sortBy": [
        "station_code",
        "sampling_point_id"
      ],
      "searchColumns": [],
      "primaryKey": [],
      "writeMode": "replace",
      "storage": "lake",
      "source": "sampling_point_index",
      "columns": [
        {
          "name": "station_code",
          "type": "VARCHAR",
          "nullable": false,
          "description": "EoI code of the station, from the file’s own \"eucode\" column; joins to stations.station_code.",
          "descriptions": {
            "ro": "Codul EoI al stației, din coloana proprie „eucode” a fișierului; se leagă de stations.station_code.",
            "en": "EoI code of the station, from the file’s own \"eucode\" column; joins to stations.station_code."
          },
          "min": "AD0942A",
          "max": "XK0013"
        },
        {
          "name": "sampling_point_id",
          "type": "VARCHAR",
          "nullable": false,
          "description": "The sampling point identifier in the normalised form the parquet files use, from the file’s own \"spo_norm\" column; joins to measurements.sampling_point_id.",
          "descriptions": {
            "ro": "Identificatorul punctului de prelevare în forma normalizată folosită de fișierele parquet, din coloana proprie „spo_norm” a fișierului; se leagă de measurements.sampling_point_id.",
            "en": "The sampling point identifier in the normalised form the parquet files use, from the file’s own \"spo_norm\" column; joins to measurements.sampling_point_id."
          },
          "min": "GB_SamplingPoint_105",
          "max": "SP_52001002_9_A"
        },
        {
          "name": "sampling_point_id_reported",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The sampling point identifier as originally reported, from the file’s own \"spo\" column. Identical to sampling_point_id for most countries; kept because it is the string the reporting country actually uses.",
          "descriptions": {
            "ro": "Identificatorul punctului de prelevare așa cum a fost raportat inițial, din coloana proprie „spo” a fișierului. Identic cu sampling_point_id pentru majoritatea țărilor; este păstrat pentru că este șirul pe care îl folosește efectiv țara raportoare.",
            "en": "The sampling point identifier as originally reported, from the file’s own \"spo\" column. Identical to sampling_point_id for most countries; kept because it is the string the reporting country actually uses."
          }
        },
        {
          "name": "station_id",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The station’s INSPIRE local identifier, from the file’s own \"sta\" column.",
          "descriptions": {
            "ro": "Identificatorul local INSPIRE al stației, din coloana proprie „sta” a fișierului.",
            "en": "The station’s INSPIRE local identifier, from the file’s own \"sta\" column."
          }
        },
        {
          "name": "pollutant_label",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The pollutant this sampling point measures, as the short label the file writes in its \"polu\" column (\"PM10\", \"NO2\", \"Cd in PM10\"). It is the Notation of the Eionet pollutant vocabulary, so it joins to pollutants.notation.",
          "descriptions": {
            "ro": "Poluantul măsurat de acest punct de prelevare, ca eticheta scurtă pe care fișierul o scrie în coloana sa „polu” („PM10”, „NO2”, „Cd in PM10”). Este Notation-ul din vocabularul Eionet al poluanților, deci se leagă de pollutants.notation.",
            "en": "The pollutant this sampling point measures, as the short label the file writes in its \"polu\" column (\"PM10\", \"NO2\", \"Cd in PM10\"). It is the Notation of the Eionet pollutant vocabulary, so it joins to pollutants.notation."
          }
        },
        {
          "name": "latitude",
          "type": "DOUBLE",
          "nullable": true,
          "description": "Latitude of the station, in decimal degrees, from the file’s \"Lat\".",
          "descriptions": {
            "ro": "Latitudinea stației, în grade zecimale, din coloana „Lat” a fișierului.",
            "en": "Latitude of the station, in decimal degrees, from the file’s \"Lat\"."
          },
          "unit": "degrees"
        },
        {
          "name": "longitude",
          "type": "DOUBLE",
          "nullable": true,
          "description": "Longitude of the station, in decimal degrees, from the file’s \"Lon\".",
          "descriptions": {
            "ro": "Longitudinea stației, în grade zecimale, din coloana „Lon” a fișierului.",
            "en": "Longitude of the station, in decimal degrees, from the file’s \"Lon\"."
          },
          "unit": "degrees"
        },
        {
          "name": "snapshot_date",
          "type": "DATE",
          "nullable": false,
          "description": "The UTC run day this row was read from the index file.",
          "descriptions": {
            "ro": "Ziua de rulare (UTC) în care acest rând a fost citit din fișierul-index.",
            "en": "The UTC run day this row was read from the index file."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When the ingest run that produced this row started (UTC).",
          "descriptions": {
            "ro": "Momentul (UTC) la care a pornit rularea care a produs acest rând.",
            "en": "When the ingest run that produced this row started (UTC)."
          }
        }
      ],
      "files": [
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/sampling_point_index.parquet",
          "sizeBytes": 660934,
          "rowCount": 59730,
          "etag": "\"37e6c33e7661db27e0555f46ba3d6a5e\"",
          "stats": {
            "station_code": {
              "min": "AD0942A",
              "max": "XK0013"
            },
            "sampling_point_id": {
              "min": "GB_SamplingPoint_105",
              "max": "SP_52001002_9_A"
            }
          }
        }
      ],
      "example": [
        {
          "station_code": "AD0942A",
          "sampling_point_id": "SPO-AD0942A-0001",
          "sampling_point_id_reported": "SPO-AD0942A-0001",
          "station_id": "STA-AD0942A",
          "pollutant_label": "SO2",
          "latitude": 42.509694,
          "longitude": 1.539138,
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        },
        {
          "station_code": "AD0942A",
          "sampling_point_id": "SPO-AD0942A-0005",
          "sampling_point_id_reported": "SPO-AD0942A-0005",
          "station_id": "STA-AD0942A",
          "pollutant_label": "PM10",
          "latitude": 42.509694,
          "longitude": 1.539138,
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        }
      ]
    },
    {
      "name": "similar_stations",
      "description": "The similarity ranking the EEA stores beside the measurement data (similar-stations.csv, in the same container as the parquet files): for each target station and pollutant, the other stations its own model considers comparable. The EEA publishes no schema for this companion file, so every column below is described from the file’s own header and from what the file demonstrably contains — that is stated on each column rather than dressed up as documentation. It is landed rather than linked because house rule 12 requires every machine-readable file a source exposes to be read.",
      "descriptions": {
        "ro": "Clasamentul de similaritate pe care EEA îl stochează lângă datele de măsurători (similar-stations.csv, în același container cu fișierele parquet): pentru fiecare stație țintă și fiecare poluant, celelalte stații pe care modelul propriu al EEA le consideră comparabile. EEA nu publică nicio schemă pentru acest fișier însoțitor, așa că fiecare coloană de mai jos este descrisă pornind de la antetul fișierului și de la ce conține demonstrabil fișierul — iar acest lucru este spus pe fiecare coloană, nu prezentat drept documentație. Fișierul este adus în lac, nu doar referit, pentru că regula 12 a casei cere ca orice fișier citibil de mașină expus de sursă să fie citit.",
        "en": "The similarity ranking the EEA stores beside the measurement data (similar-stations.csv, in the same container as the parquet files): for each target station and pollutant, the other stations its own model considers comparable. The EEA publishes no schema for this companion file, so every column below is described from the file’s own header and from what the file demonstrably contains — that is stated on each column rather than dressed up as documentation. It is landed rather than linked because house rule 12 requires every machine-readable file a source exposes to be read."
      },
      "rowCount": 65920,
      "lastRunRows": 65920,
      "totalBytes": 676160,
      "sortBy": [
        "target_station_code",
        "pollutant_label",
        "similarity_rank"
      ],
      "searchColumns": [],
      "primaryKey": [],
      "writeMode": "replace",
      "storage": "lake",
      "source": "similar_stations",
      "columns": [
        {
          "name": "target_station_code",
          "type": "VARCHAR",
          "nullable": false,
          "description": "The station the ranking is for, from the file’s \"Target\" column. An EoI code, so it joins to stations.station_code.",
          "descriptions": {
            "ro": "Stația pentru care este făcut clasamentul, din coloana „Target” a fișierului. Este un cod EoI, deci se leagă de stations.station_code.",
            "en": "The station the ranking is for, from the file’s \"Target\" column. An EoI code, so it joins to stations.station_code."
          },
          "min": "AL0203A",
          "max": "XK0012A"
        },
        {
          "name": "pollutant_label",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The pollutant the ranking is for, from the file’s \"AirPollutant\" column, written as the Eionet pollutant Notation — so it joins to pollutants.notation. Similarity is per-pollutant: the same two stations rank differently for NO2 and for PM10.",
          "descriptions": {
            "ro": "Poluantul pentru care este făcut clasamentul, din coloana „AirPollutant” a fișierului, scris ca Notation din vocabularul Eionet al poluanților — deci se leagă de pollutants.notation. Similaritatea este calculată per poluant: aceleași două stații se clasează diferit pentru NO2 și pentru PM10.",
            "en": "The pollutant the ranking is for, from the file’s \"AirPollutant\" column, written as the Eionet pollutant Notation — so it joins to pollutants.notation. Similarity is per-pollutant: the same two stations rank differently for NO2 and for PM10."
          },
          "min": "NO2",
          "max": "PM2.5"
        },
        {
          "name": "similarity_rank",
          "type": "INTEGER",
          "nullable": true,
          "description": "The file’s own \"RowNumber\" column, verbatim: the position of this station in the target’s ranking, counting from 1. Lower is more similar.",
          "descriptions": {
            "ro": "Coloana proprie „RowNumber” a fișierului, ca atare: poziția acestei stații în clasamentul țintei, numărând de la 1. Mai mic înseamnă mai asemănător.",
            "en": "The file’s own \"RowNumber\" column, verbatim: the position of this station in the target’s ranking, counting from 1. Lower is more similar."
          },
          "min": 1,
          "max": 6
        },
        {
          "name": "station_code",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The comparable station, from the file’s \"AirQualityStationEoICode\" column; joins to stations.station_code.",
          "descriptions": {
            "ro": "Stația comparabilă, din coloana „AirQualityStationEoICode” a fișierului; se leagă de stations.station_code.",
            "en": "The comparable station, from the file’s \"AirQualityStationEoICode\" column; joins to stations.station_code."
          }
        },
        {
          "name": "similarity_score",
          "type": "DOUBLE",
          "nullable": true,
          "description": "The file’s own \"EucDist\" column, verbatim. Its header names a Euclidean distance, but the values in the file are between 0 and 1 and DECREASE as similarity_rank grows, so in practice it reads as a similarity score where higher is more alike. The EEA publishes no definition of the feature space it is computed in; treat it as the source’s own ordering rather than as a distance in any named unit.",
          "descriptions": {
            "ro": "Coloana proprie „EucDist” a fișierului, ca atare. Antetul ei numește o distanță euclidiană, dar valorile din fișier sunt între 0 și 1 și SCAD pe măsură ce similarity_rank crește, așa că în practică se citește ca un scor de similaritate, unde mai mare înseamnă mai asemănător. EEA nu publică nicio definiție a spațiului de trăsături în care este calculată; tratați-o ca pe ordinea proprie a sursei, nu ca pe o distanță într-o unitate anume.",
            "en": "The file’s own \"EucDist\" column, verbatim. Its header names a Euclidean distance, but the values in the file are between 0 and 1 and DECREASE as similarity_rank grows, so in practice it reads as a similarity score where higher is more alike. The EEA publishes no definition of the feature space it is computed in; treat it as the source’s own ordering rather than as a distance in any named unit."
          }
        },
        {
          "name": "group_hash",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The file’s own \"Group\" column, verbatim: a 32-character hexadecimal digest that is constant across all rows of one (target, pollutant) ranking. The EEA publishes no definition of it; it behaves as an opaque identifier for the ranking itself.",
          "descriptions": {
            "ro": "Coloana proprie „Group” a fișierului, ca atare: un rezumat hexazecimal de 32 de caractere, constant pentru toate rândurile unui clasament (țintă, poluant). EEA nu publică nicio definiție a lui; se comportă ca un identificator opac al clasamentului.",
            "en": "The file’s own \"Group\" column, verbatim: a 32-character hexadecimal digest that is constant across all rows of one (target, pollutant) ranking. The EEA publishes no definition of it; it behaves as an opaque identifier for the ranking itself."
          }
        },
        {
          "name": "snapshot_date",
          "type": "DATE",
          "nullable": false,
          "description": "The UTC run day this row was read from the similarity file.",
          "descriptions": {
            "ro": "Ziua de rulare (UTC) în care acest rând a fost citit din fișierul de similaritate.",
            "en": "The UTC run day this row was read from the similarity file."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When the ingest run that produced this row started (UTC).",
          "descriptions": {
            "ro": "Momentul (UTC) la care a pornit rularea care a produs acest rând.",
            "en": "When the ingest run that produced this row started (UTC)."
          }
        }
      ],
      "files": [
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/similar_stations.parquet",
          "sizeBytes": 676160,
          "rowCount": 65920,
          "etag": "\"a20b1d95bce1178974d49ec18a300696\"",
          "stats": {
            "target_station_code": {
              "min": "AL0203A",
              "max": "XK0012A"
            },
            "pollutant_label": {
              "min": "NO2",
              "max": "PM2.5"
            },
            "similarity_rank": {
              "min": 1,
              "max": 6
            }
          }
        }
      ],
      "example": [
        {
          "target_station_code": "AL0203A",
          "pollutant_label": "NO2",
          "similarity_rank": 2,
          "station_code": "MK0035A",
          "similarity_score": 0.986678719520569,
          "group_hash": "75a35a9403520fd1c3213604becb4ff4",
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        },
        {
          "target_station_code": "AL0203A",
          "pollutant_label": "NO2",
          "similarity_rank": 3,
          "station_code": "MK0044A",
          "similarity_score": 0.972892880439758,
          "group_hash": "75a35a9403520fd1c3213604becb4ff4",
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        }
      ]
    },
    {
      "name": "pollutants",
      "description": "The Eionet Data Dictionary vocabulary \"AQD - Pollutant\", landed as a lookup table: the 678 codes measurements.pollutant_code can take, with the symbol, the full name, the definition and the unit the Air Quality Directive makes mandatory for each. Without this table a reader has a column of bare integers; with it, `pollutant_code = 6001` is PM2.5.",
      "descriptions": {
        "ro": "Vocabularul „AQD - Pollutant” din Dicționarul de Date Eionet, adus ca tabel de căutare: cele 678 de coduri pe care le poate lua measurements.pollutant_code, cu simbolul, denumirea completă, definiția și unitatea pe care Directiva privind calitatea aerului o face obligatorie pentru fiecare. Fără acest tabel, cititorul are o coloană de numere întregi; cu el, `pollutant_code = 6001` înseamnă PM2.5.",
        "en": "The Eionet Data Dictionary vocabulary \"AQD - Pollutant\", landed as a lookup table: the 678 codes measurements.pollutant_code can take, with the symbol, the full name, the definition and the unit the Air Quality Directive makes mandatory for each. Without this table a reader has a column of bare integers; with it, `pollutant_code = 6001` is PM2.5."
      },
      "rowCount": 684,
      "lastRunRows": 684,
      "totalBytes": 17620,
      "sortBy": [
        "pollutant_code"
      ],
      "searchColumns": [],
      "primaryKey": [
        "pollutant_code"
      ],
      "writeMode": "replace",
      "storage": "lake",
      "source": "pollutant_vocabulary",
      "columns": [
        {
          "name": "pollutant_code",
          "type": "INTEGER",
          "nullable": false,
          "description": "The numeric code, parsed from the trailing segment of the concept URI. This is the value measurements.pollutant_code and sampling_points.pollutant_code carry.",
          "descriptions": {
            "ro": "Codul numeric, extras din ultimul segment al URI-ului conceptului. Este valoarea pe care o poartă measurements.pollutant_code și sampling_points.pollutant_code.",
            "en": "The numeric code, parsed from the trailing segment of the concept URI. This is the value measurements.pollutant_code and sampling_points.pollutant_code carry."
          },
          "min": 1,
          "max": 7910,
          "distinctApprox": 802
        },
        {
          "name": "notation",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The vocabulary’s Notation: the chemical symbol or short label the EEA uses everywhere else — \"SO2\", \"PM10\", \"PM2.5\", \"NOX as NO2\", \"Cd in PM10\". It is also the string sampling_point_index.pollutant_label and similar_stations.pollutant_label carry.",
          "descriptions": {
            "ro": "Notation-ul din vocabular: simbolul chimic sau eticheta scurtă pe care EEA le folosește peste tot în altă parte — „SO2”, „PM10”, „PM2.5”, „NOX as NO2”, „Cd in PM10”. Este și șirul pe care îl poartă sampling_point_index.pollutant_label și similar_stations.pollutant_label.",
            "en": "The vocabulary’s Notation: the chemical symbol or short label the EEA uses everywhere else — \"SO2\", \"PM10\", \"PM2.5\", \"NOX as NO2\", \"Cd in PM10\". It is also the string sampling_point_index.pollutant_label and similar_stations.pollutant_label carry."
          }
        },
        {
          "name": "label",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The vocabulary’s full English label, including the medium in brackets — \"Particulate matter < 2.5 µm (aerosol)\".",
          "descriptions": {
            "ro": "Eticheta completă în engleză din vocabular, inclusiv mediul indicat în paranteză — „Particulate matter < 2.5 µm (aerosol)”.",
            "en": "The vocabulary’s full English label, including the medium in brackets — \"Particulate matter < 2.5 µm (aerosol)\"."
          }
        },
        {
          "name": "definition",
          "type": "TEXT",
          "nullable": true,
          "description": "The vocabulary’s own definition of the concept, in full. Empty for many of the rarer codes, which the vocabulary defines by their label alone.",
          "descriptions": {
            "ro": "Definiția proprie a conceptului din vocabular, integral. Este goală pentru multe dintre codurile mai rare, pe care vocabularul le definește doar prin etichetă.",
            "en": "The vocabulary’s own definition of the concept, in full. Empty for many of the rarer codes, which the vocabulary defines by their label alone."
          }
        },
        {
          "name": "uri",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The concept URI. It is what the source’s AirPollutantCode column contains verbatim, so it is the string to match on when reading EEA data from anywhere else.",
          "descriptions": {
            "ro": "URI-ul conceptului. Este exact ce conține coloana AirPollutantCode a sursei, deci este șirul după care trebuie făcută potrivirea când citiți date EEA din altă parte.",
            "en": "The concept URI. It is what the source’s AirPollutantCode column contains verbatim, so it is the string to match on when reading EEA data from anywhere else."
          }
        },
        {
          "name": "status",
          "type": "VARCHAR",
          "nullable": true,
          "description": "Registration status of the concept in the Data Dictionary — \"valid\" for a code in current use, \"deprecated\" or \"superseded\" for one that has been retired. Retired codes still appear in historical measurements, which is why they are kept here.",
          "descriptions": {
            "ro": "Starea de înregistrare a conceptului în Dicționarul de Date — „valid” pentru un cod în uz curent, „deprecated” sau „superseded” pentru unul retras. Codurile retrase apar în continuare în măsurătorile istorice, motiv pentru care sunt păstrate aici.",
            "en": "Registration status of the concept in the Data Dictionary — \"valid\" for a code in current use, \"deprecated\" or \"superseded\" for one that has been retired. Retired codes still appear in historical measurements, which is why they are kept here."
          }
        },
        {
          "name": "accepted_date",
          "type": "DATE",
          "nullable": true,
          "description": "The day the concept was accepted into the vocabulary.",
          "descriptions": {
            "ro": "Ziua în care conceptul a fost acceptat în vocabular.",
            "en": "The day the concept was accepted into the vocabulary."
          }
        },
        {
          "name": "mandatory_unit",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The unit the vocabulary makes mandatory for this pollutant, as the last segment of its unit-of-measure URI — \"ug.m-3\", \"mg.m-3\". NULL where the vocabulary prescribes none, in which case measurements.unit is the only statement of the unit.",
          "descriptions": {
            "ro": "Unitatea pe care vocabularul o face obligatorie pentru acest poluant, ca ultim segment al URI-ului ei de unitate de măsură — „ug.m-3”, „mg.m-3”. Este null acolo unde vocabularul nu prescrie niciuna, caz în care measurements.unit este singura afirmație despre unitate.",
            "en": "The unit the vocabulary makes mandatory for this pollutant, as the last segment of its unit-of-measure URI — \"ug.m-3\", \"mg.m-3\". NULL where the vocabulary prescribes none, in which case measurements.unit is the only statement of the unit."
          }
        },
        {
          "name": "mandatory_unit_uri",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The full unit-of-measure URI, kept verbatim beside the segment parsed out of it.",
          "descriptions": {
            "ro": "URI-ul complet al unității de măsură, păstrat ca atare alături de segmentul extras din el.",
            "en": "The full unit-of-measure URI, kept verbatim beside the segment parsed out of it."
          }
        },
        {
          "name": "snapshot_date",
          "type": "DATE",
          "nullable": false,
          "description": "The UTC run day this row was read from the vocabulary.",
          "descriptions": {
            "ro": "Ziua de rulare (UTC) în care acest rând a fost citit din vocabular.",
            "en": "The UTC run day this row was read from the vocabulary."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When the ingest run that produced this row started (UTC).",
          "descriptions": {
            "ro": "Momentul (UTC) la care a pornit rularea care a produs acest rând.",
            "en": "When the ingest run that produced this row started (UTC)."
          }
        }
      ],
      "files": [
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/pollutants.parquet",
          "sizeBytes": 17620,
          "rowCount": 684,
          "etag": "\"0438293cfd845ec176dceed884ff17a2\"",
          "stats": {
            "pollutant_code": {
              "min": 1,
              "max": 7910
            }
          }
        }
      ],
      "example": [
        {
          "pollutant_code": 1,
          "notation": "SO2",
          "label": "Sulphur dioxide (air)",
          "definition": "SO2 - recommended unit: µg/m3",
          "uri": "http://dd.eionet.europa.eu/vocabulary/aq/pollutant/1",
          "status": "valid",
          "accepted_date": "2013-09-20T00:00:00.000Z",
          "mandatory_unit": "ug.m-3",
          "mandatory_unit_uri": "http://dd.eionet.europa.eu/vocabulary/uom/concentration/ug.m-3",
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        },
        {
          "pollutant_code": 3,
          "notation": "SA",
          "label": "Strong acidity (air)",
          "definition": "SA - recommended unit: µg SO2/m3",
          "uri": "http://dd.eionet.europa.eu/vocabulary/aq/pollutant/3",
          "status": "valid",
          "accepted_date": "2013-09-20T00:00:00.000Z",
          "mandatory_unit": null,
          "mandatory_unit_uri": null,
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        }
      ]
    },
    {
      "name": "validity_codes",
      "description": "The Eionet Data Dictionary vocabulary \"AQD - Observation Validity\", landed as a lookup table: what each measurements.validity value means. This is the table that tells a reader that -1 is \"not valid\" and 2 is \"valid, but below detection limit\" — the difference between an analysis and a wrong answer.",
      "descriptions": {
        "ro": "Vocabularul „AQD - Observation Validity” din Dicționarul de Date Eionet, adus ca tabel de căutare: ce înseamnă fiecare valoare a lui measurements.validity. Acesta este tabelul care îi spune cititorului că -1 înseamnă „nevalidă”, iar 2 înseamnă „validă, dar sub limita de detecție” — diferența dintre o analiză și un răspuns greșit.",
        "en": "The Eionet Data Dictionary vocabulary \"AQD - Observation Validity\", landed as a lookup table: what each measurements.validity value means. This is the table that tells a reader that -1 is \"not valid\" and 2 is \"valid, but below detection limit\" — the difference between an analysis and a wrong answer."
      },
      "rowCount": 6,
      "lastRunRows": 6,
      "totalBytes": 3005,
      "sortBy": [
        "code"
      ],
      "searchColumns": [],
      "primaryKey": [
        "code"
      ],
      "writeMode": "replace",
      "storage": "lake",
      "source": "validity_vocabulary",
      "columns": [
        {
          "name": "code",
          "type": "INTEGER",
          "nullable": false,
          "description": "The validity code, from the vocabulary’s Notation. Joins to measurements.validity.",
          "descriptions": {
            "ro": "Codul de validitate, din Notation-ul vocabularului. Se leagă de measurements.validity.",
            "en": "The validity code, from the vocabulary’s Notation. Joins to measurements.validity."
          },
          "min": -99,
          "max": 4,
          "distinctApprox": 5
        },
        {
          "name": "label",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The vocabulary’s English label for the code.",
          "descriptions": {
            "ro": "Eticheta în engleză a codului, din vocabular.",
            "en": "The vocabulary’s English label for the code."
          }
        },
        {
          "name": "definition",
          "type": "TEXT",
          "nullable": true,
          "description": "The vocabulary’s own definition, in full — including the separate rules it gives for primary data and for aggregated data.",
          "descriptions": {
            "ro": "Definiția proprie din vocabular, integral — inclusiv regulile separate pe care le dă pentru datele primare și pentru cele agregate.",
            "en": "The vocabulary’s own definition, in full — including the separate rules it gives for primary data and for aggregated data."
          }
        },
        {
          "name": "uri",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The concept URI.",
          "descriptions": {
            "ro": "URI-ul conceptului.",
            "en": "The concept URI."
          }
        },
        {
          "name": "snapshot_date",
          "type": "DATE",
          "nullable": false,
          "description": "The UTC run day this row was read from the vocabulary.",
          "descriptions": {
            "ro": "Ziua de rulare (UTC) în care acest rând a fost citit din vocabular.",
            "en": "The UTC run day this row was read from the vocabulary."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When the ingest run that produced this row started (UTC).",
          "descriptions": {
            "ro": "Momentul (UTC) la care a pornit rularea care a produs acest rând.",
            "en": "When the ingest run that produced this row started (UTC)."
          }
        }
      ],
      "files": [
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/validity_codes.parquet",
          "sizeBytes": 3005,
          "rowCount": 6,
          "etag": "\"35c8819bcbbddacda5b3da2480efc122\"",
          "stats": {
            "code": {
              "min": -99,
              "max": 4
            }
          }
        }
      ],
      "example": [
        {
          "code": -99,
          "label": "Not valid due to station maintenance or calibration",
          "definition": "Data is considered to be invalid due to the regular calibration or the normal maintenance of the instrumentation (only used for primary data).",
          "uri": "http://dd.eionet.europa.eu/vocabulary/aq/observationvalidity/-99",
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        },
        {
          "code": -1,
          "label": "Not valid",
          "definition": "For primary data, data is considered to be invalid due to other circumstances or data is simply missing.\r\n\r\nFor aggregated data, data is not valid because of insufficient data capture following rules set out in Directive and Guidance.",
          "uri": "http://dd.eionet.europa.eu/vocabulary/aq/observationvalidity/-1",
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        }
      ]
    },
    {
      "name": "verification_codes",
      "description": "The Eionet Data Dictionary vocabulary \"AQD - Observation Verification\", landed as a lookup table: what each measurements.verification value means. Verification is independent of validity — a value can be verified and invalid, or valid and not yet verified — and this table is where the source says so in its own words.",
      "descriptions": {
        "ro": "Vocabularul „AQD - Observation Verification” din Dicționarul de Date Eionet, adus ca tabel de căutare: ce înseamnă fiecare valoare a lui measurements.verification. Verificarea este independentă de validitate — o valoare poate fi verificată și nevalidă, sau validă și încă neverificată — iar acest tabel este locul unde sursa spune asta în cuvintele ei.",
        "en": "The Eionet Data Dictionary vocabulary \"AQD - Observation Verification\", landed as a lookup table: what each measurements.verification value means. Verification is independent of validity — a value can be verified and invalid, or valid and not yet verified — and this table is where the source says so in its own words."
      },
      "rowCount": 3,
      "lastRunRows": 3,
      "totalBytes": 2526,
      "sortBy": [
        "code"
      ],
      "searchColumns": [],
      "primaryKey": [
        "code"
      ],
      "writeMode": "replace",
      "storage": "lake",
      "source": "verification_vocabulary",
      "columns": [
        {
          "name": "code",
          "type": "INTEGER",
          "nullable": false,
          "description": "The verification code, from the vocabulary’s Notation. Joins to measurements.verification.",
          "descriptions": {
            "ro": "Codul de verificare, din Notation-ul vocabularului. Se leagă de measurements.verification.",
            "en": "The verification code, from the vocabulary’s Notation. Joins to measurements.verification."
          },
          "min": 1,
          "max": 3,
          "distinctApprox": 3
        },
        {
          "name": "label",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The vocabulary’s English label for the code.",
          "descriptions": {
            "ro": "Eticheta în engleză a codului, din vocabular.",
            "en": "The vocabulary’s English label for the code."
          }
        },
        {
          "name": "definition",
          "type": "TEXT",
          "nullable": true,
          "description": "The vocabulary’s own definition, in full.",
          "descriptions": {
            "ro": "Definiția proprie din vocabular, integral.",
            "en": "The vocabulary’s own definition, in full."
          }
        },
        {
          "name": "uri",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The concept URI.",
          "descriptions": {
            "ro": "URI-ul conceptului.",
            "en": "The concept URI."
          }
        },
        {
          "name": "snapshot_date",
          "type": "DATE",
          "nullable": false,
          "description": "The UTC run day this row was read from the vocabulary.",
          "descriptions": {
            "ro": "Ziua de rulare (UTC) în care acest rând a fost citit din vocabular.",
            "en": "The UTC run day this row was read from the vocabulary."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When the ingest run that produced this row started (UTC).",
          "descriptions": {
            "ro": "Momentul (UTC) la care a pornit rularea care a produs acest rând.",
            "en": "When the ingest run that produced this row started (UTC)."
          }
        }
      ],
      "files": [
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/verification_codes.parquet",
          "sizeBytes": 2526,
          "rowCount": 3,
          "etag": "\"ebcce6f24af68e5d0c6bf97bd28577ec\"",
          "stats": {
            "code": {
              "min": 1,
              "max": 3
            }
          }
        }
      ],
      "example": [
        {
          "code": 1,
          "label": "Verified",
          "definition": "Data has gone through full quality assurance and quality control by data provider/owner. Data is considered verified and can be formally used for its reporting purposes.",
          "uri": "http://dd.eionet.europa.eu/vocabulary/aq/observationverification/1",
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        },
        {
          "code": 2,
          "label": "Preliminary verified",
          "definition": "Data has gone through initial checks by data provider/owner. Extra quality assurance and quality control verifications have been carried out compared to \"Not verified\" data. Data Verification might be carried out on an ongoing basis and is nominally a process to \"clean-up\" the initial \"Not verified\" data. Any corrections to the data made during the verification process are changes the status flag to \"Preliminary verified\". The data with this data flag is considered provisional and can be used as provisional.  This flag is independant to the validity status.",
          "uri": "http://dd.eionet.europa.eu/vocabulary/aq/observationverification/2",
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        }
      ]
    },
    {
      "name": "aggregation_types",
      "description": "The Eionet Data Dictionary vocabulary \"AQD - Primary Observations Time\", landed as a lookup table: what each measurements.agg_type value means. The measurement files use only \"hour\", \"day\" and \"var\" today, but the vocabulary defines ten, and a country that starts reporting weekly or monthly values will land rows this table already explains.",
      "descriptions": {
        "ro": "Vocabularul „AQD - Primary Observations Time” din Dicționarul de Date Eionet, adus ca tabel de căutare: ce înseamnă fiecare valoare a lui measurements.agg_type. Fișierele de măsurători folosesc astăzi doar „hour”, „day” și „var”, dar vocabularul definește zece, iar o țară care începe să raporteze valori săptămânale sau lunare va aduce rânduri pe care acest tabel le explică deja.",
        "en": "The Eionet Data Dictionary vocabulary \"AQD - Primary Observations Time\", landed as a lookup table: what each measurements.agg_type value means. The measurement files use only \"hour\", \"day\" and \"var\" today, but the vocabulary defines ten, and a country that starts reporting weekly or monthly values will land rows this table already explains."
      },
      "rowCount": 10,
      "lastRunRows": 10,
      "totalBytes": 2872,
      "sortBy": [
        "code"
      ],
      "searchColumns": [],
      "primaryKey": [
        "code"
      ],
      "writeMode": "replace",
      "storage": "lake",
      "source": "aggregation_vocabulary",
      "columns": [
        {
          "name": "code",
          "type": "VARCHAR",
          "nullable": false,
          "description": "The aggregation code, from the vocabulary’s Notation. Joins to measurements.agg_type.",
          "descriptions": {
            "ro": "Codul de agregare, din Notation-ul vocabularului. Se leagă de measurements.agg_type.",
            "en": "The aggregation code, from the vocabulary’s Notation. Joins to measurements.agg_type."
          },
          "min": "day",
          "max": "year",
          "distinctApprox": 10
        },
        {
          "name": "label",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The vocabulary’s English label for the code.",
          "descriptions": {
            "ro": "Eticheta în engleză a codului, din vocabular.",
            "en": "The vocabulary’s English label for the code."
          }
        },
        {
          "name": "definition",
          "type": "TEXT",
          "nullable": true,
          "description": "The vocabulary’s own definition, where it gives one.",
          "descriptions": {
            "ro": "Definiția proprie din vocabular, acolo unde dă una.",
            "en": "The vocabulary’s own definition, where it gives one."
          }
        },
        {
          "name": "uri",
          "type": "VARCHAR",
          "nullable": true,
          "description": "The concept URI.",
          "descriptions": {
            "ro": "URI-ul conceptului.",
            "en": "The concept URI."
          }
        },
        {
          "name": "snapshot_date",
          "type": "DATE",
          "nullable": false,
          "description": "The UTC run day this row was read from the vocabulary.",
          "descriptions": {
            "ro": "Ziua de rulare (UTC) în care acest rând a fost citit din vocabular.",
            "en": "The UTC run day this row was read from the vocabulary."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When the ingest run that produced this row started (UTC).",
          "descriptions": {
            "ro": "Momentul (UTC) la care a pornit rularea care a produs acest rând.",
            "en": "When the ingest run that produced this row started (UTC)."
          }
        }
      ],
      "files": [
        {
          "url": "https://data-directory.fsn1.your-objectstorage.com/public/eea-air-quality/v/01M5JGPAY7D0MJB0EEY6TZAFJ3/aggregation_types.parquet",
          "sizeBytes": 2872,
          "rowCount": 10,
          "etag": "\"86d93527e08510d5420329294cd761dd\"",
          "stats": {
            "code": {
              "min": "day",
              "max": "year"
            }
          }
        }
      ],
      "example": [
        {
          "code": "day",
          "label": "Daily average/mean",
          "definition": "The daily average or daily mean derived from a sample period of one day.",
          "uri": "http://dd.eionet.europa.eu/vocabulary/aq/primaryObservation/day",
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        },
        {
          "code": "dc",
          "label": "Data Capture",
          "definition": "The data capture associated with a primary observation. This primary observation parameter is the percentage of the time envelope defined by its start and end time for which a sample or observation has been made or taken. It is essential for sampler based measurements where (i) random measurements operate over the time envelope defined, (ii) where samples are frequently not taken for the complete sampling envelope and (ii) for samples bulked for analysis. In these cases time weight concentrations estimates are calculated using the value domain of the \"dc\" field.\r\n\r\nFor automatic measurements the value will frequently not be stored in local systems as hourly means derived from <75% dc are discarded. At best the dc rate will be known to  >=75% (as a valid hourly mean for example). For automatic measurements return -99 or -999 for the value domain of the \"dc\" field.",
          "uri": "http://dd.eionet.europa.eu/vocabulary/aq/primaryObservation/dc",
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T19:16:33.351Z"
        }
      ]
    }
  ],
  "generatedAt": "2026-10-22T19:29:35.857Z"
}
