airbyte-source-google-ads 4.1.4.dev202511261630__py3-none-any.whl → 4.1.4.dev202512101647__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-source-google-ads
3
- Version: 4.1.4.dev202511261630
3
+ Version: 4.1.4.dev202512101647
4
4
  Summary: Source implementation for Google Ads.
5
5
  Home-page: https://airbyte.com
6
6
  License: Elv2
@@ -1,8 +1,8 @@
1
1
  source_google_ads/__init__.py,sha256=Nlo5H6LlaSgg7tx_LyqMIy3MXiAagfk3izZ9o44VvSE,1201
2
- source_google_ads/components.py,sha256=_Jku4_NHRg4OzYSmtk23H0LfYo0bbqfx1navUoUztug,40970
2
+ source_google_ads/components.py,sha256=7VoXzxbU8mPq3jn5SZZDAk-nFs7xw51AteEDSvHPo4w,41443
3
3
  source_google_ads/config_migrations.py,sha256=oBi_qNqBpLS8GNCaIOBo0stNdYuyqVl6lkrhdXRwMX8,4405
4
4
  source_google_ads/google_ads.py,sha256=cxS18tz0fFJjmIhlhFQ3Zvu2K8bhDtmsl1kFeO7nNhk,11595
5
- source_google_ads/manifest.yaml,sha256=lloZo6cDdrkE-HXn66cRfNi0MwvK80lGCjFdmsiqLto,220336
5
+ source_google_ads/manifest.yaml,sha256=CVZmWC0KPGfbQdvtSxIpiGWTwnrtiDdHpV9vCm6IRFA,224944
6
6
  source_google_ads/models.py,sha256=ZmdS3z_2roaEQgV2Mx1CDm33MztpQ66SfHDzP8XwZog,1658
7
7
  source_google_ads/run.py,sha256=ydIyq_vSNV5Z4mJYnsO5GyNDsLDd0qibBsq6wnvuFAo,2002
8
8
  source_google_ads/schemas/customer_client.json,sha256=oThcyUDO1yWpxtWPWdoAFqTXEIweF8N4q6mRI73Q6yU,984
@@ -11,7 +11,7 @@ source_google_ads/source.py,sha256=hz5ep6stMWHNvD73PIF_7bjnee49sY9YHHjaYNAPnOQ,1
11
11
  source_google_ads/spec.json,sha256=8hbc7smbaffIkYCkX2BYJLB9kgaH8vYKCg-H0y1FvUs,7810
12
12
  source_google_ads/streams.py,sha256=FB-DNJlXhjQADptT-wrv3iGWoliyRuvDuHGeqiN9HsY,13349
13
13
  source_google_ads/utils.py,sha256=-KpgGv2W8WueXvGRC3xbVreDl5-5-vU9OwzC5SZDKVc,21409
14
- airbyte_source_google_ads-4.1.4.dev202511261630.dist-info/METADATA,sha256=nQGZU1vv_9_Qg5bWxpUISh8hpCyRDytlAb8CgGUP_l8,5397
15
- airbyte_source_google_ads-4.1.4.dev202511261630.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
16
- airbyte_source_google_ads-4.1.4.dev202511261630.dist-info/entry_points.txt,sha256=pP4Llir93XGkHFDZfXXxK7qOWo9_U1ssCJToyxEUB4w,63
17
- airbyte_source_google_ads-4.1.4.dev202511261630.dist-info/RECORD,,
14
+ airbyte_source_google_ads-4.1.4.dev202512101647.dist-info/METADATA,sha256=iTlcWOsVOV4jATnlkBlvpvtVG30ZoDOR7svn1L3FJfY,5397
15
+ airbyte_source_google_ads-4.1.4.dev202512101647.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
16
+ airbyte_source_google_ads-4.1.4.dev202512101647.dist-info/entry_points.txt,sha256=pP4Llir93XGkHFDZfXXxK7qOWo9_U1ssCJToyxEUB4w,63
17
+ airbyte_source_google_ads-4.1.4.dev202512101647.dist-info/RECORD,,
@@ -761,6 +761,17 @@ class CustomGAQueryHttpRequester(HttpRequester):
761
761
  return self.query[from_index + 4 :].strip()
762
762
 
763
763
 
