Skip to content
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

✨ Source Google-Ads: add incremental streams based on events #28970

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
63b983a
Fix expected records
tolik0 Sep 1, 2023
7ee979d
Update version
tolik0 Sep 1, 2023
c5e2e6e
Update field customer.optimization_score_weight
tolik0 Sep 4, 2023
82664e1
Update schemas
tolik0 Aug 2, 2023
a723e43
Update expected records and tests
tolik0 Aug 2, 2023
79d2458
Add handling REQUESTED_METRICS_FOR_MANAGER error
tolik0 Aug 3, 2023
97761e1
Fix expected records and primary keys
tolik0 Aug 15, 2023
bbc9075
Add incremental sync and delete for Ad Group and Campaign criterion s…
tolik0 Aug 23, 2023
a24d1ba
Add campaign criterion schema
tolik0 Aug 23, 2023
2f688b2
Update version
tolik0 Aug 23, 2023
d6e415a
Update expected records
tolik0 Aug 25, 2023
1a14099
Add cursor for incremental events streams
tolik0 Aug 31, 2023
a7cd665
Delete changes from other prs
tolik0 Sep 1, 2023
1580b62
Fix incremental events streams
tolik0 Sep 3, 2023
c30b839
Fix incremental events streams
tolik0 Sep 4, 2023
8b6d11a
Update tests
tolik0 Sep 4, 2023
505aeb0
Update docs
tolik0 Sep 4, 2023
0b3af11
Automated Commit - Formatting Changes
tolik0 Sep 4, 2023
941fe93
Update tests
tolik0 Sep 7, 2023
d98a12b
Fix failing unit test due to Python optimization
tolik0 Sep 8, 2023
4e6fa35
Fix acceptance incremental tests
tolik0 Sep 8, 2023
3897d33
Fix expected records
tolik0 Sep 8, 2023
665cf1e
Revert wrong format
tolik0 Sep 8, 2023
f0001b1
Fix comments from review
tolik0 Sep 9, 2023
b83a34f
Delete wrong format
tolik0 Sep 9, 2023
01e0999
Fix comments
tolik0 Sep 11, 2023
6df703e
Update airbyte-integrations/connectors/source-google-ads/source_googl…
tolik0 Sep 12, 2023
651cd7c
Fix bypass reason
tolik0 Sep 12, 2023
e2d9b73
Update IncrementalEventsStream to avoid 10k limit
tolik0 Sep 14, 2023
c8b74d9
Fix formatting
tolik0 Sep 14, 2023
96c1de7
Refactor IncrementalEventsStream
tolik0 Sep 14, 2023
35c9375
Add more states
tolik0 Sep 14, 2023
c326017
Update docs
tolik0 Sep 14, 2023
d00e08c
Delete wrong formatting
tolik0 Sep 14, 2023
dad7780
Fix unit tests
tolik0 Sep 14, 2023
277bbbf
Fix unit test
tolik0 Sep 14, 2023
8113642
Fix comments
tolik0 Sep 19, 2023
2b915ff
Delete customer.id from criterions
tolik0 Sep 19, 2023
aca1798
Fix handling query limit hit
tolik0 Sep 19, 2023
5b34cfc
Fix formatting
tolik0 Sep 19, 2023
f53a050
Update docstring
tolik0 Sep 19, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ COPY main.py ./

ENTRYPOINT ["python", "/airbyte/integration_code/main.py"]

