-
Notifications
You must be signed in to change notification settings - Fork 4.3k
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: support main streams #4788
🚀Source Google Ads: support main streams #4788
Conversation
/test connector=connectors/source-google-ads
|
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.
lgtm, just few small comments.
airbyte-integrations/connectors/source-google-ads/source_google_ads/google_ads.py
Outdated
Show resolved
Hide resolved
airbyte-integrations/connectors/source-google-ads/source_google_ads/google_ads.py
Show resolved
Hide resolved
airbyte-integrations/connectors/source-google-ads/source_google_ads/streams.py
Show resolved
Hide resolved
airbyte-integrations/connectors/source-google-ads/source_google_ads/streams.py
Show resolved
Hide resolved
…/source-google-ads-expand-api-support
/test connector=connectors/source-google-ads
|
@@ -22,37 +24,37 @@ | |||
}, | |||
"metrics.active_view_cpm": { | |||
"description": "ActiveViewCpm", | |||
"type": ["null", "string"], | |||
"type": ["null", "number"], |
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.
good change!
"accounts": "customer", | ||
"campaigns": "campaign", | ||
"ad_groups": "ad_group", | ||
"ad_group_ads": "ad_group_ad", |
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.
is this the same as the ad_group_ad_report
? if so should we just rename the former?
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.
I don't think they are the same thing. The differences between these streams are detailed below.
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.
fundamentally aren't these both mapping to the same entity in the Google API? The reason they have different fields is because we are SELECT
ing different fields for each of these streams (presumably because the json schemas for those fields are different)
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.
Fundamentally yes. But ad_group_ad_report
in this case is presented as Ad Performance Report. This stream gives us not only information about Google Ads
, but also statistical and metric data that we can receive daily.
If we combine these two streams, then the essence of Google Ads will cease to exist as such, and we will receive one record for each Google Ad every day, which contains all the information about Ad and a lot of daily statistics. In this case, the user may simply not understand how many Ads he has, and he will also not be able to work only with Ads, he will have to work only with their reports.
airbyte-integrations/connectors/source-google-ads/source_google_ads/google_ads.py
Show resolved
Hide resolved
airbyte-integrations/connectors/source-google-ads/source_google_ads/google_ads.py
Show resolved
Hide resolved
airbyte-integrations/connectors/source-google-ads/source_google_ads/streams.py
Show resolved
Hide resolved
airbyte-integrations/connectors/source-google-ads/source_google_ads/google_ads.py
Outdated
Show resolved
Hide resolved
"accounts": "customer", | ||
"campaigns": "campaign", | ||
"ad_groups": "ad_group", | ||
"ad_group_ads": "ad_group_ad", |
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.
fundamentally aren't these both mapping to the same entity in the Google API? The reason they have different fields is because we are SELECT
ing different fields for each of these streams (presumably because the json schemas for those fields are different)
airbyte-integrations/connectors/source-google-ads/source_google_ads/google_ads.py
Show resolved
Hide resolved
"type": ["null", "number"] | ||
}, | ||
"customer.pay_per_conversion_eligibility_failure_reasons": { | ||
"type": ["null", "array"] |
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.
should we describe the schema of the array as well using items
? same question for all array type fields
airbyte-integrations/connectors/source-google-ads/source_google_ads/google_ads.py
Show resolved
Hide resolved
query_template = f"SELECT {fields} FROM {from_category} " | ||
|
||
if cursor_field: | ||
query_template += f"WHERE {cursor_field} > '{from_date}' AND {cursor_field} < '{to_date}' ORDER BY {cursor_field}" |
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.
would be better to explicitly say ORDER BY {cursor_field} ASC
if possible
…/source-google-ads-expand-api-support
/test connector=connectors/source-google-ads
|
Should not forget to publish this connector later, when the GitHub test will be normalized. |
Is this still using the Googe Adwords API or is it already using the Google Ads API? See #4556 |
What
closes #4596
How
Describe the solution
Recommended reading order
x.java
y.python
Pre-merge Checklist
airbyte_secret
in the connector's spec./gradlew :airbyte-integrations:connectors:<name>:integrationTest
./test connector=connectors/<name>
command as documented here is passing.README.md
docs/SUMMARY.md
if it's a new connectordocs/integrations/<source or destination>/<name>
.docs/integrations/...
. See changelog exampledocs/integrations/README.md
contains a reference to the new connector/publish
command described here