Aazam Thakur
11/01/2022, 8:35 AMSunny Hashmi (Airbyte)
11/01/2022, 3:56 PMSince the Retriever is defined as part of the Stream configuration, different Streams for a given Source can use different Retriever definitions if needed.
My understanding is that you can override the global base stream configuration by defining the retriever object at stream level. So, this is the base stream config for the Sendgrid example connector:
definitions:
...
base_stream:
type: DeclarativeStream
schema_loader:
$ref: "*ref(definitions.schema_loader)"
retriever:
$ref: "*ref(definitions.retriever)"
record_selector:
extractor:
field_pointer: []
requester:
$ref: "*ref(definitions.requester)"
paginator:
type: NoPagination
So, altogether: adding a similar configuration to a stream object. The lists stream below will pull defaults from the definitions.base_stream.retriever using $ref , and then all additional configuration for record_selector and pagination is applied over those defaults:
definitions:
...
base_stream:
type: DeclarativeStream
schema_loader:
$ref: "*ref(definitions.schema_loader)"
retriever:
$ref: "*ref(definitions.retriever)"
record_selector:
extractor:
field_pointer: []
requester:
$ref: "*ref(definitions.requester)"
paginator:
type: NoPagination
streams:
- $ref: "*ref(definitions.base_stream)"
$options:
name: "lists"
primary_key: "id"
path: "/v3/marketing/lists"
retriever:
$ref: "*ref(definitions.base_stream.retriever)"
record_selector:
extractor:
field_pointer: ["foobar"]
paginator:
$ref: "*ref(definitions.cursor_paginator)"
I think it would probably have very limited scope though, only for that stream.Aazam Thakur
11/01/2022, 6:51 PMAazam Thakur
11/01/2022, 7:08 PMSunny Hashmi (Airbyte)
11/01/2022, 8:54 PM