-
Notifications
You must be signed in to change notification settings - Fork 0
Add generalized (relations …) CSV loading construct
#259
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
Changes from 6 commits
3335293
840204b
220987b
d862b96
84c3236
1c2e0d0
0c3cc76
5b2feed
1b0b13c
5bf6aa8
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -288,11 +288,36 @@ message StorageIntegration { | |
| string s3_secret_access_key = 5; | ||
| } | ||
|
|
||
| // A single named column with its type. Used to describe both shared key columns and | ||
| // per-relation value columns in the generalized `TargetRelations` loading construct. | ||
| message NamedColumn { | ||
| string name = 1; // Column name (e.g. "src"); special name "METADATA$KEY" => derived hash | ||
| Type type = 2; // Column type | ||
| } | ||
|
|
||
| // One target relation: the shared keys plus this relation's own (possibly empty) value columns. | ||
| message TargetRelation { | ||
| RelationId target_id = 1; // Output relation path | ||
| repeated NamedColumn values = 2; // Value columns for this relation (may be empty) | ||
| } | ||
|
|
||
| // Generalized loading: a shared set of key columns and one or more target relations. | ||
| // CDC vs non-CDC is implied by which group is populated: | ||
| // - `relations` populated => non-CDC outputs | ||
| // - `inserts`/`deletes` => CDC insert/delete groups | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does this mean that the
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, they should be mutually exclusive. I will look into that.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I changed it to a |
||
| message TargetRelations { | ||
| repeated NamedColumn keys = 1; // Shared key columns (name "METADATA$KEY" => derived hash) | ||
| repeated TargetRelation relations = 2; // Non-CDC outputs | ||
| repeated TargetRelation inserts = 3; // CDC insert group | ||
| repeated TargetRelation deletes = 4; // CDC delete group | ||
| } | ||
|
|
||
| message CSVData { | ||
| CSVLocator locator = 1; | ||
| CSVConfig config = 2; | ||
| repeated GNFColumn columns = 3; | ||
| string asof = 4; // Blob storage timestamp for freshness requirements | ||
| optional TargetRelations relations = 5; // If present, generalized loading; mutually exclusive with columns | ||
| } | ||
|
|
||
| message CSVLocator { | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.