Skip to content

Commit 69b6629

Browse files
authored
Fix issue 5411: Connector skipping dates (#5422)
1 parent d693b59 commit 69b6629

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

airbyte-integrations/connectors/source-google-ads/source_google_ads/google_ads.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ def convert_schema_into_query(
7676
query_template = f"SELECT {fields} FROM {from_category} "
7777

7878
if cursor_field:
79-
query_template += f"WHERE {cursor_field} > '{from_date}' AND {cursor_field} < '{to_date}' ORDER BY {cursor_field} ASC"
79+
# Fix issue 5411: Make date_start and date_end inclusive.
80+
query_template += f"WHERE {cursor_field} >= '{from_date}' AND {cursor_field} <= '{to_date}' ORDER BY {cursor_field} ASC"
8081

8182
return query_template
8283

airbyte-integrations/connectors/source-google-ads/unit_tests/test_google_ads.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,13 @@
2323
#
2424

2525
from datetime import date
26+
import pendulum
2627

2728
from source_google_ads.google_ads import GoogleAds
2829

30+
from source_google_ads.streams import chunk_date_range
31+
from source_google_ads.streams import IncrementalGoogleAdsStream
32+
2933
SAMPLE_SCHEMA = {
3034
"properties": {
3135
"segment.date": {
@@ -115,10 +119,22 @@ def test_get_fields_from_schema():
115119
response = GoogleAds.get_fields_from_schema(SAMPLE_SCHEMA)
116120
assert response == ["segment.date"]
117121

122+
def test_interval_chunking():
123+
mock_intervals = [{'segments.date': '2021-05-18'}, {'segments.date': '2021-06-18'}, {'segments.date': '2021-07-18'}]
124+
intervals = chunk_date_range('2021-06-01', 14, 'segments.date', '2021-08-15')
125+
126+
assert mock_intervals == intervals
127+
128+
def test_get_date_params():
129+
mock_start_date = '2021-05-19' # Please note that this is equal to inputted stream_slice start date + 1 day
130+
mock_end_date = '2021-06-18'
131+
start_date, end_date = IncrementalGoogleAdsStream.get_date_params(stream_slice={'segments.date': '2021-05-18'}, cursor_field='segments.date', end_date=pendulum.parse('2021-08-15'))
132+
133+
assert mock_start_date == start_date and mock_end_date == end_date
118134

119135
def test_convert_schema_into_query():
120136
report_name = "ad_group_ad_report"
121-
query = "SELECT segment.date FROM ad_group_ad WHERE segments.date > '2020-01-01' AND segments.date < '2020-03-01' ORDER BY segments.date ASC"
137+
query = "SELECT segment.date FROM ad_group_ad WHERE segments.date >= '2020-01-01' AND segments.date <= '2020-03-01' ORDER BY segments.date ASC"
122138
response = GoogleAds.convert_schema_into_query(SAMPLE_SCHEMA, report_name, "2020-01-01", "2020-03-01", "segments.date")
123139
assert response == query
124140

0 commit comments

Comments
 (0)