{
  "manifestVersion": 1,
  "dataset": {
    "id": "ghcn-daily",
    "name": "GHCN-Daily: global daily weather observations",
    "description": "The global daily weather observation archive NOAA publishes as the Global Historical Climatology Network – Daily, kept in the source’s own long form — one row per station, day and element: maximum and minimum temperature, precipitation, snow, wind, pressure, humidity, sunshine, soil temperature and weather types. About 3.2 billion measurements from 132,501 stations worldwide, some reaching back to 1750, plus the 782,538-row inventory saying which years and elements each station covers. REFERENCED LIVE, NOT COPIED: five of the six tables — observations, stations, inventory, countries, states — are published as views over NOAA’s own public AWS Open Data bucket, so no row of them is stored in this directory’s lake and every query reads NOAA directly. That means the data is always exactly what NOAA publishes right now, which matters more here than for most sources: NOAA reprocesses its ENTIRE period of record every day, so a stored copy would freeze yesterday’s revision of an archive that runs from 1763 to today. It also means there is no history of what a value used to say before NOAA revised it, no row counts or column statistics of our own, and a query needs network access to s3://noaa-ghcn-pds (public, no credentials). The sixth table, elements, IS stored here as ordinary parquet — all 213 documented measurement types rather than a curated handful — because it is transcribed from the source’s prose readme and has no upstream file to read live. Every observation row carries both the integer NOAA published and the value converted to its real unit, alongside the quality, measurement and source flags that say how far to trust it.",
    "descriptions": {
      "ro": "Arhiva zilnică globală a observațiilor meteorologice, publicată de NOAA sub numele Global Historical Climatology Network – Daily, păstrată în forma „lungă” a sursei — câte un rând pentru fiecare stație, zi și element măsurat: temperaturi maxime și minime, precipitații, zăpadă, vânt, presiune, umiditate, durata de strălucire a soarelui, temperatura solului și fenomene meteorologice. Aproximativ 3,2 miliarde de măsurători de la 132.501 stații din întreaga lume, unele începând din anul 1750, plus inventarul de 782.538 de rânduri care arată ce ani și ce elemente acoperă fiecare stație. REFERENȚIATĂ ÎN DIRECT, NU COPIATĂ: cinci dintre cele șase tabele — observations, stations, inventory, countries, states — sunt publicate ca vizualizări (views) peste depozitul public AWS Open Data al NOAA, deci niciun rând al lor nu este stocat în lacul de date al acestui director, iar fiecare interogare citește direct de la NOAA. Asta înseamnă că datele sunt întotdeauna exact ceea ce publică NOAA în acest moment, ceea ce contează aici mai mult decât la alte surse: NOAA reprocesează ZILNIC întreaga perioadă acoperită, așa că o copie stocată ar îngheța revizuirea de ieri a unei arhive care merge din 1763 până astăzi. Înseamnă însă și că nu există niciun istoric al valorilor dinaintea revizuirilor NOAA, nu există numărători de rânduri sau statistici proprii pe coloane, iar o interogare are nevoie de acces în rețea la s3://noaa-ghcn-pds (public, fără credențiale). Al șaselea tabel, elements, ESTE stocat aici ca fișier parquet obișnuit — toate cele 213 tipuri de măsurători documentate, nu doar câteva — pentru că este transcris din documentația în proză a sursei și nu are un fișier în amonte care să poată fi citit în direct. Fiecare rând de observație păstrează atât numărul întreg publicat de NOAA, cât și valoarea convertită în unitatea reală, împreună cu indicatorii de calitate, de măsurare și de sursă.",
      "en": "The global daily weather observation archive NOAA publishes as the Global Historical Climatology Network – Daily, kept in the source’s own long form — one row per station, day and element: maximum and minimum temperature, precipitation, snow, wind, pressure, humidity, sunshine, soil temperature and weather types. About 3.2 billion measurements from 132,501 stations worldwide, some reaching back to 1750, plus the 782,538-row inventory saying which years and elements each station covers. REFERENCED LIVE, NOT COPIED: five of the six tables — observations, stations, inventory, countries, states — are published as views over NOAA’s own public AWS Open Data bucket, so no row of them is stored in this directory’s lake and every query reads NOAA directly. That means the data is always exactly what NOAA publishes right now, which matters more here than for most sources: NOAA reprocesses its ENTIRE period of record every day, so a stored copy would freeze yesterday’s revision of an archive that runs from 1763 to today. It also means there is no history of what a value used to say before NOAA revised it, no row counts or column statistics of our own, and a query needs network access to s3://noaa-ghcn-pds (public, no credentials). The sixth table, elements, IS stored here as ordinary parquet — all 213 documented measurement types rather than a curated handful — because it is transcribed from the source’s prose readme and has no upstream file to read live. Every observation row carries both the integer NOAA published and the value converted to its real unit, alongside the quality, measurement and source flags that say how far to trust it."
    },
    "names": {
      "ro": "GHCN-Daily: observații meteorologice zilnice la nivel mondial",
      "en": "GHCN-Daily: global daily weather observations"
    },
    "sourceUrl": "https://registry.opendata.aws/noaa-ghcn/",
    "license": {
      "id": "CC0-1.0",
      "name": "Creative Commons Zero v1.0 Universal (US Government work, public domain)",
      "url": "https://www.ncei.noaa.gov/access/crn/pdf/NOAA-Data-Policy.pdf",
      "attribution": "Data from the NOAA National Centers for Environmental Information, Global Historical Climatology Network – Daily (GHCN-Daily), Version 3. Menne, M.J., I. Durre, B. Korzeniewski, S. McNeill, K. Thomas, X. Yin, S. Anthony, R. Ray, R.S. Vose, B.E. Gleason and T.G. Houston, 2012. doi:10.7289/V5D21VHZ.",
      "notes": "GHCN-Daily is a work of the United States federal government, produced by NOAA’s National Centers for Environmental Information, and US federal works carry no copyright under 17 U.S.C. §105. NOAA’s data policy places its data in the public domain and asks for acknowledgement rather than requiring it; the AWS Open Data registry entry for s3://noaa-ghcn-pds states the same. Redistribution is therefore permitted, and CC0-1.0 is the closest SPDX identifier to \"no rights reserved, attribution requested\". IMPORTANT CAVEATS FOR A REUSER. (1) GHCN-Daily is an AGGREGATE: it merges data from many national and regional meteorological services — Environment Canada, the Australian Bureau of Meteorology, the European Climate Assessment and Dataset, the China Meteorological Administration, CONAGUA, the Fiji Met Service, several African services whose data was previously withheld pending permission, and about twenty more, each identified by the source_flag column. Those providers’ own terms may differ from NOAA’s for their contribution, and a reuser redistributing a subset should check the flag. NOAA publishes the merged product openly, and that is what is republished here. (2) Values that FAILED a quality check are published, not removed: a non-null quality_flag means the value failed the check that letter names. Presenting flagged values as measurements without saying so misrepresents the source. (3) Values are model-free observations, but TAVG from source flag \"S\" is derived from hourly synoptic reports and can differ significantly from a true daily mean, particularly for precipitation — the readme says so explicitly. (4) What is republished is a derived work: the source’s own columns, reshaped, with a scaled value and the element catalogue added. (5) For five of the six tables nothing is redistributed at all — they are published as views over NOAA’s own bucket, so what is offered is the reshaping, not the bytes, and a reader’s query fetches the data from NOAA under NOAA’s terms directly. Only `elements`, transcribed from the source readme, is actually stored and served here."
    },
    "cadence": "daily",
    "tags": [
      "weather",
      "climate",
      "noaa",
      "ghcn",
      "observations",
      "temperature",
      "precipitation"
    ],
    "sources": [
      {
        "key": "observations",
        "kind": "parquet",
        "description": "GHCN-Daily observations for 1 year(s) on the NOAA AWS Open Data bucket.",
        "access": "public",
        "location": "s3://noaa-ghcn-pds/parquet/by_year/YEAR=2026/*/*.parquet",
        "extensions": [
          "httpfs"
        ],
        "secrets": [
          {
            "name": "noaa_ghcn_pds",
            "type": "s3",
            "scope": [
              "s3://noaa-ghcn-pds"
            ],
            "env": [],
            "literals": [
              {
                "key": "PROVIDER",
                "value": "config"
              },
              {
                "key": "REGION",
                "value": "us-east-1"
              }
            ]
          }
        ],
        "attach": [],
        "requiresEnv": [],
        "relation": "read_parquet('s3://noaa-ghcn-pds/parquet/by_year/YEAR=2026/*/*.parquet', hive_partitioning = true, union_by_name = true)"
      },
      {
        "key": "stations",
        "kind": "csv",
        "description": "Fixed-width station metadata: id, coordinates, elevation, state, name, GSN and HCN/CRN flags, WMO id.",
        "access": "public",
        "location": "s3://noaa-ghcn-pds/ghcnd-stations.txt",
        "extensions": [
          "httpfs"
        ],
        "secrets": [
          {
            "name": "noaa_ghcn_pds",
            "type": "s3",
            "scope": [
              "s3://noaa-ghcn-pds"
            ],
            "env": [],
            "literals": [
              {
                "key": "PROVIDER",
                "value": "config"
              },
              {
                "key": "REGION",
                "value": "us-east-1"
              }
            ]
          }
        ],
        "attach": [],
        "requiresEnv": [],
        "relation": "read_csv('s3://noaa-ghcn-pds/ghcnd-stations.txt', header = false, normalize_names = false, sample_size = -1, delim = '\u0007', quote = '', escape = '', columns = {'line': 'VARCHAR'})"
      },
      {
        "key": "countries",
        "kind": "csv",
        "description": "Fixed-width list of the FIPS country codes used in the first two characters of a station id.",
        "access": "public",
        "location": "s3://noaa-ghcn-pds/ghcnd-countries.txt",
        "extensions": [
          "httpfs"
        ],
        "secrets": [
          {
            "name": "noaa_ghcn_pds",
            "type": "s3",
            "scope": [
              "s3://noaa-ghcn-pds"
            ],
            "env": [],
            "literals": [
              {
                "key": "PROVIDER",
                "value": "config"
              },
              {
                "key": "REGION",
                "value": "us-east-1"
              }
            ]
          }
        ],
        "attach": [],
        "requiresEnv": [],
        "relation": "read_csv('s3://noaa-ghcn-pds/ghcnd-countries.txt', header = false, normalize_names = false, sample_size = -1, delim = '\u0007', quote = '', escape = '', columns = {'line': 'VARCHAR'})"
      },
      {
        "key": "states",
        "kind": "csv",
        "description": "Fixed-width list of the US state and Canadian province codes used in ghcnd-stations.txt.",
        "access": "public",
        "location": "s3://noaa-ghcn-pds/ghcnd-states.txt",
        "extensions": [
          "httpfs"
        ],
        "secrets": [
          {
            "name": "noaa_ghcn_pds",
            "type": "s3",
            "scope": [
              "s3://noaa-ghcn-pds"
            ],
            "env": [],
            "literals": [
              {
                "key": "PROVIDER",
                "value": "config"
              },
              {
                "key": "REGION",
                "value": "us-east-1"
              }
            ]
          }
        ],
        "attach": [],
        "requiresEnv": [],
        "relation": "read_csv('s3://noaa-ghcn-pds/ghcnd-states.txt', header = false, normalize_names = false, sample_size = -1, delim = '\u0007', quote = '', escape = '', columns = {'line': 'VARCHAR'})"
      },
      {
        "key": "inventory",
        "kind": "csv",
        "description": "Fixed-width period-of-record index: one line per station and element, with its first and last year.",
        "access": "public",
        "location": "s3://noaa-ghcn-pds/ghcnd-inventory.txt",
        "extensions": [
          "httpfs"
        ],
        "secrets": [
          {
            "name": "noaa_ghcn_pds",
            "type": "s3",
            "scope": [
              "s3://noaa-ghcn-pds"
            ],
            "env": [],
            "literals": [
              {
                "key": "PROVIDER",
                "value": "config"
              },
              {
                "key": "REGION",
                "value": "us-east-1"
              }
            ]
          }
        ],
        "attach": [],
        "requiresEnv": [],
        "relation": "read_csv('s3://noaa-ghcn-pds/ghcnd-inventory.txt', header = false, normalize_names = false, sample_size = -1, delim = '\u0007', quote = '', escape = '', columns = {'line': 'VARCHAR'})"
      }
    ]
  },
  "ingest": {
    "id": "01M5GS2HENV35C87PAWCVAV4ZY",
    "startedAt": "2026-10-22T03:04:32.981Z",
    "snapshotDate": "2026-10-22",
    "catalogSnapshotId": 21,
    "params": {
      "years": "current"
    }
  },
  "baseUrl": "https://data-directory.fsn1.your-objectstorage.com/public/ghcn-daily",
  "catalog": {
    "url": "https://data-directory.fsn1.your-objectstorage.com/catalog/ghcn-daily/v/01M5GS2HENV35C87PAWCVAV4ZY/catalog.ducklake",
    "latestUrl": "https://data-directory.fsn1.your-objectstorage.com/catalog/ghcn-daily/catalog.ducklake",
    "sha256": "7c93a081bb28697f9d2d65390738443fe6c9b28218d20f5cd2676a7e40517712",
    "duckdbVersion": "v1.5.5",
    "attachExample": "ATTACH 'ducklake:https://data-directory.fsn1.your-objectstorage.com/catalog/ghcn-daily/catalog.ducklake' AS lake (READ_ONLY); SELECT * FROM lake.main.elements LIMIT 5;"
  },
  "queryHints": {
    "examples": [
      {
        "title": "A station’s temperature series, in real units",
        "sql": "SELECT o.obs_date, o.scaled_value AS tmax_c\nFROM observations o\nWHERE o.obs_year BETWEEN 2020 AND 2026\n  AND o.element = 'TMAX'\n  AND o.station_id = 'ROE00100899'\n  AND o.quality_flag IS NULL\nORDER BY o.obs_date;",
        "description": "observations is a view over NOAA’s bucket, so what prunes here is NOAA’s own layout, not ours: the archive is Hive-partitioned YEAR=/ELEMENT=, and obs_year plus element are exactly those two partition keys, so this reads a handful of the 14,032 files rather than the archive. Keep both predicates — dropping the year turns it into a full scan of every year’s TMAX. quality_flag IS NULL keeps only values that passed every check."
      },
      {
        "title": "Which stations have a century of maximum temperature",
        "sql": "SELECT s.name, s.country_code, i.first_year, i.last_year\nFROM inventory i\nJOIN stations s USING (station_id)\nWHERE i.element = 'TMAX' AND i.first_year <= 1900 AND i.last_year >= 2020\nORDER BY i.first_year;",
        "description": "Answered from the 782,538-row inventory rather than from the fact table — the reason inventory is published as its own table. Both are views, so this reads two small fixed-width files at the bucket root instead of three billion observation rows."
      },
      {
        "title": "Everything one station measured on one day, with names and units",
        "sql": "SELECT e.name, o.scaled_value, e.unit, o.quality_flag\nFROM observations o\nJOIN elements e ON e.element_code = o.element\nWHERE o.obs_year = 2024\n  AND o.obs_date = DATE '2024-07-14'\n  AND o.station_id = 'ROE00100899'\nORDER BY e.element_group, e.name;",
        "description": "The join that makes the long format readable: elements turns four-letter codes into names and units, and says which values are indicators rather than measurements. It is also the one table here that is stored in our lake rather than read from NOAA, so this query joins a federated view to a real parquet table in a single statement."
      },
      {
        "title": "Wettest day of each year in one country",
        "sql": "SELECT o.obs_year, s.name, max(o.scaled_value) AS mm\nFROM observations o\nJOIN stations s USING (station_id)\nWHERE o.element = 'PRCP' AND s.country_code = 'RO' AND o.quality_flag IS NULL\nGROUP BY 1, 2\nQUALIFY row_number() OVER (PARTITION BY o.obs_year ORDER BY mm DESC) = 1\nORDER BY 1 DESC;",
        "description": "The expensive one against a federated observations: element prunes to NOAA’s PRCP partitions, but with no obs_year predicate this reads every one of the 265 years off S3. Add AND o.obs_year >= 1950 unless the whole archive is genuinely wanted."
      }
    ]
  },
  "tables": [
    {
      "name": "elements",
      "description": "What each of the 213 GHCN-Daily element codes measures, in which unit, and by what factor its stored integer must be divided to get there. Transcribed from section III of the source’s own readme.txt. This is the table that makes observations readable: without it ADPT, SN35 and WT11 are three opaque codes, and a value column whose scale silently changes between rows. It covers the whole documented code space, which is a superset of the 144 codes the archive currently uses, so a code NOAA starts publishing tomorrow already has a name here. This is the ONE table of this dataset that is genuinely STORED in the lake as parquet: the other five are views over NOAA’s bucket, but the readme is prose rather than a machine-readable file, so there is nothing upstream to read live. It therefore has a real row count, real column statistics and DuckLake history, and joining to it from observations costs nothing over the network.",
      "descriptions": {
        "ro": "Ce măsoară fiecare dintre cele 213 coduri de element din GHCN-Daily, în ce unitate și la ce factor trebuie împărțit numărul întreg stocat pentru a ajunge la ea. Transcris din secțiunea III a documentației readme.txt a sursei. Acesta este tabelul care face ca observations să poată fi citit: fără el, ADPT, SN35 și WT11 sunt trei coduri opace, iar coloana de valori are o scară care se schimbă discret de la un rând la altul. Acoperă întregul spațiu de coduri documentat, care este mai larg decât cele 144 de coduri folosite în prezent în arhivă, astfel încât un cod pe care NOAA începe să îl publice mâine are deja o denumire aici. Este SINGURUL tabel al acestui set de date care este cu adevărat STOCAT în lacul de date sub formă de fișiere parquet: celelalte cinci sunt vizualizări peste depozitul NOAA, însă documentația sursei este text în proză, nu un fișier care poate fi citit automat, deci nu există nimic în amonte care să fie citit în direct. Prin urmare are un număr real de rânduri, statistici reale pe coloane și istoric DuckLake, iar legătura cu el din observations nu costă nimic în rețea.",
        "en": "What each of the 213 GHCN-Daily element codes measures, in which unit, and by what factor its stored integer must be divided to get there. Transcribed from section III of the source’s own readme.txt. This is the table that makes observations readable: without it ADPT, SN35 and WT11 are three opaque codes, and a value column whose scale silently changes between rows. It covers the whole documented code space, which is a superset of the 144 codes the archive currently uses, so a code NOAA starts publishing tomorrow already has a name here. This is the ONE table of this dataset that is genuinely STORED in the lake as parquet: the other five are views over NOAA’s bucket, but the readme is prose rather than a machine-readable file, so there is nothing upstream to read live. It therefore has a real row count, real column statistics and DuckLake history, and joining to it from observations costs nothing over the network."
      },
      "rowCount": 213,
      "lastRunRows": 213,
      "totalBytes": 14602,
      "sortBy": [
        "element_code"
      ],
      "searchColumns": [],
      "primaryKey": [
        "element_code"
      ],
      "writeMode": "replace",
      "storage": "lake",
      "columns": [
        {
          "name": "element_code",
          "type": "VARCHAR",
          "nullable": false,
          "description": "The four-character code as it appears in observations.element.",
          "descriptions": {
            "ro": "Codul de patru caractere, așa cum apare în observations.element.",
            "en": "The four-character code as it appears in observations.element."
          },
          "min": "ACMC",
          "max": "WV20",
          "distinctApprox": 178
        },
        {
          "name": "name",
          "type": "VARCHAR",
          "nullable": false,
          "description": "What the code measures, in English.",
          "descriptions": {
            "ro": "Ce măsoară codul, în engleză.",
            "en": "What the code measures, in English."
          }
        },
        {
          "name": "name_ro",
          "type": "VARCHAR",
          "nullable": false,
          "description": "What the code measures, in Romanian.",
          "descriptions": {
            "ro": "Ce măsoară codul, în română.",
            "en": "What the code measures, in Romanian."
          }
        },
        {
          "name": "element_group",
          "type": "VARCHAR",
          "nullable": false,
          "description": "Family the code belongs to, in English, so 213 rows can be browsed rather than scanned: temperature, precipitation, snow, wind, pressure, humidity, sunshine, cloud, soil, ground, evaporation, multiday, weather-type, other.",
          "descriptions": {
            "ro": "Familia din care face parte codul, în engleză, pentru ca cele 213 rânduri să poată fi parcurse pe categorii: temperature, precipitation, snow, wind, pressure, humidity, sunshine, cloud, soil, ground, evaporation, multiday, weather-type, other.",
            "en": "Family the code belongs to, in English, so 213 rows can be browsed rather than scanned: temperature, precipitation, snow, wind, pressure, humidity, sunshine, cloud, soil, ground, evaporation, multiday, weather-type, other."
          }
        },
        {
          "name": "element_group_ro",
          "type": "VARCHAR",
          "nullable": false,
          "description": "The same family name, in Romanian.",
          "descriptions": {
            "ro": "Aceeași denumire de familie, în română.",
            "en": "The same family name, in Romanian."
          }
        },
        {
          "name": "unit",
          "type": "VARCHAR",
          "nullable": false,
          "description": "The unit observations.scaled_value is expressed in for this code: °C, mm, m/s, hPa, %, degrees, cm, km, minutes, days, HHMM, or indicator.",
          "descriptions": {
            "ro": "Unitatea în care este exprimată valoarea observations.scaled_value pentru acest cod: °C, mm, m/s, hPa, %, grade, cm, km, minute, zile, HHMM sau indicator.",
            "en": "The unit observations.scaled_value is expressed in for this code: °C, mm, m/s, hPa, %, degrees, cm, km, minutes, days, HHMM, or indicator."
          }
        },
        {
          "name": "scale_factor",
          "type": "INTEGER",
          "nullable": false,
          "description": "What observations.data_value is divided by to reach `unit`. 10 for everything the readme calls \"tenths of…\" or \"* 10\"; 1 where the stored integer already is the measurement. Getting this wrong produces a plausible wrong number rather than an error, which is why it is published as data rather than left to the reader.",
          "descriptions": {
            "ro": "Numărul la care se împarte observations.data_value pentru a ajunge la unitatea din coloana unit. Este 10 pentru tot ce documentația numește „zecimi de…” sau „× 10” și 1 acolo unde numărul întreg stocat este deja măsurătoarea. O greșeală aici produce un număr greșit, dar plauzibil, în loc de o eroare — de aceea este publicat ca dată, nu lăsat în seama cititorului.",
            "en": "What observations.data_value is divided by to reach `unit`. 10 for everything the readme calls \"tenths of…\" or \"* 10\"; 1 where the stored integer already is the measurement. Getting this wrong produces a plausible wrong number rather than an error, which is why it is published as data rather than left to the reader."
          }
        },
        {
          "name": "stored_unit",
          "type": "VARCHAR",
          "nullable": false,
          "description": "The unit observations.data_value itself is in, in the readme’s own words.",
          "descriptions": {
            "ro": "Unitatea în care este exprimată chiar valoarea observations.data_value, în termenii documentației sursei.",
            "en": "The unit observations.data_value itself is in, in the readme’s own words."
          }
        },
        {
          "name": "stored_unit_ro",
          "type": "VARCHAR",
          "nullable": false,
          "description": "The same stored unit, in Romanian.",
          "descriptions": {
            "ro": "Aceeași unitate de stocare, în română.",
            "en": "The same stored unit, in Romanian."
          }
        },
        {
          "name": "is_indicator",
          "type": "BOOLEAN",
          "nullable": false,
          "description": "True when the value is not a measurement on a scale at all — a clock time written HHMM (FMTM, PGTM) or a yes/no weather-type flag (WT**, WV**). Averaging data_value or scaled_value for these codes is meaningless; counting rows is what they are for.",
          "descriptions": {
            "ro": "Adevărat atunci când valoarea nu este o măsurătoare pe o scară, ci o oră scrisă HHMM (FMTM, PGTM) sau un indicator de tip da/nu pentru un fenomen meteorologic (WT**, WV**). Media valorilor data_value sau scaled_value nu are sens pentru aceste coduri; numărarea rândurilor este utilizarea lor firească.",
            "en": "True when the value is not a measurement on a scale at all — a clock time written HHMM (FMTM, PGTM) or a yes/no weather-type flag (WT**, WV**). Averaging data_value or scaled_value for these codes is meaningless; counting rows is what they are for."
          }
        },
        {
          "name": "definition",
          "type": "TEXT",
          "nullable": false,
          "description": "The source readme’s definition of the code, in English.",
          "descriptions": {
            "ro": "Definiția codului din documentația sursei, în engleză.",
            "en": "The source readme’s definition of the code, in English."
          }
        },
        {
          "name": "definition_ro",
          "type": "TEXT",
          "nullable": false,
          "description": "The source readme’s definition of the code, in Romanian.",
          "descriptions": {
            "ro": "Definiția codului din documentația sursei, în română.",
            "en": "The source readme’s definition of the code, in Romanian."
          }
        },
        {
          "name": "snapshot_date",
          "type": "DATE",
          "nullable": false,
          "description": "The run day (UTC) this lookup was written.",
          "descriptions": {
            "ro": "Ziua rulării (UTC) în care a fost scris acest tabel de referință.",
            "en": "The run day (UTC) this lookup was written."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When the ingest run that produced this row started (UTC).",
          "descriptions": {
            "ro": "Momentul, în UTC, la care a început 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/ghcn-daily/v/01M5GS2HENV35C87PAWCVAV4ZY/elements.parquet",
          "sizeBytes": 14602,
          "rowCount": 213,
          "etag": "\"311c5653823e97beb21174fb57dd6f1b\"",
          "stats": {
            "element_code": {
              "min": "ACMC",
              "max": "WV20"
            }
          }
        }
      ],
      "example": [
        {
          "element_code": "ACMC",
          "name": "Average cloudiness, midnight to midnight (ceilometer)",
          "name_ro": "Nebulozitate medie, de la miezul nopții la miezul nopții (ceilometru)",
          "element_group": "cloud",
          "element_group_ro": "nebulozitate",
          "unit": "%",
          "scale_factor": 1,
          "stored_unit": "whole percent",
          "stored_unit_ro": "procente întregi",
          "is_indicator": false,
          "definition": "Average cloudiness from midnight to midnight, derived from 30-second ceilometer data.",
          "definition_ro": "Nebulozitatea medie de la miezul nopții la miezul nopții, calculată din date de ceilometru la interval de 30 de secunde.",
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T03:04:32.981Z"
        },
        {
          "element_code": "ACMH",
          "name": "Average cloudiness, midnight to midnight (manual)",
          "name_ro": "Nebulozitate medie, de la miezul nopții la miezul nopții (manual)",
          "element_group": "cloud",
          "element_group_ro": "nebulozitate",
          "unit": "%",
          "scale_factor": 1,
          "stored_unit": "whole percent",
          "stored_unit_ro": "procente întregi",
          "is_indicator": false,
          "definition": "Average cloudiness from midnight to midnight, from manual observations.",
          "definition_ro": "Nebulozitatea medie de la miezul nopții la miezul nopții, din observații manuale.",
          "snapshot_date": "2026-10-22T00:00:00.000Z",
          "ingested_at": "2026-10-22T03:04:32.981Z"
        }
      ]
    },
    {
      "name": "observations",
      "description": "One row per station, calendar day and element — the whole of GHCN-Daily in the source’s own long form. FEDERATED: nothing is stored here, this is a view over NOAA’s own Hive-partitioned Parquet on s3://noaa-ghcn-pds, so every query reads NOAA live and always sees the archive as NOAA reprocessed it most recently — including revisions to rows two centuries old, and with no record of what those rows said before. `element` says what was measured (join to `elements` for its name and unit), `data_value` is the integer NOAA published and `scaled_value` is that integer converted to the unit `elements.unit` names. Values that FAILED a quality check are present, not removed: `quality_flag` is how you exclude them, and `quality_flag IS NULL` is the filter almost every analysis wants.",
      "descriptions": {
        "ro": "Câte un rând pentru fiecare stație, zi calendaristică și element măsurat — întreaga arhivă GHCN-Daily, în forma „lungă” a sursei. FEDERAT: nu se stochează nimic aici, este o vizualizare peste fișierele Parquet partiționate ale NOAA de pe s3://noaa-ghcn-pds, deci fiecare interogare citește direct de la NOAA și vede întotdeauna arhiva așa cum a reprocesat-o NOAA cel mai recent — inclusiv revizuiri ale unor rânduri vechi de două secole și fără nicio urmă a ceea ce spuneau acele rânduri înainte. Coloana `element` arată ce s-a măsurat (se face legătura cu tabelul `elements` pentru denumire și unitate), `data_value` este numărul întreg publicat de NOAA, iar `scaled_value` este acel număr convertit în unitatea indicată de `elements.unit`. Valorile care NU au trecut verificările de calitate sunt păstrate, nu eliminate: `quality_flag` este coloana prin care le excludeți, iar `quality_flag IS NULL` este filtrul potrivit pentru aproape orice analiză.",
        "en": "One row per station, calendar day and element — the whole of GHCN-Daily in the source’s own long form. FEDERATED: nothing is stored here, this is a view over NOAA’s own Hive-partitioned Parquet on s3://noaa-ghcn-pds, so every query reads NOAA live and always sees the archive as NOAA reprocessed it most recently — including revisions to rows two centuries old, and with no record of what those rows said before. `element` says what was measured (join to `elements` for its name and unit), `data_value` is the integer NOAA published and `scaled_value` is that integer converted to the unit `elements.unit` names. Values that FAILED a quality check are present, not removed: `quality_flag` is how you exclude them, and `quality_flag IS NULL` is the filter almost every analysis wants."
      },
      "rowCount": 0,
      "totalBytes": 0,
      "sortBy": [
        "obs_year",
        "element",
        "station_id",
        "obs_date"
      ],
      "searchColumns": [],
      "primaryKey": [
        "station_id",
        "obs_date",
        "element"
      ],
      "writeMode": "snapshot_history",
      "storage": "view",
      "source": "observations",
      "view": {
        "sql": "SELECT\n  \"ID\"                             AS station_id,\n  strptime(\"DATE\", '%Y%m%d')::DATE AS obs_date,\n  \"ELEMENT\"                        AS element,\n  CAST(\"YEAR\" AS INTEGER)          AS obs_year,\n  \"DATA_VALUE\"                     AS data_value,\n  CASE\n    WHEN \"ELEMENT\" IN ('SNOW', 'SNWD', 'ACMC', 'ACMH', 'ACSC', 'ACSH', 'AWDR', 'DAEV', 'DAPR', 'DASF', 'DATN', 'DATX', 'DAWM', 'DWPR', 'FMTM', 'FRGB', 'FRGT', 'FRTH', 'GAHT', 'MDSF', 'MDWM', 'PGTM', 'PSUN', 'RHAV', 'RHMN', 'RHMX', 'TSUN', 'WDF1', 'WDF2', 'WDF5', 'WDFG', 'WDFI', 'WDFM', 'WDMV', 'WT01', 'WT02', 'WT03', 'WT04', 'WT05', 'WT06', 'WT07', 'WT08', 'WT09', 'WT10', 'WT11', 'WT12', 'WT13', 'WT14', 'WT15', 'WT16', 'WT17', 'WT18', 'WT19', 'WT21', 'WT22', 'WV01', 'WV03', 'WV07', 'WV18', 'WV20') THEN \"DATA_VALUE\" / 1.0\n    WHEN \"ELEMENT\" IN ('PRCP', 'TMAX', 'TMIN', 'ADPT', 'ASLP', 'ASTP', 'AWBT', 'AWND', 'EVAP', 'MDEV', 'MDPR', 'MDTN', 'MDTX', 'MNPN', 'MXPN', 'SN01', 'SN02', 'SN03', 'SN04', 'SN05', 'SN06', 'SN07', 'SN11', 'SN12', 'SN13', 'SN14', 'SN15', 'SN16', 'SN17', 'SN21', 'SN22', 'SN23', 'SN24', 'SN25', 'SN26', 'SN27', 'SN31', 'SN32', 'SN33', 'SN34', 'SN35', 'SN36', 'SN37', 'SN41', 'SN42', 'SN43', 'SN44', 'SN45', 'SN46', 'SN47', 'SN51', 'SN52', 'SN53', 'SN54', 'SN55', 'SN56', 'SN57', 'SN61', 'SN62', 'SN63', 'SN64', 'SN65', 'SN66', 'SN67', 'SN71', 'SN72', 'SN73', 'SN74', 'SN75', 'SN76', 'SN77', 'SN81', 'SN82', 'SN83', 'SN84', 'SN85', 'SN86', 'SN87', 'SX01', 'SX02', 'SX03', 'SX04', 'SX05', 'SX06', 'SX07', 'SX11', 'SX12', 'SX13', 'SX14', 'SX15', 'SX16', 'SX17', 'SX21', 'SX22', 'SX23', 'SX24', 'SX25', 'SX26', 'SX27', 'SX31', 'SX32', 'SX33', 'SX34', 'SX35', 'SX36', 'SX37', 'SX41', 'SX42', 'SX43', 'SX44', 'SX45', 'SX46', 'SX47', 'SX51', 'SX52', 'SX53', 'SX54', 'SX55', 'SX56', 'SX57', 'SX61', 'SX62', 'SX63', 'SX64', 'SX65', 'SX66', 'SX67', 'SX71', 'SX72', 'SX73', 'SX74', 'SX75', 'SX76', 'SX77', 'SX81', 'SX82', 'SX83', 'SX84', 'SX85', 'SX86', 'SX87', 'TAVG', 'TAXN', 'THIC', 'TOBS', 'WESD', 'WESF', 'WSF1', 'WSF2', 'WSF5', 'WSFG', 'WSFI', 'WSFM') THEN \"DATA_VALUE\" / 10.0\n    ELSE NULL\n  END                 AS scaled_value,\n  nullif(trim(\"M_FLAG\"), '')       AS measurement_flag,\n  nullif(trim(\"Q_FLAG\"), '')       AS quality_flag,\n  nullif(trim(\"S_FLAG\"), '')       AS source_flag,\n  nullif(trim(\"OBS_TIME\"), '')     AS obs_time,\n  DATE '2026-10-22'                AS snapshot_date,\n  TIMESTAMPTZ '2026-10-22T03:04:32.981Z'                       AS ingested_at\nFROM read_parquet('s3://noaa-ghcn-pds/parquet/by_year/YEAR=2026/*/*.parquet', hive_partitioning = true, union_by_name = true)",
        "createSql": "CREATE OR REPLACE VIEW \"observations\" AS SELECT\n  \"ID\"                             AS station_id,\n  strptime(\"DATE\", '%Y%m%d')::DATE AS obs_date,\n  \"ELEMENT\"                        AS element,\n  CAST(\"YEAR\" AS INTEGER)          AS obs_year,\n  \"DATA_VALUE\"                     AS data_value,\n  CASE\n    WHEN \"ELEMENT\" IN ('SNOW', 'SNWD', 'ACMC', 'ACMH', 'ACSC', 'ACSH', 'AWDR', 'DAEV', 'DAPR', 'DASF', 'DATN', 'DATX', 'DAWM', 'DWPR', 'FMTM', 'FRGB', 'FRGT', 'FRTH', 'GAHT', 'MDSF', 'MDWM', 'PGTM', 'PSUN', 'RHAV', 'RHMN', 'RHMX', 'TSUN', 'WDF1', 'WDF2', 'WDF5', 'WDFG', 'WDFI', 'WDFM', 'WDMV', 'WT01', 'WT02', 'WT03', 'WT04', 'WT05', 'WT06', 'WT07', 'WT08', 'WT09', 'WT10', 'WT11', 'WT12', 'WT13', 'WT14', 'WT15', 'WT16', 'WT17', 'WT18', 'WT19', 'WT21', 'WT22', 'WV01', 'WV03', 'WV07', 'WV18', 'WV20') THEN \"DATA_VALUE\" / 1.0\n    WHEN \"ELEMENT\" IN ('PRCP', 'TMAX', 'TMIN', 'ADPT', 'ASLP', 'ASTP', 'AWBT', 'AWND', 'EVAP', 'MDEV', 'MDPR', 'MDTN', 'MDTX', 'MNPN', 'MXPN', 'SN01', 'SN02', 'SN03', 'SN04', 'SN05', 'SN06', 'SN07', 'SN11', 'SN12', 'SN13', 'SN14', 'SN15', 'SN16', 'SN17', 'SN21', 'SN22', 'SN23', 'SN24', 'SN25', 'SN26', 'SN27', 'SN31', 'SN32', 'SN33', 'SN34', 'SN35', 'SN36', 'SN37', 'SN41', 'SN42', 'SN43', 'SN44', 'SN45', 'SN46', 'SN47', 'SN51', 'SN52', 'SN53', 'SN54', 'SN55', 'SN56', 'SN57', 'SN61', 'SN62', 'SN63', 'SN64', 'SN65', 'SN66', 'SN67', 'SN71', 'SN72', 'SN73', 'SN74', 'SN75', 'SN76', 'SN77', 'SN81', 'SN82', 'SN83', 'SN84', 'SN85', 'SN86', 'SN87', 'SX01', 'SX02', 'SX03', 'SX04', 'SX05', 'SX06', 'SX07', 'SX11', 'SX12', 'SX13', 'SX14', 'SX15', 'SX16', 'SX17', 'SX21', 'SX22', 'SX23', 'SX24', 'SX25', 'SX26', 'SX27', 'SX31', 'SX32', 'SX33', 'SX34', 'SX35', 'SX36', 'SX37', 'SX41', 'SX42', 'SX43', 'SX44', 'SX45', 'SX46', 'SX47', 'SX51', 'SX52', 'SX53', 'SX54', 'SX55', 'SX56', 'SX57', 'SX61', 'SX62', 'SX63', 'SX64', 'SX65', 'SX66', 'SX67', 'SX71', 'SX72', 'SX73', 'SX74', 'SX75', 'SX76', 'SX77', 'SX81', 'SX82', 'SX83', 'SX84', 'SX85', 'SX86', 'SX87', 'TAVG', 'TAXN', 'THIC', 'TOBS', 'WESD', 'WESF', 'WSF1', 'WSF2', 'WSF5', 'WSFG', 'WSFI', 'WSFM') THEN \"DATA_VALUE\" / 10.0\n    ELSE NULL\n  END                 AS scaled_value,\n  nullif(trim(\"M_FLAG\"), '')       AS measurement_flag,\n  nullif(trim(\"Q_FLAG\"), '')       AS quality_flag,\n  nullif(trim(\"S_FLAG\"), '')       AS source_flag,\n  nullif(trim(\"OBS_TIME\"), '')     AS obs_time,\n  DATE '2026-10-22'                AS snapshot_date,\n  TIMESTAMPTZ '2026-10-22T03:04:32.981Z'                       AS ingested_at\nFROM read_parquet('s3://noaa-ghcn-pds/parquet/by_year/YEAR=2026/*/*.parquet', hive_partitioning = true, union_by_name = true)"
      },
      "columns": [
        {
          "name": "obs_year",
          "type": "INTEGER",
          "nullable": false,
          "description": "Calendar year of obs_date, redundant with it on purpose. It is NOAA’s own top-level partition key (the YEAR= directories under parquet/by_year/), which is what makes it the one predicate that genuinely reduces the work a query does against this federated view: filtering on it lets DuckDB skip whole directories of the archive. It used to also be the unit in which a copy of this table was reloaded; nothing is reloaded any more, because nothing is stored.",
          "descriptions": {
            "ro": "Anul calendaristic al datei obs_date, redundant cu aceasta în mod intenționat. Este chiar cheia de partiționare de nivel superior a NOAA (directoarele YEAR= din parquet/by_year/), ceea ce îl face singurul filtru care chiar reduce volumul de lucru al unei interogări pe această vizualizare federată: filtrarea pe el permite ca directoare întregi din arhivă să fie sărite. Anterior era și unitatea în care se reîncărca o copie a acestui tabel; nu se mai reîncarcă nimic, pentru că nu se stochează nimic.",
            "en": "Calendar year of obs_date, redundant with it on purpose. It is NOAA’s own top-level partition key (the YEAR= directories under parquet/by_year/), which is what makes it the one predicate that genuinely reduces the work a query does against this federated view: filtering on it lets DuckDB skip whole directories of the archive. It used to also be the unit in which a copy of this table was reloaded; nothing is reloaded any more, because nothing is stored."
          }
        },
        {
          "name": "element",
          "type": "VARCHAR",
          "nullable": false,
          "description": "Four-character GHCN-Daily element code, e.g. TMAX, PRCP, SN35. Joins to elements.element_code, which carries the name, unit and scale factor — and which is the one table of this dataset stored in the lake rather than read from NOAA. It is also NOAA’s second partition key (ELEMENT= inside each YEAR=), so filtering on it alongside obs_year is what keeps a read on this federated view down to a few files.",
          "descriptions": {
            "ro": "Codul GHCN-Daily de patru caractere al elementului măsurat, de exemplu TMAX, PRCP, SN35. Face legătura cu elements.element_code, care conține denumirea, unitatea și factorul de scară — și care este singurul tabel al acestui set de date stocat în lacul de date, nu citit de la NOAA. Este totodată a doua cheie de partiționare a NOAA (ELEMENT= în interiorul fiecărui YEAR=), deci filtrarea pe el împreună cu obs_year este ceea ce menține citirea acestei vizualizări federate la câteva fișiere.",
            "en": "Four-character GHCN-Daily element code, e.g. TMAX, PRCP, SN35. Joins to elements.element_code, which carries the name, unit and scale factor — and which is the one table of this dataset stored in the lake rather than read from NOAA. It is also NOAA’s second partition key (ELEMENT= inside each YEAR=), so filtering on it alongside obs_year is what keeps a read on this federated view down to a few files."
          }
        },
        {
          "name": "station_id",
          "type": "VARCHAR",
          "nullable": false,
          "description": "Eleven-character GHCN-Daily station id; joins to stations.station_id. Its first two characters are the FIPS country code and the third is the network code.",
          "descriptions": {
            "ro": "Identificatorul de unsprezece caractere al stației GHCN-Daily; face legătura cu stations.station_id. Primele două caractere sunt codul FIPS al țării, iar al treilea este codul rețelei.",
            "en": "Eleven-character GHCN-Daily station id; joins to stations.station_id. Its first two characters are the FIPS country code and the third is the network code."
          }
        },
        {
          "name": "obs_date",
          "type": "DATE",
          "nullable": false,
          "description": "The calendar day the observation is for, exactly as NOAA’s own DATE field states it — a bare \"yyyymmdd\" civil date with no time-of-day or zone character in the format at all. Not a UTC day: GHCN-Daily merges many national meteorological services (see source_flag), and NOAA’s readme does not say which local convention each one uses to assign \"the day\" for its own readings. Compare obs_time, which carries the station’s own local time when present — also not UTC.",
          "descriptions": {
            "ro": "Ziua calendaristică la care se referă observația, exact așa cum o scrie câmpul DATE al NOAA — o dată civilă „yyyymmdd”, fără nicio oră sau indicație de fus în format. Nu este o zi UTC: GHCN-Daily reunește numeroase servicii meteorologice naționale (vezi source_flag), iar documentația NOAA nu precizează după ce convenție locală stabilește fiecare dintre ele „ziua” pentru propriile citiri. Comparați cu obs_time, care conține ora locală a stației atunci când este prezentă — de asemenea, nu UTC.",
            "en": "The calendar day the observation is for, exactly as NOAA’s own DATE field states it — a bare \"yyyymmdd\" civil date with no time-of-day or zone character in the format at all. Not a UTC day: GHCN-Daily merges many national meteorological services (see source_flag), and NOAA’s readme does not say which local convention each one uses to assign \"the day\" for its own readings. Compare obs_time, which carries the station’s own local time when present — also not UTC."
          }
        },
        {
          "name": "data_value",
          "type": "BIGINT",
          "nullable": true,
          "description": "The integer exactly as NOAA published it, in the unit named by elements.stored_unit — usually tenths of the real unit. Kept raw so nothing is lost to a scaling decision; BIGINT rather than INTEGER because it mirrors the source column’s own type and can never overflow.",
          "descriptions": {
            "ro": "Numărul întreg exact așa cum a fost publicat de NOAA, în unitatea indicată de elements.stored_unit — de obicei zecimi din unitatea reală. Este păstrat neprelucrat pentru ca nimic să nu se piardă printr-o decizie de conversie; tipul este BIGINT, nu INTEGER, pentru că oglindește tipul coloanei din sursă și nu poate depăși limita.",
            "en": "The integer exactly as NOAA published it, in the unit named by elements.stored_unit — usually tenths of the real unit. Kept raw so nothing is lost to a scaling decision; BIGINT rather than INTEGER because it mirrors the source column’s own type and can never overflow."
          }
        },
        {
          "name": "scaled_value",
          "type": "DOUBLE",
          "nullable": true,
          "description": "data_value converted to a real measurement by dividing by elements.scale_factor — 287 for TMAX becomes 28.7 °C. NULL when the element code is not one this connector’s catalogue knows, because guessing a scale would produce a plausible wrong number rather than an error. Meaningless for the clock-time (FMTM, PGTM) and weather-type (WT**, WV**) codes, where elements.is_indicator is true.",
          "descriptions": {
            "ro": "Valoarea data_value convertită într-o măsurătoare reală prin împărțire la elements.scale_factor — 287 pentru TMAX devine 28,7 °C. Este NULL atunci când codul elementului nu se regăsește în catalogul acestui conector, pentru că o presupunere privind scara ar produce un număr greșit, dar plauzibil, în loc de o eroare. Nu are sens pentru codurile care exprimă o oră (FMTM, PGTM) sau un fenomen meteorologic (WT**, WV**), acolo unde elements.is_indicator este adevărat.",
            "en": "data_value converted to a real measurement by dividing by elements.scale_factor — 287 for TMAX becomes 28.7 °C. NULL when the element code is not one this connector’s catalogue knows, because guessing a scale would produce a plausible wrong number rather than an error. Meaningless for the clock-time (FMTM, PGTM) and weather-type (WT**, WV**) codes, where elements.is_indicator is true."
          },
          "unit": "the unit named by elements.unit for this row’s element"
        },
        {
          "name": "measurement_flag",
          "type": "VARCHAR",
          "nullable": true,
          "description": "M-FLAG: how the value was measured or derived. T is a trace of precipitation, B and D are totals formed from shorter periods, K is converted from knots, and so on. NULL means no measurement information applies. See the source readme, section III.",
          "descriptions": {
            "ro": "Indicatorul de măsurare (M-FLAG): cum a fost măsurată sau calculată valoarea. T înseamnă urme de precipitații, B și D înseamnă totaluri formate din perioade mai scurte, K înseamnă convertit din noduri și așa mai departe. NULL înseamnă că nu se aplică nicio informație de acest tip. Vezi secțiunea III din documentația sursei.",
            "en": "M-FLAG: how the value was measured or derived. T is a trace of precipitation, B and D are totals formed from shorter periods, K is converted from knots, and so on. NULL means no measurement information applies. See the source readme, section III."
          }
        },
        {
          "name": "quality_flag",
          "type": "VARCHAR",
          "nullable": true,
          "description": "Q-FLAG: NULL means the value passed every quality assurance check. Any letter means it FAILED one — X a bounds check, O a climatological outlier check, S a spatial consistency check, and so on. Flagged values are published rather than removed, so filter them out deliberately.",
          "descriptions": {
            "ro": "Indicatorul de calitate (Q-FLAG): NULL înseamnă că valoarea a trecut toate verificările de calitate. Orice literă înseamnă că valoarea NU a trecut una dintre ele — X verificarea limitelor, O verificarea valorilor climatologice extreme, S verificarea coerenței spațiale și așa mai departe. Valorile marcate sunt publicate, nu eliminate, deci trebuie excluse în mod explicit.",
            "en": "Q-FLAG: NULL means the value passed every quality assurance check. Any letter means it FAILED one — X a bounds check, O a climatological outlier check, S a spatial consistency check, and so on. Flagged values are published rather than removed, so filter them out deliberately."
          }
        },
        {
          "name": "source_flag",
          "type": "VARCHAR",
          "nullable": true,
          "description": "S-FLAG: which dataset this value came from. GHCN-Daily merges many national and regional collections and picks the highest-priority source per station-day, so this letter is what identifies whose data a row actually is. NULL means the value is missing. See the source readme, section III, for all thirty values.",
          "descriptions": {
            "ro": "Indicatorul de sursă (S-FLAG): din ce colecție provine valoarea. GHCN-Daily reunește numeroase colecții naționale și regionale și alege sursa cu prioritatea cea mai mare pentru fiecare combinație stație-zi, astfel încât această literă arată ale cui date sunt de fapt pe rândul respectiv. NULL înseamnă că valoarea lipsește. Toate cele treizeci de valori sunt descrise în secțiunea III a documentației sursei.",
            "en": "S-FLAG: which dataset this value came from. GHCN-Daily merges many national and regional collections and picks the highest-priority source per station-day, so this letter is what identifies whose data a row actually is. NULL means the value is missing. See the source readme, section III, for all thirty values."
          }
        },
        {
          "name": "obs_time",
          "type": "VARCHAR",
          "nullable": true,
          "description": "Time of observation as HHMM, from NOAA’s HOMR station history database. Local time at the station, not UTC, and absent for most rows.",
          "descriptions": {
            "ro": "Ora observației în format HHMM, din baza de date HOMR a NOAA privind istoricul stațiilor. Este ora locală a stației, nu UTC, și lipsește pentru majoritatea rândurilor.",
            "en": "Time of observation as HHMM, from NOAA’s HOMR station history database. Local time at the station, not UTC, and absent for most rows."
          }
        },
        {
          "name": "snapshot_date",
          "type": "DATE",
          "nullable": false,
          "description": "The UTC calendar day on which the published view definition was built — NOT the day the rows behind it were read. This table is federated, so this is one constant for every row and it dates OUR view, not NOAA’s data: the rows arrive from NOAA at the instant you query them, which may be months after this date. It used to say how fresh our copy of this year was; there is no copy any more, so the honest reading of it is \"the directory last re-pointed this view on this day\".",
          "descriptions": {
            "ro": "Ziua calendaristică UTC a rulării în care a fost construită definiția vizualizării publicate — NU ziua în care au fost citite rândurile din spatele ei. Tabelul este federat, deci este o singură constantă pentru toate rândurile și datează vizualizarea noastră, nu datele NOAA: rândurile ajung de la NOAA chiar în momentul interogării, care poate fi la luni după această dată. Anterior arăta cât de recentă era copia noastră a anului respectiv; nu mai există nicio copie, deci citirea corectă este „ziua în care directorul a repoziționat ultima dată această vizualizare”.",
            "en": "The UTC calendar day on which the published view definition was built — NOT the day the rows behind it were read. This table is federated, so this is one constant for every row and it dates OUR view, not NOAA’s data: the rows arrive from NOAA at the instant you query them, which may be months after this date. It used to say how fresh our copy of this year was; there is no copy any more, so the honest reading of it is \"the directory last re-pointed this view on this day\"."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When the run that PUBLISHED THIS VIEW started (UTC). One constant for every row, for the same reason as snapshot_date: nothing was written, so no row has its own write time.",
          "descriptions": {
            "ro": "Momentul, în UTC, la care a început rularea care a PUBLICAT ACEASTĂ VIZUALIZARE. O singură constantă pentru toate rândurile, din același motiv ca snapshot_date: nu s-a scris nimic, deci niciun rând nu are un moment propriu al scrierii.",
            "en": "When the run that PUBLISHED THIS VIEW started (UTC). One constant for every row, for the same reason as snapshot_date: nothing was written, so no row has its own write time."
          }
        }
      ],
      "files": []
    },
    {
      "name": "stations",
      "description": "One row per GHCN-Daily weather station — 132,501 of them worldwide — with its coordinates, elevation, name and network memberships, from ghcnd-stations.txt. The dimension `observations.station_id` joins to. FEDERATED: nothing is stored here, this is a view that reads and slices NOAA’s fixed-width ghcnd-stations.txt at query time, so it is always the station list NOAA publishes now — a renamed station shows its new name without a re-ingest, and a station NOAA removes from the file simply disappears from this table.",
      "descriptions": {
        "ro": "Câte un rând pentru fiecare stație meteorologică din GHCN-Daily — 132.501 stații din întreaga lume — cu coordonatele, altitudinea, denumirea și apartenența la rețele, din fișierul ghcnd-stations.txt. Este dimensiunea la care se raportează observations.station_id. FEDERAT: nu se stochează nimic aici, este o vizualizare care citește și decupează la momentul interogării fișierul text cu lățime fixă ghcnd-stations.txt al NOAA, deci este întotdeauna lista de stații pe care NOAA o publică acum — o stație redenumită apare cu noua denumire fără o nouă preluare, iar o stație pe care NOAA o scoate din fișier dispare pur și simplu din acest tabel.",
        "en": "One row per GHCN-Daily weather station — 132,501 of them worldwide — with its coordinates, elevation, name and network memberships, from ghcnd-stations.txt. The dimension `observations.station_id` joins to. FEDERATED: nothing is stored here, this is a view that reads and slices NOAA’s fixed-width ghcnd-stations.txt at query time, so it is always the station list NOAA publishes now — a renamed station shows its new name without a re-ingest, and a station NOAA removes from the file simply disappears from this table."
      },
      "rowCount": 0,
      "totalBytes": 0,
      "sortBy": [
        "country_code",
        "station_id"
      ],
      "searchColumns": [
        "name"
      ],
      "primaryKey": [
        "station_id"
      ],
      "writeMode": "upsert",
      "storage": "view",
      "source": "stations",
      "view": {
        "sql": "SELECT\n  nullif(trim(substr(line, 1, 11)), '')                                   AS station_id,\n  substr(line, 1, 2)                                AS country_code,\n  substr(line, 3, 1)                                AS network_code,\n  TRY_CAST(nullif(trim(substr(line, 13, 8)), '') AS DOUBLE)              AS latitude,\n  TRY_CAST(nullif(trim(substr(line, 22, 9)), '') AS DOUBLE)              AS longitude,\n  nullif(TRY_CAST(nullif(trim(substr(line, 32, 6)), '') AS DOUBLE), -999.9) AS elevation,\n  nullif(trim(substr(line, 39, 2)), '')                                  AS state_code,\n  nullif(trim(substr(line, 42, 30)), '')                                  AS name,\n  lower(strip_accents(nullif(trim(substr(line, 42, 30)), '')))            AS name_lc,\n  nullif(trim(substr(line, 73, 3)), '')                                  AS gsn_flag,\n  nullif(trim(substr(line, 77, 3)), '')                                  AS hcn_crn_flag,\n  nullif(trim(substr(line, 81, 5)), '')                                  AS wmo_id,\n  DATE '2026-10-22'                                 AS first_seen_date,\n  DATE '2026-10-22'                                 AS last_seen_date,\n  TIMESTAMPTZ '2026-10-22T03:04:32.981Z'                                        AS ingested_at\nFROM read_csv('s3://noaa-ghcn-pds/ghcnd-stations.txt', header = false, normalize_names = false, sample_size = -1, delim = '\u0007', quote = '', escape = '', columns = {'line': 'VARCHAR'})\nWHERE trim(line) <> ''",
        "createSql": "CREATE OR REPLACE VIEW \"stations\" AS SELECT\n  nullif(trim(substr(line, 1, 11)), '')                                   AS station_id,\n  substr(line, 1, 2)                                AS country_code,\n  substr(line, 3, 1)                                AS network_code,\n  TRY_CAST(nullif(trim(substr(line, 13, 8)), '') AS DOUBLE)              AS latitude,\n  TRY_CAST(nullif(trim(substr(line, 22, 9)), '') AS DOUBLE)              AS longitude,\n  nullif(TRY_CAST(nullif(trim(substr(line, 32, 6)), '') AS DOUBLE), -999.9) AS elevation,\n  nullif(trim(substr(line, 39, 2)), '')                                  AS state_code,\n  nullif(trim(substr(line, 42, 30)), '')                                  AS name,\n  lower(strip_accents(nullif(trim(substr(line, 42, 30)), '')))            AS name_lc,\n  nullif(trim(substr(line, 73, 3)), '')                                  AS gsn_flag,\n  nullif(trim(substr(line, 77, 3)), '')                                  AS hcn_crn_flag,\n  nullif(trim(substr(line, 81, 5)), '')                                  AS wmo_id,\n  DATE '2026-10-22'                                 AS first_seen_date,\n  DATE '2026-10-22'                                 AS last_seen_date,\n  TIMESTAMPTZ '2026-10-22T03:04:32.981Z'                                        AS ingested_at\nFROM read_csv('s3://noaa-ghcn-pds/ghcnd-stations.txt', header = false, normalize_names = false, sample_size = -1, delim = '\u0007', quote = '', escape = '', columns = {'line': 'VARCHAR'})\nWHERE trim(line) <> ''"
      },
      "columns": [
        {
          "name": "country_code",
          "type": "VARCHAR",
          "nullable": false,
          "description": "FIPS country code, the first two characters of station_id; joins to countries.country_code. Computed by the view from the id rather than left as a substr each reader has to write, so \"every station in Romania\" is a plain equality on a named column. It buys no pruning — this table is federated, and the underlying ghcnd-stations.txt is one unsorted 132,501-line text file that is read whole either way — but it is what makes the filter obvious and the join to countries direct.",
          "descriptions": {
            "ro": "Codul FIPS al țării, adică primele două caractere din station_id; face legătura cu countries.country_code. Este calculat de vizualizare din identificator, în loc să rămână o funcție substr pe care fiecare cititor trebuie să o scrie, astfel încât „toate stațiile din România” să fie o simplă egalitate pe o coloană cu nume. Nu aduce niciun câștig de viteză — tabelul este federat, iar fișierul ghcnd-stations.txt din spate este un singur fișier text nesortat de 132.501 linii, citit integral oricum — dar face filtrul evident și legătura cu countries directă.",
            "en": "FIPS country code, the first two characters of station_id; joins to countries.country_code. Computed by the view from the id rather than left as a substr each reader has to write, so \"every station in Romania\" is a plain equality on a named column. It buys no pruning — this table is federated, and the underlying ghcnd-stations.txt is one unsorted 132,501-line text file that is read whole either way — but it is what makes the filter obvious and the join to countries direct."
          }
        },
        {
          "name": "station_id",
          "type": "VARCHAR",
          "nullable": false,
          "description": "The eleven-character GHCN-Daily station identifier.",
          "descriptions": {
            "ro": "Identificatorul de unsprezece caractere al stației GHCN-Daily.",
            "en": "The eleven-character GHCN-Daily station identifier."
          }
        },
        {
          "name": "network_code",
          "type": "VARCHAR",
          "nullable": true,
          "description": "Third character of station_id: which numbering system the remaining eight characters come from. 0 unspecified, 1 CoCoRaHS, C US Cooperative, E ECA&D, M WMO, N a national met service, P pre-Coop, R RAWS, S SNOTEL, W WBAN.",
          "descriptions": {
            "ro": "Al treilea caracter din station_id: sistemul de numerotare din care provin ultimele opt caractere. 0 nespecificat, 1 CoCoRaHS, C rețeaua cooperativă a SUA, E ECA&D, M OMM, N un serviciu meteorologic național, P pre-Coop, R RAWS, S SNOTEL, W WBAN.",
            "en": "Third character of station_id: which numbering system the remaining eight characters come from. 0 unspecified, 1 CoCoRaHS, C US Cooperative, E ECA&D, M WMO, N a national met service, P pre-Coop, R RAWS, S SNOTEL, W WBAN."
          }
        },
        {
          "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": "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": "elevation",
          "type": "DOUBLE",
          "nullable": true,
          "description": "Station elevation above sea level. The source writes -999.9 for \"not known\"; that sentinel is stored as NULL here, which is the case for 4,619 of the 132,501 stations.",
          "descriptions": {
            "ro": "Altitudinea stației față de nivelul mării. Sursa scrie -999,9 pentru „necunoscut”; această valoare convențională este stocată aici ca NULL, situație întâlnită la 4.619 dintre cele 132.501 stații.",
            "en": "Station elevation above sea level. The source writes -999.9 for \"not known\"; that sentinel is stored as NULL here, which is the case for 4,619 of the 132,501 stations."
          },
          "unit": "m"
        },
        {
          "name": "state_code",
          "type": "VARCHAR",
          "nullable": true,
          "description": "US postal code or Canadian province code, for stations in those two countries only; joins to states.state_code. NULL everywhere else.",
          "descriptions": {
            "ro": "Codul poștal al statului american sau codul provinciei canadiene, doar pentru stațiile din aceste două țări; face legătura cu states.state_code. În rest este NULL.",
            "en": "US postal code or Canadian province code, for stations in those two countries only; joins to states.state_code. NULL everywhere else."
          }
        },
        {
          "name": "name",
          "type": "VARCHAR",
          "nullable": true,
          "description": "Station name as the source writes it, usually in capitals.",
          "descriptions": {
            "ro": "Denumirea stației așa cum o scrie sursa, de obicei cu majuscule.",
            "en": "Station name as the source writes it, usually in capitals."
          }
        },
        {
          "name": "name_lc",
          "type": "VARCHAR",
          "nullable": true,
          "description": "name lower-cased and accent-folded, for case- and accent-insensitive search. Computed by the view with strip_accents(lower(…)) at query time — this table is federated, so the folded value is not stored anywhere and searching it prunes nothing; the whole text file is read either way. It is published because it is the CORRECT way to match a name (a reader writing lower(name) alone misses the accented forms), not because it is the fast way, which is what it was while this table was copied and sorted.",
          "descriptions": {
            "ro": "Denumirea scrisă cu litere mici și fără diacritice, pentru căutare care ignoră majusculele și semnele diacritice. Este calculată de vizualizare cu strip_accents(lower(…)) la momentul interogării — tabelul este federat, deci valoarea nu este stocată nicăieri, iar căutarea pe ea nu elimină din start nimic: fișierul text este citit integral oricum. Este publicată pentru că este modul CORECT de a potrivi o denumire (cine scrie doar lower(name) ratează formele cu diacritice), nu pentru că ar fi modul rapid, așa cum era cât timp acest tabel era copiat și sortat.",
            "en": "name lower-cased and accent-folded, for case- and accent-insensitive search. Computed by the view with strip_accents(lower(…)) at query time — this table is federated, so the folded value is not stored anywhere and searching it prunes nothing; the whole text file is read either way. It is published because it is the CORRECT way to match a name (a reader writing lower(name) alone misses the accented forms), not because it is the fast way, which is what it was while this table was copied and sorted."
          }
        },
        {
          "name": "gsn_flag",
          "type": "VARCHAR",
          "nullable": true,
          "description": "GSN when the station belongs to the GCOS Surface Network, NULL otherwise. The flag is assigned by matching wmo_id against the official GSN list, so a station with no WMO number never carries it.",
          "descriptions": {
            "ro": "GSN atunci când stația face parte din rețeaua GCOS Surface Network, altfel NULL. Indicatorul se atribuie prin compararea wmo_id cu lista oficială GSN, deci o stație fără număr OMM nu îl primește niciodată.",
            "en": "GSN when the station belongs to the GCOS Surface Network, NULL otherwise. The flag is assigned by matching wmo_id against the official GSN list, so a station with no WMO number never carries it."
          }
        },
        {
          "name": "hcn_crn_flag",
          "type": "VARCHAR",
          "nullable": true,
          "description": "HCN for a US Historical Climatology Network station, CRN for a US Climate Reference Network or Regional Climate Network station, NULL for everything else.",
          "descriptions": {
            "ro": "HCN pentru o stație din U.S. Historical Climatology Network, CRN pentru o stație din U.S. Climate Reference Network sau din rețeaua regională echivalentă, NULL în rest.",
            "en": "HCN for a US Historical Climatology Network station, CRN for a US Climate Reference Network or Regional Climate Network station, NULL for everything else."
          }
        },
        {
          "name": "wmo_id",
          "type": "VARCHAR",
          "nullable": true,
          "description": "World Meteorological Organization station number, where one has been matched to this station. Kept as text because it is an identifier with leading zeros, not a quantity.",
          "descriptions": {
            "ro": "Numărul stației în nomenclatorul Organizației Meteorologice Mondiale, dacă a fost asociat acestei stații. Este păstrat ca text pentru că este un identificator cu zerouri la început, nu o mărime.",
            "en": "World Meteorological Organization station number, where one has been matched to this station. Kept as text because it is an identifier with leading zeros, not a quantity."
          }
        },
        {
          "name": "first_seen_date",
          "type": "DATE",
          "nullable": false,
          "description": "The UTC calendar day the published view definition was built. This table is federated, so it is NOT a seen-window: a view has no memory of previous runs, so first_seen_date and last_seen_date carry the same constant on every row. While the table was copied into the lake this really did record the first run on which a station appeared in ghcnd-stations.txt and was never moved forward; it is kept, with this description, rather than dropped, so a query written against the copied table still resolves. To ask when a station actually has data, use inventory.first_year.",
          "descriptions": {
            "ro": "Ziua calendaristică UTC în care a fost construită definiția vizualizării publicate. Tabelul este federat, deci aceasta NU este o fereastră de observare: o vizualizare nu ține minte rulările anterioare, așa că first_seen_date și last_seen_date poartă aceeași constantă pe fiecare rând. Cât timp tabelul a fost copiat în lacul de date, această coloană chiar reținea prima rulare în care stația a apărut în ghcnd-stations.txt și nu era mutată niciodată înainte; este păstrată, cu această descriere, în loc să fie eliminată, ca o interogare scrisă pentru varianta copiată să funcționeze în continuare. Pentru „din ce an are efectiv date o stație”, folosiți inventory.first_year.",
            "en": "The UTC calendar day the published view definition was built. This table is federated, so it is NOT a seen-window: a view has no memory of previous runs, so first_seen_date and last_seen_date carry the same constant on every row. While the table was copied into the lake this really did record the first run on which a station appeared in ghcnd-stations.txt and was never moved forward; it is kept, with this description, rather than dropped, so a query written against the copied table still resolves. To ask when a station actually has data, use inventory.first_year."
          }
        },
        {
          "name": "last_seen_date",
          "type": "DATE",
          "nullable": false,
          "description": "The same constant as first_seen_date (a UTC calendar day), for the same reason: this table is federated and a view cannot remember a previous run. A station NOAA drops from ghcnd-stations.txt is simply absent from this view — it is no longer retained under a stale last-seen value the way the copied, upserted version retained it, so an observations row for a delisted station can now find no dimension row at all. Use a LEFT JOIN if that matters to your query.",
          "descriptions": {
            "ro": "Aceeași constantă ca first_seen_date (o zi calendaristică UTC), din același motiv: tabelul este federat, iar o vizualizare nu poate ține minte o rulare anterioară. O stație pe care NOAA o scoate din ghcnd-stations.txt lipsește pur și simplu din această vizualizare — nu mai este păstrată cu o valoare „văzută ultima dată” învechită, așa cum o păstra varianta copiată și actualizată prin upsert, deci un rând din observations pentru o stație scoasă din listă poate să nu mai găsească niciun rând de dimensiune. Folosiți LEFT JOIN dacă acest lucru contează pentru interogarea dumneavoastră.",
            "en": "The same constant as first_seen_date (a UTC calendar day), for the same reason: this table is federated and a view cannot remember a previous run. A station NOAA drops from ghcnd-stations.txt is simply absent from this view — it is no longer retained under a stale last-seen value the way the copied, upserted version retained it, so an observations row for a delisted station can now find no dimension row at all. Use a LEFT JOIN if that matters to your query."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When the run that published this view definition started (UTC). One constant for every row: nothing was written, so nothing has its own write time.",
          "descriptions": {
            "ro": "Momentul, în UTC, la care a început rularea care a publicat această definiție de vizualizare. O singură constantă pentru toate rândurile: nu s-a scris nimic, deci niciun rând nu are un moment propriu al scrierii.",
            "en": "When the run that published this view definition started (UTC). One constant for every row: nothing was written, so nothing has its own write time."
          }
        }
      ],
      "files": []
    },
    {
      "name": "countries",
      "description": "The 219 FIPS country codes used in the first two characters of a station id, with their names, from ghcnd-countries.txt. FIPS 10-4, not ISO 3166 — the codes differ (the United Kingdom is UK here, not GB). FEDERATED: a view over NOAA’s own ghcnd-countries.txt, so nothing is stored and the list is always the one NOAA publishes now.",
      "descriptions": {
        "ro": "Cele 219 coduri FIPS de țară folosite în primele două caractere ale identificatorului unei stații, împreună cu denumirile lor, din fișierul ghcnd-countries.txt. Este vorba despre standardul FIPS 10-4, nu ISO 3166 — codurile diferă (Regatul Unit este UK aici, nu GB). FEDERAT: este o vizualizare peste fișierul ghcnd-countries.txt al NOAA, deci nu se stochează nimic, iar lista este întotdeauna cea publicată de NOAA în acest moment.",
        "en": "The 219 FIPS country codes used in the first two characters of a station id, with their names, from ghcnd-countries.txt. FIPS 10-4, not ISO 3166 — the codes differ (the United Kingdom is UK here, not GB). FEDERATED: a view over NOAA’s own ghcnd-countries.txt, so nothing is stored and the list is always the one NOAA publishes now."
      },
      "rowCount": 0,
      "totalBytes": 0,
      "sortBy": [
        "country_code"
      ],
      "searchColumns": [],
      "primaryKey": [
        "country_code"
      ],
      "writeMode": "replace",
      "storage": "view",
      "source": "countries",
      "view": {
        "sql": "SELECT\n  nullif(trim(substr(line, 1, 2)), '')    AS country_code,\n  nullif(trim(substr(line, 4, 61)), '')   AS name,\n  DATE '2026-10-22' AS snapshot_date,\n  TIMESTAMPTZ '2026-10-22T03:04:32.981Z'        AS ingested_at\nFROM read_csv('s3://noaa-ghcn-pds/ghcnd-countries.txt', header = false, normalize_names = false, sample_size = -1, delim = '\u0007', quote = '', escape = '', columns = {'line': 'VARCHAR'})\nWHERE trim(line) <> ''",
        "createSql": "CREATE OR REPLACE VIEW \"countries\" AS SELECT\n  nullif(trim(substr(line, 1, 2)), '')    AS country_code,\n  nullif(trim(substr(line, 4, 61)), '')   AS name,\n  DATE '2026-10-22' AS snapshot_date,\n  TIMESTAMPTZ '2026-10-22T03:04:32.981Z'        AS ingested_at\nFROM read_csv('s3://noaa-ghcn-pds/ghcnd-countries.txt', header = false, normalize_names = false, sample_size = -1, delim = '\u0007', quote = '', escape = '', columns = {'line': 'VARCHAR'})\nWHERE trim(line) <> ''"
      },
      "columns": [
        {
          "name": "country_code",
          "type": "VARCHAR",
          "nullable": false,
          "description": "FIPS 10-4 country code; joins to stations.country_code.",
          "descriptions": {
            "ro": "Codul de țară FIPS 10-4; face legătura cu stations.country_code.",
            "en": "FIPS 10-4 country code; joins to stations.country_code."
          }
        },
        {
          "name": "name",
          "type": "VARCHAR",
          "nullable": true,
          "description": "Country name as the source writes it, in English.",
          "descriptions": {
            "ro": "Denumirea țării așa cum o scrie sursa, în engleză.",
            "en": "Country name as the source writes it, in English."
          }
        },
        {
          "name": "snapshot_date",
          "type": "DATE",
          "nullable": false,
          "description": "The UTC calendar day the published view definition was built, not the day this list was read: the table is federated, so it is one constant on every row and the rows come from NOAA at query time.",
          "descriptions": {
            "ro": "Ziua calendaristică UTC în care a fost construită definiția vizualizării publicate, nu ziua în care a fost citită această listă: tabelul este federat, deci este o singură constantă pe fiecare rând, iar rândurile vin de la NOAA la momentul interogării.",
            "en": "The UTC calendar day the published view definition was built, not the day this list was read: the table is federated, so it is one constant on every row and the rows come from NOAA at query time."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When the run that published this view definition started (UTC). One constant for every row: nothing was written, so nothing has its own write time.",
          "descriptions": {
            "ro": "Momentul, în UTC, la care a început rularea care a publicat această definiție de vizualizare. O singură constantă pentru toate rândurile: nu s-a scris nimic, deci niciun rând nu are un moment propriu al scrierii.",
            "en": "When the run that published this view definition started (UTC). One constant for every row: nothing was written, so nothing has its own write time."
          }
        }
      ],
      "files": []
    },
    {
      "name": "states",
      "description": "The 74 US state, territory and Canadian province codes used in the state column of ghcnd-stations.txt, with their names, from ghcnd-states.txt. FEDERATED: a view over NOAA’s own ghcnd-states.txt, so nothing is stored and the list is always the one NOAA publishes now.",
      "descriptions": {
        "ro": "Cele 74 de coduri ale statelor și teritoriilor americane și ale provinciilor canadiene folosite în coloana de stat din ghcnd-stations.txt, împreună cu denumirile lor, din fișierul ghcnd-states.txt. FEDERAT: este o vizualizare peste fișierul ghcnd-states.txt al NOAA, deci nu se stochează nimic, iar lista este întotdeauna cea publicată de NOAA în acest moment.",
        "en": "The 74 US state, territory and Canadian province codes used in the state column of ghcnd-stations.txt, with their names, from ghcnd-states.txt. FEDERATED: a view over NOAA’s own ghcnd-states.txt, so nothing is stored and the list is always the one NOAA publishes now."
      },
      "rowCount": 0,
      "totalBytes": 0,
      "sortBy": [
        "state_code"
      ],
      "searchColumns": [],
      "primaryKey": [
        "state_code"
      ],
      "writeMode": "replace",
      "storage": "view",
      "source": "states",
      "view": {
        "sql": "SELECT\n  nullif(trim(substr(line, 1, 2)), '')    AS state_code,\n  nullif(trim(substr(line, 4, 47)), '')   AS name,\n  DATE '2026-10-22' AS snapshot_date,\n  TIMESTAMPTZ '2026-10-22T03:04:32.981Z'        AS ingested_at\nFROM read_csv('s3://noaa-ghcn-pds/ghcnd-states.txt', header = false, normalize_names = false, sample_size = -1, delim = '\u0007', quote = '', escape = '', columns = {'line': 'VARCHAR'})\nWHERE trim(line) <> ''",
        "createSql": "CREATE OR REPLACE VIEW \"states\" AS SELECT\n  nullif(trim(substr(line, 1, 2)), '')    AS state_code,\n  nullif(trim(substr(line, 4, 47)), '')   AS name,\n  DATE '2026-10-22' AS snapshot_date,\n  TIMESTAMPTZ '2026-10-22T03:04:32.981Z'        AS ingested_at\nFROM read_csv('s3://noaa-ghcn-pds/ghcnd-states.txt', header = false, normalize_names = false, sample_size = -1, delim = '\u0007', quote = '', escape = '', columns = {'line': 'VARCHAR'})\nWHERE trim(line) <> ''"
      },
      "columns": [
        {
          "name": "state_code",
          "type": "VARCHAR",
          "nullable": false,
          "description": "Postal code of the US state or territory, or of the Canadian province; joins to stations.state_code.",
          "descriptions": {
            "ro": "Codul poștal al statului sau teritoriului american ori al provinciei canadiene; face legătura cu stations.state_code.",
            "en": "Postal code of the US state or territory, or of the Canadian province; joins to stations.state_code."
          }
        },
        {
          "name": "name",
          "type": "VARCHAR",
          "nullable": true,
          "description": "Name of the state, territory or province, in English.",
          "descriptions": {
            "ro": "Denumirea statului, teritoriului sau provinciei, în engleză.",
            "en": "Name of the state, territory or province, in English."
          }
        },
        {
          "name": "snapshot_date",
          "type": "DATE",
          "nullable": false,
          "description": "The UTC calendar day the published view definition was built, not the day this list was read: the table is federated, so it is one constant on every row and the rows come from NOAA at query time.",
          "descriptions": {
            "ro": "Ziua calendaristică UTC în care a fost construită definiția vizualizării publicate, nu ziua în care a fost citită această listă: tabelul este federat, deci este o singură constantă pe fiecare rând, iar rândurile vin de la NOAA la momentul interogării.",
            "en": "The UTC calendar day the published view definition was built, not the day this list was read: the table is federated, so it is one constant on every row and the rows come from NOAA at query time."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When the run that published this view definition started (UTC). One constant for every row: nothing was written, so nothing has its own write time.",
          "descriptions": {
            "ro": "Momentul, în UTC, la care a început rularea care a publicat această definiție de vizualizare. O singură constantă pentru toate rândurile: nu s-a scris nimic, deci niciun rând nu are un moment propriu al scrierii.",
            "en": "When the run that published this view definition started (UTC). One constant for every row: nothing was written, so nothing has its own write time."
          }
        }
      ],
      "files": []
    },
    {
      "name": "inventory",
      "description": "One row per station and element, giving the first and last year for which that station has unflagged data for that element — 782,538 rows, from ghcnd-inventory.txt. It answers \"which stations have TMAX back to 1900\" without touching the three billion rows of observations, which is exactly what it exists for — and that is worth more now than it was, because observations is a view over S3 and the three billion rows would be read across the network. FEDERATED too: this is a view over NOAA’s own ghcnd-inventory.txt, so nothing is stored and the answer is always NOAA’s current index.",
      "descriptions": {
        "ro": "Câte un rând pentru fiecare combinație stație-element, cu primul și ultimul an în care stația respectivă are date nemarcate pentru elementul respectiv — 782.538 de rânduri, din fișierul ghcnd-inventory.txt. Răspunde la întrebarea „care stații au TMAX începând din 1900” fără a atinge cele trei miliarde de rânduri din observations, ceea ce este chiar motivul pentru care există — iar acum valorează mai mult decât înainte, pentru că observations este o vizualizare peste S3, deci cele trei miliarde de rânduri ar fi citite prin rețea. FEDERAT și el: este o vizualizare peste fișierul ghcnd-inventory.txt al NOAA, deci nu se stochează nimic, iar răspunsul este întotdeauna indexul curent al NOAA.",
        "en": "One row per station and element, giving the first and last year for which that station has unflagged data for that element — 782,538 rows, from ghcnd-inventory.txt. It answers \"which stations have TMAX back to 1900\" without touching the three billion rows of observations, which is exactly what it exists for — and that is worth more now than it was, because observations is a view over S3 and the three billion rows would be read across the network. FEDERATED too: this is a view over NOAA’s own ghcnd-inventory.txt, so nothing is stored and the answer is always NOAA’s current index."
      },
      "rowCount": 0,
      "totalBytes": 0,
      "sortBy": [
        "element",
        "first_year",
        "station_id"
      ],
      "searchColumns": [],
      "primaryKey": [
        "station_id",
        "element"
      ],
      "writeMode": "replace",
      "storage": "view",
      "source": "inventory",
      "view": {
        "sql": "SELECT\n  nullif(trim(substr(line, 1, 11)), '')                        AS station_id,\n  nullif(trim(substr(line, 32, 4)), '')                       AS element,\n  TRY_CAST(nullif(trim(substr(line, 37, 4)), '') AS INTEGER)  AS first_year,\n  TRY_CAST(nullif(trim(substr(line, 42, 4)), '') AS INTEGER)  AS last_year,\n  TRY_CAST(nullif(trim(substr(line, 13, 8)), '') AS DOUBLE)   AS latitude,\n  TRY_CAST(nullif(trim(substr(line, 22, 9)), '') AS DOUBLE)   AS longitude,\n  DATE '2026-10-22'                      AS snapshot_date,\n  TIMESTAMPTZ '2026-10-22T03:04:32.981Z'                             AS ingested_at\nFROM read_csv('s3://noaa-ghcn-pds/ghcnd-inventory.txt', header = false, normalize_names = false, sample_size = -1, delim = '\u0007', quote = '', escape = '', columns = {'line': 'VARCHAR'})\nWHERE trim(line) <> ''",
        "createSql": "CREATE OR REPLACE VIEW \"inventory\" AS SELECT\n  nullif(trim(substr(line, 1, 11)), '')                        AS station_id,\n  nullif(trim(substr(line, 32, 4)), '')                       AS element,\n  TRY_CAST(nullif(trim(substr(line, 37, 4)), '') AS INTEGER)  AS first_year,\n  TRY_CAST(nullif(trim(substr(line, 42, 4)), '') AS INTEGER)  AS last_year,\n  TRY_CAST(nullif(trim(substr(line, 13, 8)), '') AS DOUBLE)   AS latitude,\n  TRY_CAST(nullif(trim(substr(line, 22, 9)), '') AS DOUBLE)   AS longitude,\n  DATE '2026-10-22'                      AS snapshot_date,\n  TIMESTAMPTZ '2026-10-22T03:04:32.981Z'                             AS ingested_at\nFROM read_csv('s3://noaa-ghcn-pds/ghcnd-inventory.txt', header = false, normalize_names = false, sample_size = -1, delim = '\u0007', quote = '', escape = '', columns = {'line': 'VARCHAR'})\nWHERE trim(line) <> ''"
      },
      "columns": [
        {
          "name": "element",
          "type": "VARCHAR",
          "nullable": false,
          "description": "Four-character element code; joins to elements.element_code.",
          "descriptions": {
            "ro": "Codul de patru caractere al elementului; face legătura cu elements.element_code.",
            "en": "Four-character element code; joins to elements.element_code."
          }
        },
        {
          "name": "first_year",
          "type": "INTEGER",
          "nullable": true,
          "description": "First year for which this station has unflagged data for this element. Unflagged means the quality flag was empty, so it is a slightly stronger claim than \"the first year with any row in observations\".",
          "descriptions": {
            "ro": "Primul an în care această stație are date nemarcate pentru acest element. „Nemarcate” înseamnă că indicatorul de calitate era gol, deci afirmația este puțin mai puternică decât „primul an cu vreun rând în observations”.",
            "en": "First year for which this station has unflagged data for this element. Unflagged means the quality flag was empty, so it is a slightly stronger claim than \"the first year with any row in observations\"."
          }
        },
        {
          "name": "station_id",
          "type": "VARCHAR",
          "nullable": false,
          "description": "Station identifier; joins to stations.station_id.",
          "descriptions": {
            "ro": "Identificatorul stației; face legătura cu stations.station_id.",
            "en": "Station identifier; joins to stations.station_id."
          }
        },
        {
          "name": "last_year",
          "type": "INTEGER",
          "nullable": true,
          "description": "Last year for which this station has unflagged data for this element. A value well short of the current year usually means the station closed.",
          "descriptions": {
            "ro": "Ultimul an în care această stație are date nemarcate pentru acest element. O valoare mult anterioară anului curent înseamnă de obicei că stația s-a închis.",
            "en": "Last year for which this station has unflagged data for this element. A value well short of the current year usually means the station closed."
          }
        },
        {
          "name": "latitude",
          "type": "DOUBLE",
          "nullable": true,
          "description": "Station latitude, repeated here by the source. Kept so this table answers a geographic \"what is measured near here\" question on its own, without a join.",
          "descriptions": {
            "ro": "Latitudinea stației, repetată aici de sursă. Este păstrată pentru ca acest tabel să poată răspunde singur la întrebarea „ce se măsoară în apropiere”, fără o alăturare de tabele.",
            "en": "Station latitude, repeated here by the source. Kept so this table answers a geographic \"what is measured near here\" question on its own, without a join."
          },
          "unit": "degrees"
        },
        {
          "name": "longitude",
          "type": "DOUBLE",
          "nullable": true,
          "description": "Station longitude, repeated here by the source.",
          "descriptions": {
            "ro": "Longitudinea stației, repetată aici de sursă.",
            "en": "Station longitude, repeated here by the source."
          },
          "unit": "degrees"
        },
        {
          "name": "snapshot_date",
          "type": "DATE",
          "nullable": false,
          "description": "The UTC calendar day the published view definition was built, not the day this inventory was read: this table is federated, so it is one constant on every row and the rows themselves come from NOAA at query time.",
          "descriptions": {
            "ro": "Ziua calendaristică UTC în care a fost construită definiția vizualizării publicate, nu ziua în care a fost citit acest inventar: tabelul este federat, deci este o singură constantă pe fiecare rând, iar rândurile vin de la NOAA la momentul interogării.",
            "en": "The UTC calendar day the published view definition was built, not the day this inventory was read: this table is federated, so it is one constant on every row and the rows themselves come from NOAA at query time."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When the run that published this view definition started (UTC). One constant for every row: nothing was written, so nothing has its own write time.",
          "descriptions": {
            "ro": "Momentul, în UTC, la care a început rularea care a publicat această definiție de vizualizare. O singură constantă pentru toate rândurile: nu s-a scris nimic, deci niciun rând nu are un moment propriu al scrierii.",
            "en": "When the run that published this view definition started (UTC). One constant for every row: nothing was written, so nothing has its own write time."
          }
        }
      ],
      "files": []
    }
  ],
  "generatedAt": "2026-10-22T03:04:38.782Z"
}
