From: | Brent Wood <pcreso(at)yahoo(dot)com> |
---|---|
To: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>, Pgsql-general General <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: concatenating hstores in a group by? |
Date: | 2025-01-21 18:02:01 |
Message-ID: | 660172279.2625291.1737482521074@mail.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Yes, a Timescale hypertable with 500,000,000 rows of about 15 key/value pairs per record.
I'm not sure why there is both a gin & gist index on the hstore, or the merits of each.
Thanks....
\d t_reading_hstore_sec
Table "public.t_reading_hstore_sec"
Column | Type | Collation | Nullable | Default
------------+-----------------------------+-----------+----------+---------------------------------------------------
key | bigint | | not null | nextval('t_reading_hstore_sec_key_seq'::regclass)
timer | timestamp without time zone | | not null |
values_sec | hstore | | |
Indexes:
"t_reading_hstore_sec_pkey" PRIMARY KEY, btree (key, timer)
"t_reading_hstore_sec_timer_idx" btree (timer)
"t_reading_hstore_sec_timer_key" UNIQUE CONSTRAINT, btree (timer)
"t_reading_hstore_sec_values_idx_gin" gin (values_sec)
"t_reading_hstore_sec_values_idx_gist" gist (values_sec)
On Wednesday, January 22, 2025 at 06:34:38 AM GMT+13, Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> wrote:
On 1/19/25 12:09, Brent Wood wrote:
> Thanks for the replies, appreciated...
>
> My current solution is:
>
> /select trip_code,/
> / station_no,/
> / timer_sec + interval '12 hour' as NZST,/
> / timer_sec as utc,/
> / hstore_to_json(string_agg(values_sec::text, ', ')::hstore)
> as values_sec/
> / from (select '$TRIP' as trip_code,/
> / $STATION as station_no,/
> / date_trunc('second', timer) as timer_sec,/
> / values_sec/
> / from t_reading_hstore_sec/
> / where timer >= '$ISO_S'::timestamp - interval '12 hour'/
> / and timer <= '$ISO_F'::timestamp - interval '12 hour') as foo/
> /group by timer_sec, trip_code, station_no;/
>
> Convert the hstore to text, aggregate the text with string_agg(),
> convert back to hstore (which seems to remove duplicate keys, OK for my
> purpose)
To be clear values_sec in t_reading_hstore_sec is the hstore field?
If so what is it's structure?
> and group by timer truncated to whole seconds. I also provide UTC &
> local timezone times for each set of readings. It is run in a bash
> script which passes the trip & station values to the query, as well as
> the start/finish times as ISO format strings.
>
> The output is going to a Sqlite3 (Spatialite) database, which does not
> have hstore, or all the hstore functionality that Postgres has, but does
> have a json datatype which is adequate for our purposes, hence the
> hstore_to_json in the query.
>
>
> Thanks again,
>
> Brent Wood
>
--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Michel Pelletier | 2025-01-21 18:05:48 | Re: Using Expanded Objects other than Arrays from plpgsql |
Previous Message | Adrian Klaver | 2025-01-21 17:56:49 | Re: Records count mismatch with logical replication |