764
+ class CustomGAQueryClickViewHttpRequester(CustomGAQueryHttpRequester):
765
+ @staticmethod
766
+ def _insert_segments_date_expr(query: GAQL, start_date: str, end_date: str) -> GAQL:
767
+ if "segments.date" not in query.fields:
768
+ query = query.append_field("segments.date")
769
+ condition = f"segments.date ='{start_date}'"
770
+ if query.where:
771
+ return query.set_where(query.where + " AND " + condition)
772
+ return query.set_where(condition)
773
+
774
+
764
775
  @dataclass()
765
776
  class CustomGAQuerySchemaLoader(SchemaLoader):
766
777
  """
@@ -1030,35 +1030,6 @@ definitions:
1030
1030
  )
1031
1031
  }}
1032
1032
  create_or_update: true
1033
- - type: ComponentMappingDefinition
1034
- field_path:
1035
- - incremental_sync
1036
- - step
1037
- value: "P1D"
1038
- condition: >-
1039
- {{
1040
- (
1041
- (
1042
- components_values.get('query', '').count('segments.date') == 1
1043
- and (components_values.get('query') | regex_search('(?i)(\\bSELECT\\b[\\s\\S]*?segments\\.date[\\s\\S]*?\\bFROM\\b)'))
1044
- )
1045
- or
1046
- (
1047
- components_values.get('query', '').count('segments.date') == 2
1048
- and (components_values.get('query') | regex_search('(?i)(\\bSELECT\\b[\\s\\S]*?segments\\.date[\\s\\S]*?\\bFROM\\b)'))
1049
- and (components_values.get('query') | regex_search('(?i)(\\bORDER\\s+BY\\b[\\s\\S]*?segments\\.date)'))
1050
- )
1051
- ) and components_values.get('query', '') | regex_search('(?i)(\\bFROM\\s+click_view\\b)')
1052
- }}
1053
- create_or_update: true
1054
- - type: ComponentMappingDefinition
1055
- field_path:
1056
- - retriever
1057
- - requester
1058
- - $parameters
1059
- - query
1060
- value: "{{ components_values.get('query', None) }}"
1061
- create_or_update: true
1062
1033
  - type: ComponentMappingDefinition
1063
1034
  field_path:
1064
1035
  - retriever
@@ -1106,6 +1077,130 @@ definitions:
1106
1077
  )
1107
1078
  }}
1108
1079
  create_or_update: true
1080
+ - type: ComponentMappingDefinition
1081
+ field_path:
1082
+ - incremental_sync
1083
+ - step
1084
+ value: "P1D"
1085
+ condition: >-
1086
+ {{
1087
+ (
1088
+ (
1089
+ components_values.get('query', '').count('segments.date') == 1
1090
+ and (components_values.get('query') | regex_search('(?i)(\\bSELECT\\b[\\s\\S]*?segments\\.date[\\s\\S]*?\\bFROM\\b)'))
1091
+ )
1092
+ or
1093
+ (
1094
+ components_values.get('query', '').count('segments.date') == 2
1095
+ and (components_values.get('query') | regex_search('(?i)(\\bSELECT\\b[\\s\\S]*?segments\\.date[\\s\\S]*?\\bFROM\\b)'))
1096
+ and (components_values.get('query') | regex_search('(?i)(\\bORDER\\s+BY\\b[\\s\\S]*?segments\\.date)'))
1097
+ )
1098
+ ) and components_values.get('query', '') | regex_search('(?i)(\\bFROM\\s+click_view\\b)')
1099
+ }}
1100
+ create_or_update: true
1101
+ - type: ComponentMappingDefinition
1102
+ field_path:
1103
+ - incremental_sync
1104
+ - start_datetime
1105
+ value: >-
1106
+ {
1107
+ "type": "MinMaxDatetime",
1108
+ "datetime": "{{ max(config.get('start_date', day_delta(-90, format='%Y-%m-%d')), day_delta(-90, format='%Y-%m-%d')) }}",
1109
+ "datetime_format": "%Y-%m-%d"
1110
+ }
1111
+ condition: >-
1112
+ {{
1113
+ (
1114
+ (
1115
+ components_values.get('query', '').count('segments.date') == 1
1116
+ and (components_values.get('query') | regex_search('(?i)(\\bSELECT\\b[\\s\\S]*?segments\\.date[\\s\\S]*?\\bFROM\\b)'))
1117
+ )
1118
+ or
1119
+ (
1120
+ components_values.get('query', '').count('segments.date') == 2
1121
+ and (components_values.get('query') | regex_search('(?i)(\\bSELECT\\b[\\s\\S]*?segments\\.date[\\s\\S]*?\\bFROM\\b)'))
1122
+ and (components_values.get('query') | regex_search('(?i)(\\bORDER\\s+BY\\b[\\s\\S]*?segments\\.date)'))
1123
+ )
1124
+ ) and components_values.get('query', '') | regex_search('(?i)(\\bFROM\\s+click_view\\b)')
1125
+ }}
1126
+ create_or_update: true
1127
+ - type: ComponentMappingDefinition
1128
+ field_path:
1129
+ - incremental_sync
1130
+ - end_datetime
1131
+ value: >-
1132
+ {
1133
+ "type": "MinMaxDatetime",
1134
+ "datetime": "{{ format_datetime((str_to_datetime(config.get('end_date')) if config.get('end_date') else now_utc()) + duration('P1D'), '%Y-%m-%d') }}",
1135
+ "datetime_format": "%Y-%m-%d"
1136
+ }
1137
+ condition: >-
1138
+ {{
1139
+ (
1140
+ (
1141
+ components_values.get('query', '').count('segments.date') == 1
1142
+ and (components_values.get('query') | regex_search('(?i)(\\bSELECT\\b[\\s\\S]*?segments\\.date[\\s\\S]*?\\bFROM\\b)'))
1143
+ )
1144
+ or
1145
+ (
1146
+ components_values.get('query', '').count('segments.date') == 2
1147
+ and (components_values.get('query') | regex_search('(?i)(\\bSELECT\\b[\\s\\S]*?segments\\.date[\\s\\S]*?\\bFROM\\b)'))
1148
+ and (components_values.get('query') | regex_search('(?i)(\\bORDER\\s+BY\\b[\\s\\S]*?segments\\.date)'))
1149
+ )
1150
+ ) and components_values.get('query', '') | regex_search('(?i)(\\bFROM\\s+click_view\\b)')
1151
+ }}
1152
+ create_or_update: true
1153
+ - type: ComponentMappingDefinition
1154
+ field_path:
1155
+ - incremental_sync
1156
+ - cursor_granularity
1157
+ value: P1D
1158
+ condition: >-
1159
+ {{
1160
+ (
1161
+ (
1162
+ components_values.get('query', '').count('segments.date') == 1
1163
+ and (components_values.get('query') | regex_search('(?i)(\\bSELECT\\b[\\s\\S]*?segments\\.date[\\s\\S]*?\\bFROM\\b)'))
1164
+ )
1165
+ or
1166
+ (
1167
+ components_values.get('query', '').count('segments.date') == 2
1168
+ and (components_values.get('query') | regex_search('(?i)(\\bSELECT\\b[\\s\\S]*?segments\\.date[\\s\\S]*?\\bFROM\\b)'))
1169
+ and (components_values.get('query') | regex_search('(?i)(\\bORDER\\s+BY\\b[\\s\\S]*?segments\\.date)'))
1170
+ )
1171
+ ) and components_values.get('query', '') | regex_search('(?i)(\\bFROM\\s+click_view\\b)')
1172
+ }}
1173
+ create_or_update: true
1174
+ - type: ComponentMappingDefinition
1175
+ field_path:
1176
+ - retriever
1177
+ - requester
1178
+ - class_name
1179
+ value: "source_google_ads.components.CustomGAQueryClickViewHttpRequester"
1180
+ condition: >-
1181
+ {{
1182
+ (
1183
+ (
1184
+ components_values.get('query', '').count('segments.date') == 1
1185
+ and (components_values.get('query') | regex_search('(?i)(\\bSELECT\\b[\\s\\S]*?segments\\.date[\\s\\S]*?\\bFROM\\b)'))
1186
+ )
1187
+ or
1188
+ (
1189
+ components_values.get('query', '').count('segments.date') == 2
1190
+ and (components_values.get('query') | regex_search('(?i)(\\bSELECT\\b[\\s\\S]*?segments\\.date[\\s\\S]*?\\bFROM\\b)'))
1191
+ and (components_values.get('query') | regex_search('(?i)(\\bORDER\\s+BY\\b[\\s\\S]*?segments\\.date)'))
1192
+ )
1193
+ ) and components_values.get('query', '') | regex_search('(?i)(\\bFROM\\s+click_view\\b)')
1194
+ }}
1195
+ create_or_update: true
1196
+ - type: ComponentMappingDefinition
1197
+ field_path:
1198
+ - retriever
1199
+ - requester
1200
+ - $parameters
1201
+ - query
1202
+ value: "{{ components_values.get('query', None) }}"
1203
+ create_or_update: true
1109
1204
  - type: ComponentMappingDefinition
1110
1205
  field_path:
1111
1206
  - retriever