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.kla...@aklaver.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.kla...@aklaver.com



  

Reply via email to