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