LABEL io.airbyte.version=0.8.1
LABEL io.airbyte.version=0.9.0
LABEL io.airbyte.name=airbyte/source-google-ads
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,35 @@ acceptance_tests:
- config_path: "secrets/config.json"
expect_records:
path: "integration_tests/expected_records.jsonl"
timeout_seconds: 600
timeout_seconds: 3600
empty_streams:
- name: "display_topics_performance_report"
bypass_reason: "Stream not filled yet."
- name: "account_labels"
bypass_reason: "Unable to seed the stream"
bypass_reason: "Data is present in UI, but not in API: supposedly insufficient permissions"
- name: "shopping_performance_report"
bypass_reason: "No shopping campaign, need item for sale"
- name: "display_topics_performance_report"
bypass_reason: "No data for this date range, tested in next config"
- name: "click_view"
bypass_reason: "Stream not filled yet."
- name: "unhappytable"
bypass_reason: "Stream not filled yet."
bypass_reason: "Stream has data only for last 90 days, next config is used for testing it"
ignored_fields:
accounts:
- name: customer.optimization_score_weight
bypass_reason: "Value can be updated by Google Ads"
- name: customer.optimization_score
bypass_reason: "Value can be updated by Google Ads"
- config_path: "secrets/config_click_view.json"
expect_records:
path: "integration_tests/expected_records_click.jsonl"
timeout_seconds: 3600
empty_streams:
- name: "account_labels"
bypass_reason: "Data is present in UI, but not in API: supposedly insufficient permissions"
- name: "shopping_performance_report"
bypass_reason: "Stream not filled yet."
bypass_reason: "No shopping campaign, need item for sale"
- name: "display_keyword_performance_report"
bypass_reason: "No data for this date range, tested in previous config"
- name: "keyword_report"
bypass_reason: "No data for this date range, tested in previous config"
ignored_fields:
accounts:
- name: customer.optimization_score_weight
Expand All @@ -42,17 +59,10 @@ acceptance_tests:
tests:
- config_path: "secrets/config.json"
configured_catalog_path: "integration_tests/configured_catalog.json"
- config_path: "secrets/config_with_gaql.json"
configured_catalog_path: "integration_tests/configured_catalog_with_gaql_only.json"
# This config allows to read from the click_view stream which is empty in other configs.
# It should be tested anyway because it has different date range compared to other streams.
- config_path: "secrets/config_click_view.json"
configured_catalog_path: "integration_tests/configured_catalog_with_click_view.json"
incremental:
tests:
- config_path: "secrets/incremental_config.json"
timeout_seconds: 3600
configured_catalog_path: "integration_tests/incremental_catalog.json"
skip_comprehensive_incremental_tests: true
future_state:
future_state_path: "integration_tests/abnormal_state.json"
Original file line number Diff line number Diff line change
Expand Up @@ -110,5 +110,31 @@
"stream_state": { "4651612872": { "segments.date": "2222-01-01" } },
"stream_descriptor": { "name": "ad_group_bidding_strategies" }
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"change_status": {
"4651612872": {
"change_status.last_change_date_time": "2024-08-16 13:20:01.003295"
}
}
},
"stream_descriptor": { "name": "ad_group_criterions" }
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"change_status": {
"4651612872": {
"change_status.last_change_date_time": "2024-08-16 13:20:01.003295"
}
}
},
"stream_descriptor": { "name": "campaign_criterion" }
}
}
]
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,23 @@
"destination_sync_mode": "overwrite",
"cursor_field": ["segments.date"]
},
{
"stream": {
"name": "campaign_budget",
"json_schema": {},
"supported_sync_modes": ["full_refresh", "incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["segments.date"],
"source_defined_primary_key": [
["campaign_budget.id"],
["segments.date"]
]
},
"sync_mode": "incremental",
"destination_sync_mode": "overwrite",
"cursor_field": ["segments.date"],
"primary_key": [["campaign_budget.id"], ["segments.date"]]
},
{
"stream": {
"name": "ad_group_custom",
Expand Down Expand Up @@ -323,29 +340,23 @@
"stream": {
"name": "ad_group_criterions",
"json_schema": {},
"supported_sync_modes": ["full_refresh"],
"source_defined_primary_key": [
["ad_group.id"],
["ad_group_criterion.criterion_id"]
]
"supported_sync_modes": ["full_refresh", "incremental"],
"source_defined_primary_key": [["ad_group_criterion.resource_name"]]
},
"sync_mode": "full_refresh",
"sync_mode": "incremental",
"destination_sync_mode": "overwrite",
"primary_key": [["ad_group.id"], ["ad_group_criterion.criterion_id"]]
"primary_key": [["ad_group_criterion.resource_name"]]
},
{
"stream": {
"name": "ad_listing_group_criterions",
"json_schema": {},
"supported_sync_modes": ["full_refresh"],
"source_defined_primary_key": [
["ad_group.id"],
["ad_group_criterion.criterion_id"]
]
"source_defined_primary_key": [["ad_group_criterion.resource_name"]]
},
"sync_mode": "full_refresh",
"destination_sync_mode": "overwrite",
"primary_key": [["ad_group.id"], ["ad_group_criterion.criterion_id"]]
"primary_key": [["ad_group_criterion.resource_name"]]
},
{
"stream": {
Expand All @@ -362,20 +373,14 @@
},
{
"stream": {
"name": "campaign_budget",
"name": "campaign_criterion",
"json_schema": {},
"supported_sync_modes": ["full_refresh", "incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["segments.date"],
"source_defined_primary_key": [
["campaign_budget.id"],
["segments.date"]
]
"source_defined_primary_key": [["campaign_criterion.resource_name"]]
},
"sync_mode": "incremental",
"destination_sync_mode": "overwrite",
"cursor_field": ["segments.date"],
"primary_key": [["campaign_budget.id"], ["segments.date"]]
"primary_key": [["campaign_criterion.resource_name"]]
}
]
}

Large diffs are not rendered by default.

Large diffs are not rendered by default.