Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use rove for QC in the ingestor #42

Merged
merged 30 commits into from
Jan 29, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
f3aa8ad
ingestion: plumbing for QC and stub qc_data implementation
intarga Dec 11, 2024
bb39130
db: flag tables for confident flags
intarga Dec 11, 2024
8684b5b
ingestion: implement qc_data
intarga Dec 12, 2024
66ea3d7
ingestion: refactor Data to DataChunk, pulling up shared fields in Datum
intarga Dec 13, 2024
6556b35
ingestion: get time_resolution for qc from type_id
intarga Dec 13, 2024
bd9be7e
use real QC pipelines
intarga Jan 9, 2025
72b0b97
remove obsolete test case
intarga Jan 9, 2025
280309e
fix typo in index on flags.confident_provenance table
intarga Jan 13, 2025
9b133bb
fix ambiguous column identifier in qc_data query
intarga Jan 13, 2025
d72e95b
show the message from ingestor when the success assertion fails
intarga Jan 13, 2025
776408a
add partitions for flag tables
intarga Jan 14, 2025
5ef23c0
fix integration tests
intarga Jan 14, 2025
299fc7e
fix rustfmt complaint about empty file
intarga Jan 14, 2025
1fe4773
fix clippy lint
intarga Jan 14, 2025
8caae2b
fix schema ordering in e2e test setup
intarga Jan 15, 2025
1762bdf
merge confident.flags into public.data
intarga Jan 16, 2025
12ce22c
modify the one current qc pipeline to match the new format
intarga Jan 17, 2025
150c653
fix path to load qc pipelines from
intarga Jan 17, 2025
ace1a7b
fix typo in provenance table constraint names
intarga Jan 21, 2025
352e5a8
disable spike checks in fresh pipelines
intarga Jan 21, 2025
c10c2bb
use rove connector to fetch context for a datum not currently in the db
intarga Jan 21, 2025
a8f8e25
expand todo about optimising permit checks
intarga Jan 22, 2025
ec1191e
rename qc_data to qc_fresh data, add comments to reflect its specificity
intarga Jan 22, 2025
1380280
extend first data partition back to 1700
intarga Jan 22, 2025
27a7f6b
switch back to main branch of rove after merging fixes
intarga Jan 23, 2025
c6987f9
switch `qc_usable` to default to true instead of NULL
intarga Jan 23, 2025
0d0d363
migrations: support qc_usable column
intarga Jan 23, 2025
5996440
Revert "migrations: support qc_usable column"
intarga Jan 27, 2025
228fd32
db: add DEFAULT TRUE to public.data.qc_usable
intarga Jan 27, 2025
9faa557
fix typo in comment
intarga Jan 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ members = [
"api",
"ingestion",
"integration_tests",
"rove_connector",
"rove_connector", "util",
]
resolver = "2"

Expand Down Expand Up @@ -32,3 +32,4 @@ serde = { version = "1.0.217", features = ["derive"] }
thiserror = "1.0.69"
tokio = { version = "1.41.1", features = ["rt-multi-thread", "macros"] }
tokio-postgres = { version = "0.7.12", features = ["with-chrono-0_4"] }
toml = "0.8.19"
15 changes: 15 additions & 0 deletions db/flags.sql
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
CREATE SCHEMA IF NOT EXISTS flags;

-- TODO: should this also have a column for qc_time or some such?
CREATE TABLE IF NOT EXISTS flags.confident_provenance (
jo-asplin-met-no marked this conversation as resolved.
Show resolved Hide resolved
timeseries INT4 NOT NULL,
obstime TIMESTAMPTZ NOT NULL,
pipeline TEXT NOT NULL,
-- TODO: should this be an enum?
flag INT4 NOT NULL,
-- TODO: better name? since this might be applied to flags that aren't fail but also aren't pass?
fail_condition TEXT NULL,
CONSTRAINT unique_confident_provenance_timeseries_obstime_pipeline UNIQUE (timeseries, obstime, pipeline),
CONSTRAINT fk_confident_provenance_timeseries FOREIGN KEY (timeseries) REFERENCES public.timeseries
) PARTITION BY RANGE (obstime);
CREATE INDEX IF NOT EXISTS confident_provenance_timestamp_index ON flags.confident_provenance (obstime);
CREATE INDEX IF NOT EXISTS confident_provenance_timeseries_index ON flags.confident_provenance USING HASH (timeseries);

