-
Notifications
You must be signed in to change notification settings - Fork 8
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
feat: AirbyteRecordMessageMeta
for per-record lineage and changes
#56
Conversation
protocol-models/src/main/resources/airbyte_protocol/airbyte_protocol.yaml
Outdated
Show resolved
Hide resolved
Note for destinations folks: we don't have to use all the properties in |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
added some comments. Agree with the general thrust of this change (and it definitely solves the immediate problem), just some details to work out
protocol-models/src/main/resources/airbyte_protocol/airbyte_protocol.yaml
Outdated
Show resolved
Hide resolved
protocol-models/src/main/resources/airbyte_protocol/airbyte_protocol.yaml
Outdated
Show resolved
Hide resolved
protocol-models/src/main/resources/airbyte_protocol/airbyte_protocol.yaml
Outdated
Show resolved
Hide resolved
protocol-models/src/main/resources/airbyte_protocol/airbyte_protocol.yaml
Show resolved
Hide resolved
protocol-models/src/main/resources/airbyte_protocol/airbyte_protocol.yaml
Show resolved
Hide resolved
protocol-models/src/main/resources/airbyte_protocol/airbyte_protocol.yaml
Outdated
Show resolved
Hide resolved
@evantahler do you have any other scenarios in mind where we would adding to |
I can imagine all sorts of problems, but I personally haven't seen them come up in OC issues yet. Some examples could be:
|
Thoughts:
Apologies for late review! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Evan and I went through this in person. Confirmed the proposed fix works and the proposed protocol change here is the minimal change to do so.
After a protocol review session on Jan 11th, this PR has been updated to replace |
AirbyteRecordMessageMeta
AirbyteRecordMessageMeta
for per-record lineage and changes
The final batch of changes, reflected above, made a few of the properties in |
^ The latest commit removes the free-text |
Related Doc and Protocol Change Doc
In order to help track the lineage of record changes along throughout a sync, a new optional property is added to
AirbyteRecordMessage
that will store per-record errors that will eventually be stored in the destination.As a reminder of our starting assumptions:
For example, consider the following totally realistic example record:
While the source might be able to handle serializing the record, the platform (with its current limit of 20mb per field), will not. To keep the lineage that the
image
field was modified, we add a newmeta.errors
array which contains the change information. After the record passes though the platform, it will look like:V2 destinations will then be able to inspect the record's
meta
information, and pass that along to the data warehouse, producing per-row errors. While the protocol wishes to track these changes as "changes", destinations are likely to represent these changes as errors for users.In the threads below, we discussed how we would represent an error with a sub-field. We decided on JSON-schema representations of the problematic properties: