{
  "place_id": "NMS:HIHWNMS",
  "dataset_id": "cmems_salinity",
  "variable": "so",
  "categorical": false,
  "start_date": "2022-06-16",
  "end_date": "2025-02-15",
  "start_datetime": "2022-06-16T00:00:00Z",
  "end_datetime": "2025-02-15T00:00:00Z",
  "record_start": "2022-06-16",
  "lobes": 1,
  "mask_cells": 109,
  "axes": [
    {
      "bbox": [
        -159.5998477,
        19.7276605,
        -155.8223413,
        22.2848102
      ],
      "lon": [
        -159.58333,
        -159.5,
        -159.41667,
        -159.33333,
        -159.25,
        -159.16667,
        -159.08333,
        -159,
        -158.91667,
        -158.83333,
        -158.75,
        -158.66667,
        -158.58333,
        -158.5,
        -158.41667,
        -158.33333,
        -158.25,
        -158.16667,
        -158.08333,
        -158,
        -157.91667,
        -157.83333,
        -157.75,
        -157.66667,
        -157.58333,
        -157.5,
        -157.41667,
        -157.33333,
        -157.25,
        -157.16667,
        -157.08333,
        -157,
        -156.91667,
        -156.83333,
        -156.75,
        -156.66667,
        -156.58333,
        -156.5,
        -156.41667,
        -156.33333,
        -156.25,
        -156.16667,
        -156.08333,
        -156,
        -155.91667,
        -155.83333
      ],
      "lat": [
        19.75,
        19.833336,
        19.916672,
        20,
        20.083336,
        20.166672,
        20.25,
        20.333336,
        20.416672,
        20.5,
        20.583336,
        20.666672,
        20.75,
        20.833336,
        20.916672,
        21,
        21.083336,
        21.166672,
        21.25,
        21.333336,
        21.416672,
        21.5,
        21.583336,
        21.666672,
        21.75,
        21.833336,
        21.916672,
        22,
        22.083336,
        22.166672,
        22.25
      ]
    }
  ],
  "griddap_urls": [
    "https://erddap.oceanmetrics.io/erddap/griddap/cmems_salinity.parquet?so%5B(2022-06-16T00:00:00Z):1:(2025-02-15T00:00:00Z)%5D%5B(0.494025):1:(0.494025)%5D%5B(19.75):1:(22.25)%5D%5B(-159.58333):1:(-155.83333)%5D"
  ],
  "griddap_url_templates": [
    "https://erddap.oceanmetrics.io/erddap/griddap/cmems_salinity.parquet?so%5B({t0}):1:({t1})%5D%5B(0.494025):1:(0.494025)%5D%5B(19.75):1:(22.25)%5D%5B(-159.58333):1:(-155.83333)%5D"
  ],
  "griddap_chunks": [
    [
      "2022-06-16T00:00:00Z",
      "2025-02-15T00:00:00Z"
    ]
  ],
  "griddap_requests": 1,
  "rows": 33,
  "bytes": 3523,
  "generated": "2026-10-22T14:32:24Z",
  "erddap_base": "https://erddap.oceanmetrics.io/erddap",
  "erddap_version": "2.31.1",
  "sql": "-- daily key statistics for one place from an ERDDAP griddap slab.\n--   s.\"so\"  the value expression over the slab alias `s` (e.g. s.\"CRW_SST\", or\n--             (s.\"analysed_sst\" - 273.15) to convert Kelvin to Celsius)\n--   (SELECT DISTINCT * FROM read_parquet([<one griddap slab per lobe for the chunk>]))  the registered griddap file (parquet) or view\n--   mask  the mask table: latitude, longitude, weight (0,1]\n-- the join is an exact equality on ROUND(x, 3): the ERDDAP axis is float32 in the parquet and float64\n-- in the JS mask, so 21.375 arrives as 21.374999... on one side; rounding to the grid's 3 decimals\n-- (0.05 spacing) makes the two match without a tolerance join.\nSELECT\n  -- utc day; via epoch_ms because duckdb-wasm ships without icu, so TIMESTAMPTZ::DATE is unimplemented there\n  make_timestamp(epoch_ms(s.\"time\") * 1000)::DATE   AS date,\n  count(s.\"so\")                                  AS n,\n  avg(s.\"so\")                                    AS mean,\n  sum(s.\"so\" * m.weight) / sum(m.weight)         AS mean_wt,\n  stddev_samp(s.\"so\")                            AS sd,\n  min(s.\"so\")                                    AS min,\n  max(s.\"so\")                                    AS max,\n  quantile_cont(s.\"so\", 0.10)                    AS p10,\n  quantile_cont(s.\"so\", 0.90)                    AS p90,\n  sum(m.weight)                                     AS weight_sum\nFROM (SELECT DISTINCT * FROM read_parquet([<one griddap slab per lobe for the chunk>])) s\nJOIN mask m\n  ON  ROUND(s.latitude::DOUBLE,  3) = ROUND(m.latitude::DOUBLE,  3)\n  AND ROUND(s.longitude::DOUBLE, 3) = ROUND(m.longitude::DOUBLE, 3)\nWHERE s.\"so\" IS NOT NULL\nGROUP BY 1\nORDER BY 1"
}
