-
Notifications
You must be signed in to change notification settings - Fork 4.5k
🎉 🎉 Source FB Marketing: performance and reliability fixes #9805
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
Conversation
Bump version
/test connector=connectors/source-facebook-marketing
|
/test connector=connectors/source-facebook-marketing
|
incremental behaviour of Images is broken until #9746 |
"""Connection check to validate that the user-provided config can be used to connect to the underlying API | ||
|
||
:param config: the user-input config object conforming to the connector's spec.json | ||
:param logger: logger object | ||
:param _logger: logger object |
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.
Seems like we don't use it anywhere. Shouldn't we also update line 46?
/publish connector=source-facebook-marketing
|
/publish connector=connectors/source-facebook-marketing
|
…rmance-8282 # Conflicts: # airbyte-config/init/src/main/resources/config/STANDARD_SOURCE_DEFINITION/e7778cfc-e97c-4458-9ecb-b4f2bba8946c.json
@keu the possibility to set up an attribution window was really healpful for us. We understand the reason why you made it a constant, but our use case is another one. We are only using some data that will never change regardless of the attribution window (e.g., spend) and not using any of the data that could change (e.g., conversions). For this reason, incremental synch with a window of 3 days was more than enough for us. With this new approach, we are forced to retrieve a lot of data we don't need and with the constrains of the FB API, this connection takes 5 hours to run every day, while with 3 days attribution window would be only 20-30 mins. Would you be open to add a variable |
@vladimir-remar could you propose a draft PR for what the spec would look like? |
@sherifnada Thanks for the answer and I will do it ASAP. |
What
this PR is based on #8385
It focused on several improvements.
Stability:
Performance:
lookback_window
param because it actually used in the wrong way before, and really useless. FB updates insights after up to 28 days. Make it constant and read last 28 days (not from the current cursor, but from now() datetime)Other fixes:
How
AsyncJob
is responsible for syncing fixed time intervals now. I introduced a new classParentAsyncJob
to group smallerAsyncJob
s. When AsyncJob fails for the first time it will try to restart, if it fails againInsightAsyncJobManager
will split such job into group of smaller AsyncJobs, one job for each campaign active for a specific interval. We use 28day window to fetch IDs for these campaigns. The fail situation is quite rare, so this will degrade performance just a bit, but will improve reliability, it potentially could split further and use AdSets or even Ads to fetch data in smaller batches.Especially it is important for date intervals bigger then 1 day (there are feature requests already for this)
Recommended reading order
streams/*
source.py
spec.py
🚨 User Impact 🚨
We deprecate
day_per_job
parameter, as it is not needed after the introduction of the split algorithm.We deprecate
lookback_window
parameter because it was used in the wrong way before, and FB has a constant value for it.Pre-merge Checklist
Expand the relevant checklist and delete the others.
New Connector
Community member or Airbyter
airbyte_secret
./gradlew :airbyte-integrations:connectors:<name>:integrationTest
.README.md
bootstrap.md
. See description and examplesdocs/SUMMARY.md
docs/integrations/<source or destination>/<name>.md
including changelog. See changelog exampledocs/integrations/README.md
airbyte-integrations/builds.md
Airbyter
If this is a community PR, the Airbyte engineer reviewing this PR is responsible for the below items.
/test connector=connectors/<name>
command is passing./publish
command described hereUpdating a connector
Community member or Airbyter
airbyte_secret
./gradlew :airbyte-integrations:connectors:<name>:integrationTest
.README.md
bootstrap.md
. See description and examplesdocs/integrations/<source or destination>/<name>.md
including changelog. See changelog exampleAirbyter
If this is a community PR, the Airbyte engineer reviewing this PR is responsible for the below items.
/test connector=connectors/<name>
command is passing./publish
command described hereConnector Generator
-scaffold
in their name) have been updated with the latest scaffold by running./gradlew :airbyte-integrations:connector-templates:generator:testScaffoldTemplates
then checking in your changes