CREATE TABLE IF NOT EXISTS flags.kvdata (
timeseries INT4 REFERENCES public.timeseries,
obstime TIMESTAMPTZ NOT NULL,
Expand Down
120 changes: 79 additions & 41 deletions db/partitions_generated.sql
Original file line number Diff line number Diff line change
@@ -1,77 +1,115 @@
-- Generated by simple script for testing
CREATE TABLE IF NOT EXISTS data_y1850_to_y1950 PARTITION OF public.data
FOR VALUES FROM ('1850-01-01 00:00:00+00') TO ('1950-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y1950_to_y2000 PARTITION OF public.data
-- Generated by util/src/bin/generate_partition_queries.rs
jo-asplin-met-no marked this conversation as resolved.
Show resolved Hide resolved
CREATE TABLE IF NOT EXISTS public.data_y1700_to_y1950 PARTITION OF public.data
FOR VALUES FROM ('1700-01-01 00:00:00+00') TO ('1950-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS public.data_y1950_to_y2000 PARTITION OF public.data
FOR VALUES FROM ('1950-01-01 00:00:00+00') TO ('2000-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2000_to_y2010 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2000_to_y2010 PARTITION OF public.data
FOR VALUES FROM ('2000-01-01 00:00:00+00') TO ('2010-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2010_to_y2015 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2010_to_y2015 PARTITION OF public.data
FOR VALUES FROM ('2010-01-01 00:00:00+00') TO ('2015-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2015_to_y2016 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2015_to_y2016 PARTITION OF public.data
FOR VALUES FROM ('2015-01-01 00:00:00+00') TO ('2016-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2016_to_y2017 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2016_to_y2017 PARTITION OF public.data
FOR VALUES FROM ('2016-01-01 00:00:00+00') TO ('2017-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2017_to_y2018 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2017_to_y2018 PARTITION OF public.data
FOR VALUES FROM ('2017-01-01 00:00:00+00') TO ('2018-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2018_to_y2019 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2018_to_y2019 PARTITION OF public.data
FOR VALUES FROM ('2018-01-01 00:00:00+00') TO ('2019-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2019_to_y2020 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2019_to_y2020 PARTITION OF public.data
FOR VALUES FROM ('2019-01-01 00:00:00+00') TO ('2020-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2020_to_y2021 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2020_to_y2021 PARTITION OF public.data
FOR VALUES FROM ('2020-01-01 00:00:00+00') TO ('2021-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2021_to_y2022 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2021_to_y2022 PARTITION OF public.data
FOR VALUES FROM ('2021-01-01 00:00:00+00') TO ('2022-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2022_to_y2023 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2022_to_y2023 PARTITION OF public.data
FOR VALUES FROM ('2022-01-01 00:00:00+00') TO ('2023-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2023_to_y2024 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2023_to_y2024 PARTITION OF public.data
FOR VALUES FROM ('2023-01-01 00:00:00+00') TO ('2024-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2024_to_y2025 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2024_to_y2025 PARTITION OF public.data
FOR VALUES FROM ('2024-01-01 00:00:00+00') TO ('2025-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2025_to_y2026 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2025_to_y2026 PARTITION OF public.data
FOR VALUES FROM ('2025-01-01 00:00:00+00') TO ('2026-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2026_to_y2027 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2026_to_y2027 PARTITION OF public.data
FOR VALUES FROM ('2026-01-01 00:00:00+00') TO ('2027-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2027_to_y2028 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2027_to_y2028 PARTITION OF public.data
FOR VALUES FROM ('2027-01-01 00:00:00+00') TO ('2028-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2028_to_y2029 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2028_to_y2029 PARTITION OF public.data
FOR VALUES FROM ('2028-01-01 00:00:00+00') TO ('2029-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS data_y2029_to_y2030 PARTITION OF public.data
CREATE TABLE IF NOT EXISTS public.data_y2029_to_y2030 PARTITION OF public.data
FOR VALUES FROM ('2029-01-01 00:00:00+00') TO ('2030-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y1850_to_y1950 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('1850-01-01 00:00:00+00') TO ('1950-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y1950_to_y2000 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y1700_to_y1950 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('1700-01-01 00:00:00+00') TO ('1950-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y1950_to_y2000 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('1950-01-01 00:00:00+00') TO ('2000-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2000_to_y2010 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2000_to_y2010 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2000-01-01 00:00:00+00') TO ('2010-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2010_to_y2015 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2010_to_y2015 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2010-01-01 00:00:00+00') TO ('2015-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2015_to_y2016 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2015_to_y2016 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2015-01-01 00:00:00+00') TO ('2016-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2016_to_y2017 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2016_to_y2017 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2016-01-01 00:00:00+00') TO ('2017-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2017_to_y2018 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2017_to_y2018 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2017-01-01 00:00:00+00') TO ('2018-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2018_to_y2019 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2018_to_y2019 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2018-01-01 00:00:00+00') TO ('2019-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2019_to_y2020 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2019_to_y2020 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2019-01-01 00:00:00+00') TO ('2020-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2020_to_y2021 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2020_to_y2021 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2020-01-01 00:00:00+00') TO ('2021-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2021_to_y2022 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2021_to_y2022 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2021-01-01 00:00:00+00') TO ('2022-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2022_to_y2023 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2022_to_y2023 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2022-01-01 00:00:00+00') TO ('2023-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2023_to_y2024 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2023_to_y2024 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2023-01-01 00:00:00+00') TO ('2024-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2024_to_y2025 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2024_to_y2025 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2024-01-01 00:00:00+00') TO ('2025-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2025_to_y2026 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2025_to_y2026 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2025-01-01 00:00:00+00') TO ('2026-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2026_to_y2027 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2026_to_y2027 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2026-01-01 00:00:00+00') TO ('2027-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2027_to_y2028 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2027_to_y2028 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2027-01-01 00:00:00+00') TO ('2028-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2028_to_y2029 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2028_to_y2029 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2028-01-01 00:00:00+00') TO ('2029-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS nonscalar_data_y2029_to_y2030 PARTITION OF public.nonscalar_data
CREATE TABLE IF NOT EXISTS public.nonscalar_data_y2029_to_y2030 PARTITION OF public.nonscalar_data
FOR VALUES FROM ('2029-01-01 00:00:00+00') TO ('2030-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y1700_to_y1950 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('1700-01-01 00:00:00+00') TO ('1950-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y1950_to_y2000 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('1950-01-01 00:00:00+00') TO ('2000-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2000_to_y2010 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2000-01-01 00:00:00+00') TO ('2010-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2010_to_y2015 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2010-01-01 00:00:00+00') TO ('2015-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2015_to_y2016 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2015-01-01 00:00:00+00') TO ('2016-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2016_to_y2017 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2016-01-01 00:00:00+00') TO ('2017-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2017_to_y2018 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2017-01-01 00:00:00+00') TO ('2018-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2018_to_y2019 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2018-01-01 00:00:00+00') TO ('2019-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2019_to_y2020 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2019-01-01 00:00:00+00') TO ('2020-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2020_to_y2021 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2020-01-01 00:00:00+00') TO ('2021-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2021_to_y2022 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2021-01-01 00:00:00+00') TO ('2022-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2022_to_y2023 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2022-01-01 00:00:00+00') TO ('2023-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2023_to_y2024 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2023-01-01 00:00:00+00') TO ('2024-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2024_to_y2025 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2024-01-01 00:00:00+00') TO ('2025-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2025_to_y2026 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2025-01-01 00:00:00+00') TO ('2026-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2026_to_y2027 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2026-01-01 00:00:00+00') TO ('2027-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2027_to_y2028 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2027-01-01 00:00:00+00') TO ('2028-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2028_to_y2029 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2028-01-01 00:00:00+00') TO ('2029-01-01 00:00:00+00');
CREATE TABLE IF NOT EXISTS flags.confident_provenance_y2029_to_y2030 PARTITION OF flags.confident_provenance
FOR VALUES FROM ('2029-01-01 00:00:00+00') TO ('2030-01-01 00:00:00+00');
7 changes: 7 additions & 0 deletions db/public.sql
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ CREATE TABLE IF NOT EXISTS public.data (
timeseries INT4 NOT NULL,
obstime TIMESTAMPTZ NOT NULL,
obsvalue REAL,
-- This value should not be treated as an absolute assertion of the data's quality but rather
-- our current knowlege of it. `true` here indicates that the datum has not failed any QC
-- pipelines (including if none have been run at all). Users that have specific requirements
-- for what QC has been performed on the data should refer to the information in the
-- `flags.confident_provenance` table.
qc_usable BOOLEAN NOT NULL DEFAULT TRUE,
CONSTRAINT unique_data_timeseries_obstime UNIQUE (timeseries, obstime),
CONSTRAINT fk_data_timeseries FOREIGN KEY (timeseries) REFERENCES public.timeseries
) PARTITION BY RANGE (obstime);
Expand All @@ -43,6 +49,7 @@ CREATE TABLE IF NOT EXISTS public.nonscalar_data (
timeseries INT4 NOT NULL,
obstime TIMESTAMPTZ NOT NULL,
obsvalue TEXT,
qc_usable BOOLEAN,
CONSTRAINT unique_nonscalar_data_timeseries_obstime UNIQUE (timeseries, obstime),
CONSTRAINT fk_nonscalar_data_timeseries FOREIGN KEY (timeseries) REFERENCES public.timeseries
) PARTITION BY RANGE (obstime);
Expand Down
4 changes: 4 additions & 0 deletions ingestion/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,16 @@ bb8.workspace = true
bb8-postgres.workspace = true
bytes.workspace = true
chrono.workspace = true
chronoutil.workspace = true
csv.workspace = true
futures.workspace = true
kafka.workspace = true
quick-xml.workspace = true
regex.workspace = true
rove.workspace = true
rove_connector = { path = "../rove_connector" }
serde.workspace = true
thiserror.workspace = true
tokio.workspace = true
tokio-postgres.workspace = true
toml.workspace = true
Loading