Skip to content

🐛 Source Bing Ads - Fix Campaigns stream misses Audience and Shopping #17873

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

Merged
merged 8 commits into from
Oct 14, 2022

Conversation

rach-r
Copy link
Contributor

@rach-r rach-r commented Oct 12, 2022

What

Today, only Search campaign type is fetched in Campaigns stream, while all campaigns are available in campaign reports.
This PR aims to fix this by explicitly calling all campaign types in request parameters.

Closes this issue.

How

By explicitly calling all campaign types in request parameters.
Here is the API documentation mentioning how it should be retrieved.

Pre-merge Checklist

Updating a connector

Community member or Airbyter

  • Grant edit access to maintainers (instructions)
  • Unit & integration tests added and passing. Community members, please provide proof of success locally e.g: screenshot or copy-paste unit, integration, and acceptance test output. To run acceptance tests for a Python connector, follow instructions in the README. For java connectors run ./gradlew :airbyte-integrations:connectors:<name>:integrationTest.
  • Documentation updated
    • Changelog updated in docs/integrations/<source or destination>/<name>.md including changelog. See changelog example
  • PR name follows PR naming conventions

Tests

Unit

Put your unit tests output here.

Integration

Put your integration tests output here.

Acceptance

Put your acceptance tests output here.

@CLAassistant
Copy link

CLAassistant commented Oct 12, 2022

CLA assistant check
All committers have signed the CLA.

@github-actions github-actions bot added the area/documentation Improvements or additions to documentation label Oct 12, 2022
Copy link
Contributor

@alafanechere alafanechere left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for this initiative!
I'll run the acceptance tests on our sandbox account below.

@@ -207,6 +207,9 @@ class Campaigns(BingAdsStream):
" DynamicFeedSetting MaxConversionValueBiddingScheme MultimediaAdsBidAdjustment"
" TargetImpressionShareBiddingScheme TargetSetting VerifiedTrackingSetting"
)
campaign_types: str = (
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer this attribute to be a list of string that is later joined with " ".join. This will increase readability and simplify testing.
Feel free to change additional_fields in the same manner.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

@alafanechere
Copy link
Contributor

alafanechere commented Oct 12, 2022

/test connector=connectors/source-bing-ads

🕑 connectors/source-bing-ads https://github.com/airbytehq/airbyte/actions/runs/3233852670
✅ connectors/source-bing-ads https://github.com/airbytehq/airbyte/actions/runs/3233852670
Python tests coverage:

Name                          Stmts   Miss  Cover
-------------------------------------------------
source_bing_ads/__init__.py       2      0   100%
source_bing_ads/source.py       260      9    97%
source_bing_ads/cache.py         18      1    94%
source_bing_ads/reports.py      133     17    87%
source_bing_ads/client.py        93     14    85%
-------------------------------------------------
TOTAL                           506     41    92%
	 Name                                                 Stmts   Miss  Cover   Missing
	 ----------------------------------------------------------------------------------
	 source_acceptance_test/base.py                          10      4    60%   15-18
	 source_acceptance_test/config.py                        83      6    93%   78-80, 84-86
	 source_acceptance_test/conftest.py                     164    164     0%   6-282
	 source_acceptance_test/plugin.py                        48     48     0%   6-104
	 source_acceptance_test/tests/test_core.py              329    111    66%   39, 50-58, 63-70, 74-75, 79-80, 164, 202-219, 228-236, 240-245, 251, 284-289, 327-334, 374-376, 379, 439-448, 477-478, 484, 487, 520-530, 543-568, 573-577
	 source_acceptance_test/tests/test_full_refresh.py       52      2    96%   34, 65
	 source_acceptance_test/tests/test_incremental.py       152     26    83%   21-23, 29-31, 36-43, 48-61, 239, 250-258
	 source_acceptance_test/utils/asserts.py                 37      2    95%   57-58
	 source_acceptance_test/utils/common.py                  77     17    78%   15-16, 24-30, 47-54, 64, 67
	 source_acceptance_test/utils/compare.py                 62     23    63%   21-51, 68, 97-99
	 source_acceptance_test/utils/connector_runner.py       112     50    55%   23-26, 32, 36, 39-67, 70-72, 75-77, 80-82, 85-87, 90-92, 95-113, 147-149
	 source_acceptance_test/utils/json_schema_helper.py     105     13    88%   30-31, 38, 41, 65-68, 96, 120, 190-192
	 ----------------------------------------------------------------------------------
	 TOTAL                                                 1358    466    66%

Build Passed

Test summary info:

=========================== short test summary info ============================
SKIPPED [1] ../usr/local/lib/python3.9/site-packages/source_acceptance_test/plugin.py:60: Skipping TestIncremental.test_two_sequential_reads because not found in the config
================== 27 passed, 1 skipped in 638.02s (0:10:38) ===================

@alafanechere alafanechere marked this pull request as ready for review October 12, 2022 10:34
@alafanechere
Copy link
Contributor

Requesting review from @grubberr / @bazarnov for awareness as this connector is GA.

Copy link
Contributor

@alafanechere alafanechere left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 Tests are passing. @rach-r feel free to make the minor suggestion I shared above.

Copy link
Contributor

@bazarnov bazarnov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, but make sure this comment is processed: https://github.com/airbytehq/airbyte/pull/17873/files#r993262907

@@ -207,6 +207,9 @@ class Campaigns(BingAdsStream):
" DynamicFeedSetting MaxConversionValueBiddingScheme MultimediaAdsBidAdjustment"
" TargetImpressionShareBiddingScheme TargetSetting VerifiedTrackingSetting"
)
campaign_types: str = (
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

@sajarin sajarin added bounty-M Maintainer program: claimable medium bounty PR internal and removed bounty bounty-M Maintainer program: claimable medium bounty PR labels Oct 12, 2022
@alafanechere
Copy link
Contributor

alafanechere commented Oct 13, 2022

/publish connector=connectors/source-bing-ads

🕑 Publishing the following connectors:
connectors/source-bing-ads
https://github.com/airbytehq/airbyte/actions/runs/3241609027


Connector Did it publish? Were definitions generated?
connectors/source-bing-ads

if you have connectors that successfully published but failed definition generation, follow step 4 here ▶️

@alafanechere alafanechere merged commit cdb8052 into airbytehq:master Oct 14, 2022
@alafanechere
Copy link
Contributor

Thanks @rach-r for the contribution! 🎉 Feel free to open more PR like this one ;-)

