Skip to content

Commit 6c67d80

Browse files
SPTKLharshithmullapudioctavia-squidington-iii
authored
Source Bing Ads adding missing columns (#14862)
* only adding `Conversions` for now to satisfy basic use case, will compelte all fields addition once I get a time to add them #14637 * Adding cost per conversion rate * adding CampaignId as part of the primary key * update primary key for ad performance report * adding more columns to primary key * completing campaign_performance_report * completing account+keyword performance report * complete ad_group_performance_report * adding ad_performance_report * revert to previous logger * remove logging import * chore: updated docs * auto-bump connector version [ci skip] Co-authored-by: Harshith Mullapudi <[email protected]> Co-authored-by: Octavia Squidington III <[email protected]>
1 parent 2cf06cc commit 6c67d80

File tree

12 files changed

+870
-226
lines changed

12 files changed

+870
-226
lines changed

airbyte-config/init/src/main/resources/seed/source_definitions.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@
104104
- name: Bing Ads
105105
sourceDefinitionId: 47f25999-dd5e-4636-8c39-e7cea2453331
106106
dockerRepository: airbyte/source-bing-ads
107-
dockerImageTag: 0.1.8
107+
dockerImageTag: 0.1.9
108108
documentationUrl: https://docs.airbyte.io/integrations/sources/bing-ads
109109
icon: bingads.svg
110110
sourceType: api

airbyte-config/init/src/main/resources/seed/source_specs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -866,7 +866,7 @@
866866
- "overwrite"
867867
- "append"
868868
- "append_dedup"
869-
- dockerImage: "airbyte/source-bing-ads:0.1.8"
869+
- dockerImage: "airbyte/source-bing-ads:0.1.9"
870870
spec:
871871
documentationUrl: "https://docs.airbyte.io/integrations/sources/bing-ads"
872872
connectionSpecification:

airbyte-integrations/connectors/source-bing-ads/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ RUN pip install .
1212
ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py"
1313
ENTRYPOINT ["python", "/airbyte/integration_code/main.py"]
1414

15-
LABEL io.airbyte.version=0.1.8
15+
LABEL io.airbyte.version=0.1.9
1616
LABEL io.airbyte.name=airbyte/source-bing-ads

airbyte-integrations/connectors/source-bing-ads/source_bing_ads/reports.py

Lines changed: 83 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,86 @@
1717
from bingads.v13.reporting import ReportingDownloadParameters
1818
from suds import sudsobject
1919

20+
AVERAGE_FIELD_TYPES = {
21+
"AverageCpc": "number",
22+
"AveragePosition": "number",
23+
"AverageCpm": "number",
24+
}
25+
AVERAGE_FIELDS = list(AVERAGE_FIELD_TYPES.keys())
26+
27+
CONVERSION_FIELD_TYPES = {
28+
"Conversions": "number",
29+
"ConversionRate": "number",
30+
"ConversionsQualified": "number",
31+
}
32+
CONVERSION_FIELDS = list(CONVERSION_FIELD_TYPES.keys())
33+
34+
ALL_CONVERSION_FIELD_TYPES = {
35+
"AllConversions": "integer",
36+
"AllConversionRate": "number",
37+
}
38+
ALL_CONVERSION_FIELDS = list(ALL_CONVERSION_FIELD_TYPES.keys())
39+
40+
LOW_QUALITY_FIELD_TYPES = {
41+
"LowQualityClicks": "integer",
42+
"LowQualityClicksPercent": "number",
43+
"LowQualityImpressions": "integer",
44+
"LowQualitySophisticatedClicks": "integer",
45+
"LowQualityConversions": "integer",
46+
"LowQualityConversionRate": "number",
47+
}
48+
LOW_QUALITY_FIELDS = list(LOW_QUALITY_FIELD_TYPES.keys())
49+
50+
REVENUE_FIELD_TYPES = {
51+
"Revenue": "number",
52+
"RevenuePerConversion": "number",
53+
"RevenuePerAssist": "number",
54+
}
55+
REVENUE_FIELDS = list(REVENUE_FIELD_TYPES.keys())
56+
57+
ALL_REVENUE_FIELD_TYPES = {
58+
"AllRevenue": "number",
59+
"AllRevenuePerConversion": "number",
60+
}
61+
ALL_REVENUE_FIELDS = list(ALL_REVENUE_FIELD_TYPES.keys())
62+
63+
IMPRESSION_FIELD_TYPES = {
64+
"ImpressionSharePercent": "number",
65+
"ImpressionLostToBudgetPercent": "number",
66+
"ImpressionLostToRankAggPercent": "number",
67+
}
68+
IMPRESSION_FIELDS = list(IMPRESSION_FIELD_TYPES.keys())
69+
70+
71+
HISTORICAL_FIELD_TYPES = {
72+
"HistoricalQualityScore": "number",
73+
"HistoricalExpectedCtr": "number",
74+
"HistoricalAdRelevance": "number",
75+
"HistoricalLandingPageExperience": "number",
76+
}
77+
HISTORICAL_FIELDS = list(HISTORICAL_FIELD_TYPES.keys())
78+
79+
BUDGET_FIELD_TYPES = {
80+
"BudgetName": "string",
81+
"BudgetStatus": "string",
82+
"BudgetAssociationStatus": "string",
83+
}
84+
BUDGET_FIELDS = list(BUDGET_FIELD_TYPES.keys())
85+
2086
REPORT_FIELD_TYPES = {
2187
"AccountId": "integer",
2288
"AdId": "integer",
2389
"AdGroupCriterionId": "integer",
2490
"AdGroupId": "integer",
2591
"AdRelevance": "number",
2692
"Assists": "integer",
27-
"AverageCpc": "number",
28-
"AveragePosition": "number",
93+
"AllCostPerConversion": "number",
94+
"AllReturnOnAdSpend": "number",
2995
"BusinessCategoryId": "integer",
3096
"BusinessListingId": "integer",
3197
"CampaignId": "integer",
3298
"ClickCalls": "integer",
3399
"Clicks": "integer",
34-
"ConversionRate": "number",
35-
"Conversions": "number",
36100
"CostPerAssist": "number",
37101
"CostPerConversion": "number",
38102
"Ctr": "number",
@@ -45,29 +109,36 @@
45109
"EstimatedImpressionPercent": "number",
46110
"EstimatedImpressions": "integer",
47111
"ExactMatchImpressionSharePercent": "number",
48-
"HistoricAdRelevance": "number",
49112
"Impressions": "integer",
50113
"ImpressionSharePercent": "number",
51114
"KeywordId": "integer",
52115
"LandingPageExperience": "number",
53-
"LowQualityClicks": "integer",
54-
"LowQualityClicksPercent": "number",
55-
"LowQualityImpressions": "integer",
56-
"LowQualitySophisticatedClicks": "integer",
57116
"PhoneCalls": "integer",
58117
"PhoneImpressions": "integer",
118+
"Ptr": "number",
59119
"QualityImpact": "number",
60120
"QualityScore": "number",
61121
"ReturnOnAdSpend": "number",
62-
"Revenue": "number",
63-
"RevenuePerAssist": "number",
64-
"RevenuePerConversion": "number",
65122
"SidebarBid": "number",
66123
"Spend": "number",
67124
"MonthlyBudget": "number",
68125
"DailySpend": "number",
69126
"MonthToDateSpend": "number",
70127
"AbsoluteTopImpressionRatePercent": "number",
128+
"ViewThroughConversions": "integer",
129+
"ViewThroughConversionsQualified": "number",
130+
"MainlineBid": "number",
131+
"Mainline1Bid": "number",
132+
"FirstPageBid": "number",
133+
**AVERAGE_FIELD_TYPES,
134+
**CONVERSION_FIELD_TYPES,
135+
**ALL_CONVERSION_FIELD_TYPES,
136+
**LOW_QUALITY_FIELD_TYPES,
137+
**REVENUE_FIELD_TYPES,
138+
**ALL_REVENUE_FIELD_TYPES,
139+
**IMPRESSION_FIELD_TYPES,
140+
**HISTORICAL_FIELD_TYPES,
141+
**BUDGET_FIELD_TYPES,
71142
}
72143

73144

Lines changed: 73 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,40 @@
11
{
22
"type": ["null", "object"],
33
"properties": {
4-
"AccountName": {
5-
"type": ["null", "string"]
6-
},
7-
"AccountNumber": {
8-
"type": ["null", "string"]
9-
},
104
"AccountId": {
115
"type": ["null", "integer"]
126
},
137
"TimePeriod": {
148
"type": ["null", "string"]
159
},
10+
"CurrencyCode": {
11+
"type": ["null", "string"]
12+
},
13+
"AdDistribution": {
14+
"type": ["null", "string"]
15+
},
1616
"DeviceType": {
1717
"type": ["null", "string"]
1818
},
1919
"Network": {
2020
"type": ["null", "string"]
2121
},
22-
"Impressions": {
22+
"DeliveredMatchType": {
23+
"type": ["null", "string"]
24+
},
25+
"DeviceOS": {
26+
"type": ["null", "string"]
27+
},
28+
"TopVsOther": {
29+
"type": ["null", "string"]
30+
},
31+
"BidMatchType": {
32+
"type": ["null", "string"]
33+
},
34+
"PhoneImpressions": {
35+
"type": ["null", "integer"]
36+
},
37+
"PhoneCalls": {
2338
"type": ["null", "integer"]
2439
},
2540
"Clicks": {
@@ -28,20 +43,68 @@
2843
"Ctr": {
2944
"type": ["null", "number"]
3045
},
31-
"AverageCpc": {
46+
"Spend": {
3247
"type": ["null", "number"]
3348
},
34-
"Spend": {
49+
"Impressions": {
50+
"type": ["null", "integer"]
51+
},
52+
"CostPerConversion": {
3553
"type": ["null", "number"]
3654
},
55+
"Ptr": {
56+
"type": ["null", "number"]
57+
},
58+
"Assists": {
59+
"type": ["null", "integer"]
60+
},
3761
"ReturnOnAdSpend": {
3862
"type": ["null", "number"]
3963
},
40-
"RevenuePerConversion": {
64+
"CostPerAssist": {
65+
"type": ["null", "number"]
66+
},
67+
"AverageCpc": {
68+
"type": ["null", "number"]
69+
},
70+
"AveragePosition": {
71+
"type": ["null", "number"]
72+
},
73+
"AverageCpm": {
74+
"type": ["null", "number"]
75+
},
76+
"Conversions": {
4177
"type": ["null", "number"]
4278
},
4379
"ConversionRate": {
4480
"type": ["null", "number"]
81+
},
82+
"LowQualityClicks": {
83+
"type": ["null", "integer"]
84+
},
85+
"LowQualityClicksPercent": {
86+
"type": ["null", "number"]
87+
},
88+
"LowQualityImpressions": {
89+
"type": ["null", "integer"]
90+
},
91+
"LowQualitySophisticatedClicks": {
92+
"type": ["null", "integer"]
93+
},
94+
"LowQualityConversions": {
95+
"type": ["null", "integer"]
96+
},
97+
"LowQualityConversionRate": {
98+
"type": ["null", "number"]
99+
},
100+
"Revenue": {
101+
"type": ["null", "number"]
102+
},
103+
"RevenuePerConversion": {
104+
"type": ["null", "number"]
105+
},
106+
"RevenuePerAssist": {
107+
"type": ["null", "number"]
45108
}
46109
}
47110
}

0 commit comments

Comments
 (0)