letiescanciano added a commit that referenced this pull request Oct 14, 2022
…vation

* master: (98 commits)
  🐛 Source Bing Ads - Fix Campaigns stream misses Audience and Shopping (#17873)
  Source S3 - fix schema inference (#17991)
  🎉 JDBC sources: store cursor record count in db state (#15535)
  Introduce webhook configs into workspace api and persistence (#17950)
  ci: upload test results to github for analysis (#17953)
  Trigger the connectors build if there are worker changes. (#17976)
  Add additional sync timing information (#17643)
  Use page_token_option instead of page_token (#17892)
  capture metrics around json messages size (#17973)
  🐛 Correct kube annotations variable as per the docs. (#17972)
  🪟 🎉 Add /connector-builder page with embedded YAML editor (#17482)
  fix `est_num_metrics_emitted_by_reporter` not being emitted (#17929)
  Update schema dumps (#17960)
  Remove the bump in the value.yml (#17959)
  Ensure database initialization in test container (#17697)
  Remove typo line from incremental reads docs (#17920)
  DocS: Update authentication.md (#17931)
  Use MessageMigration for Source Connection Check. (#17656)
  fixed links (#17949)
  remove usages of YamlSeedConfigPersistence (#17895)
  ...
@lluisgassovillarejo
Copy link

Hi,
We have found this campaign-type definition problem also in the Cloud version.

The problem summarizes that we are making a move from Fivetran to Airbyte Cloud and:

  • Fivetran has three campaigns: Shopping, Search, and Audience.
  • On Airbyte, only one appears: Search.

So we find correct but incomplete data.
What can we do to solve this problem?

A greeting and thanks for the help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/connectors Connector related issues area/documentation Improvements or additions to documentation community connectors/source/bing-ads internal
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Source BingAds - Campaigns stream misses Audience and Shopping campaigns
8 participants