apache-airflow-providers-google 14.0.0__py3-none-any.whl → 19.1.0rc1__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.
- airflow/providers/google/3rd-party-licenses/LICENSES.txt +14 -0
- airflow/providers/google/3rd-party-licenses/NOTICE +5 -0
- airflow/providers/google/__init__.py +3 -3
- airflow/providers/google/_vendor/__init__.py +0 -0
- airflow/providers/google/_vendor/json_merge_patch.py +91 -0
- airflow/providers/google/ads/hooks/ads.py +52 -43
- airflow/providers/google/ads/operators/ads.py +2 -2
- airflow/providers/google/ads/transfers/ads_to_gcs.py +3 -19
- airflow/providers/google/assets/gcs.py +1 -11
- airflow/providers/google/cloud/_internal_client/secret_manager_client.py +3 -2
- airflow/providers/google/cloud/bundles/gcs.py +161 -0
- airflow/providers/google/cloud/hooks/alloy_db.py +2 -3
- airflow/providers/google/cloud/hooks/bigquery.py +195 -318
- airflow/providers/google/cloud/hooks/bigquery_dts.py +8 -8
- airflow/providers/google/cloud/hooks/bigtable.py +3 -2
- airflow/providers/google/cloud/hooks/cloud_batch.py +8 -9
- airflow/providers/google/cloud/hooks/cloud_build.py +6 -65
- airflow/providers/google/cloud/hooks/cloud_composer.py +292 -24
- airflow/providers/google/cloud/hooks/cloud_logging.py +109 -0
- airflow/providers/google/cloud/hooks/cloud_memorystore.py +4 -3
- airflow/providers/google/cloud/hooks/cloud_run.py +20 -11
- airflow/providers/google/cloud/hooks/cloud_sql.py +136 -64
- airflow/providers/google/cloud/hooks/cloud_storage_transfer_service.py +35 -15
- airflow/providers/google/cloud/hooks/compute.py +7 -6
- airflow/providers/google/cloud/hooks/compute_ssh.py +7 -4
- airflow/providers/google/cloud/hooks/datacatalog.py +12 -3
- airflow/providers/google/cloud/hooks/dataflow.py +87 -242
- airflow/providers/google/cloud/hooks/dataform.py +9 -14
- airflow/providers/google/cloud/hooks/datafusion.py +7 -9
- airflow/providers/google/cloud/hooks/dataplex.py +13 -12
- airflow/providers/google/cloud/hooks/dataprep.py +2 -2
- airflow/providers/google/cloud/hooks/dataproc.py +76 -74
- airflow/providers/google/cloud/hooks/dataproc_metastore.py +4 -3
- airflow/providers/google/cloud/hooks/dlp.py +5 -4
- airflow/providers/google/cloud/hooks/gcs.py +144 -33
- airflow/providers/google/cloud/hooks/gen_ai.py +196 -0
- airflow/providers/google/cloud/hooks/kms.py +3 -2
- airflow/providers/google/cloud/hooks/kubernetes_engine.py +22 -17
- airflow/providers/google/cloud/hooks/looker.py +6 -1
- airflow/providers/google/cloud/hooks/managed_kafka.py +227 -3
- airflow/providers/google/cloud/hooks/mlengine.py +7 -8
- airflow/providers/google/cloud/hooks/natural_language.py +3 -2
- airflow/providers/google/cloud/hooks/os_login.py +3 -2
- airflow/providers/google/cloud/hooks/pubsub.py +6 -6
- airflow/providers/google/cloud/hooks/secret_manager.py +105 -12
- airflow/providers/google/cloud/hooks/spanner.py +75 -10
- airflow/providers/google/cloud/hooks/speech_to_text.py +3 -2
- airflow/providers/google/cloud/hooks/stackdriver.py +18 -18
- airflow/providers/google/cloud/hooks/tasks.py +4 -3
- airflow/providers/google/cloud/hooks/text_to_speech.py +3 -2
- airflow/providers/google/cloud/hooks/translate.py +8 -17
- airflow/providers/google/cloud/hooks/vertex_ai/auto_ml.py +8 -222
- airflow/providers/google/cloud/hooks/vertex_ai/batch_prediction_job.py +9 -15
- airflow/providers/google/cloud/hooks/vertex_ai/custom_job.py +33 -283
- airflow/providers/google/cloud/hooks/vertex_ai/dataset.py +5 -12
- airflow/providers/google/cloud/hooks/vertex_ai/endpoint_service.py +6 -12
- airflow/providers/google/cloud/hooks/vertex_ai/experiment_service.py +202 -0
- airflow/providers/google/cloud/hooks/vertex_ai/feature_store.py +311 -10
- airflow/providers/google/cloud/hooks/vertex_ai/generative_model.py +79 -75
- airflow/providers/google/cloud/hooks/vertex_ai/hyperparameter_tuning_job.py +7 -13
- airflow/providers/google/cloud/hooks/vertex_ai/model_service.py +8 -12
- airflow/providers/google/cloud/hooks/vertex_ai/pipeline_job.py +6 -12
- airflow/providers/google/cloud/hooks/vertex_ai/prediction_service.py +3 -2
- airflow/providers/google/cloud/hooks/vertex_ai/ray.py +223 -0
- airflow/providers/google/cloud/hooks/video_intelligence.py +3 -2
- airflow/providers/google/cloud/hooks/vision.py +7 -7
- airflow/providers/google/cloud/hooks/workflows.py +4 -3
- airflow/providers/google/cloud/links/alloy_db.py +0 -46
- airflow/providers/google/cloud/links/base.py +77 -7
- airflow/providers/google/cloud/links/bigquery.py +0 -47
- airflow/providers/google/cloud/links/bigquery_dts.py +0 -20
- airflow/providers/google/cloud/links/bigtable.py +0 -48
- airflow/providers/google/cloud/links/cloud_build.py +0 -73
- airflow/providers/google/cloud/links/cloud_functions.py +0 -33
- airflow/providers/google/cloud/links/cloud_memorystore.py +0 -58
- airflow/providers/google/cloud/links/{life_sciences.py → cloud_run.py} +5 -27
- airflow/providers/google/cloud/links/cloud_sql.py +0 -33
- airflow/providers/google/cloud/links/cloud_storage_transfer.py +17 -46
- airflow/providers/google/cloud/links/cloud_tasks.py +7 -26
- airflow/providers/google/cloud/links/compute.py +0 -58
- airflow/providers/google/cloud/links/data_loss_prevention.py +0 -169
- airflow/providers/google/cloud/links/datacatalog.py +23 -54
- airflow/providers/google/cloud/links/dataflow.py +0 -34
- airflow/providers/google/cloud/links/dataform.py +0 -64
- airflow/providers/google/cloud/links/datafusion.py +1 -90
- airflow/providers/google/cloud/links/dataplex.py +0 -154
- airflow/providers/google/cloud/links/dataprep.py +0 -24
- airflow/providers/google/cloud/links/dataproc.py +11 -89
- airflow/providers/google/cloud/links/datastore.py +0 -31
- airflow/providers/google/cloud/links/kubernetes_engine.py +11 -61
- airflow/providers/google/cloud/links/managed_kafka.py +11 -51
- airflow/providers/google/cloud/links/mlengine.py +0 -70
- airflow/providers/google/cloud/links/pubsub.py +0 -32
- airflow/providers/google/cloud/links/spanner.py +0 -33
- airflow/providers/google/cloud/links/stackdriver.py +0 -30
- airflow/providers/google/cloud/links/translate.py +17 -187
- airflow/providers/google/cloud/links/vertex_ai.py +28 -195
- airflow/providers/google/cloud/links/workflows.py +0 -52
- airflow/providers/google/cloud/log/gcs_task_handler.py +166 -118
- airflow/providers/google/cloud/log/stackdriver_task_handler.py +14 -9
- airflow/providers/google/cloud/openlineage/CloudStorageTransferJobFacet.json +68 -0
- airflow/providers/google/cloud/openlineage/CloudStorageTransferRunFacet.json +60 -0
- airflow/providers/google/cloud/openlineage/DataFusionRunFacet.json +32 -0
- airflow/providers/google/cloud/openlineage/facets.py +141 -40
- airflow/providers/google/cloud/openlineage/mixins.py +14 -13
- airflow/providers/google/cloud/openlineage/utils.py +19 -3
- airflow/providers/google/cloud/operators/alloy_db.py +76 -61
- airflow/providers/google/cloud/operators/bigquery.py +104 -667
- airflow/providers/google/cloud/operators/bigquery_dts.py +12 -12
- airflow/providers/google/cloud/operators/bigtable.py +38 -7
- airflow/providers/google/cloud/operators/cloud_base.py +22 -1
- airflow/providers/google/cloud/operators/cloud_batch.py +18 -18
- airflow/providers/google/cloud/operators/cloud_build.py +80 -36
- airflow/providers/google/cloud/operators/cloud_composer.py +157 -71
- airflow/providers/google/cloud/operators/cloud_logging_sink.py +341 -0
- airflow/providers/google/cloud/operators/cloud_memorystore.py +74 -46
- airflow/providers/google/cloud/operators/cloud_run.py +39 -20
- airflow/providers/google/cloud/operators/cloud_sql.py +46 -61
- airflow/providers/google/cloud/operators/cloud_storage_transfer_service.py +92 -14
- airflow/providers/google/cloud/operators/compute.py +18 -50
- airflow/providers/google/cloud/operators/datacatalog.py +167 -29
- airflow/providers/google/cloud/operators/dataflow.py +38 -15
- airflow/providers/google/cloud/operators/dataform.py +19 -7
- airflow/providers/google/cloud/operators/datafusion.py +43 -43
- airflow/providers/google/cloud/operators/dataplex.py +212 -126
- airflow/providers/google/cloud/operators/dataprep.py +1 -5
- airflow/providers/google/cloud/operators/dataproc.py +134 -207
- airflow/providers/google/cloud/operators/dataproc_metastore.py +102 -84
- airflow/providers/google/cloud/operators/datastore.py +22 -6
- airflow/providers/google/cloud/operators/dlp.py +24 -45
- airflow/providers/google/cloud/operators/functions.py +21 -14
- airflow/providers/google/cloud/operators/gcs.py +15 -12
- airflow/providers/google/cloud/operators/gen_ai.py +389 -0
- airflow/providers/google/cloud/operators/kubernetes_engine.py +115 -106
- airflow/providers/google/cloud/operators/looker.py +1 -1
- airflow/providers/google/cloud/operators/managed_kafka.py +362 -40
- airflow/providers/google/cloud/operators/natural_language.py +5 -3
- airflow/providers/google/cloud/operators/pubsub.py +69 -21
- airflow/providers/google/cloud/operators/spanner.py +53 -45
- airflow/providers/google/cloud/operators/speech_to_text.py +5 -4
- airflow/providers/google/cloud/operators/stackdriver.py +5 -11
- airflow/providers/google/cloud/operators/tasks.py +6 -15
- airflow/providers/google/cloud/operators/text_to_speech.py +4 -3
- airflow/providers/google/cloud/operators/translate.py +46 -20
- airflow/providers/google/cloud/operators/translate_speech.py +4 -3
- airflow/providers/google/cloud/operators/vertex_ai/auto_ml.py +44 -34
- airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py +34 -12
- airflow/providers/google/cloud/operators/vertex_ai/custom_job.py +62 -53
- airflow/providers/google/cloud/operators/vertex_ai/dataset.py +75 -11
- airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py +48 -12
- airflow/providers/google/cloud/operators/vertex_ai/experiment_service.py +435 -0
- airflow/providers/google/cloud/operators/vertex_ai/feature_store.py +532 -1
- airflow/providers/google/cloud/operators/vertex_ai/generative_model.py +135 -116
- airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py +16 -12
- airflow/providers/google/cloud/operators/vertex_ai/model_service.py +62 -14
- airflow/providers/google/cloud/operators/vertex_ai/pipeline_job.py +35 -10
- airflow/providers/google/cloud/operators/vertex_ai/ray.py +393 -0
- airflow/providers/google/cloud/operators/video_intelligence.py +5 -3
- airflow/providers/google/cloud/operators/vision.py +7 -5
- airflow/providers/google/cloud/operators/workflows.py +24 -19
- airflow/providers/google/cloud/secrets/secret_manager.py +2 -1
- airflow/providers/google/cloud/sensors/bigquery.py +2 -2
- airflow/providers/google/cloud/sensors/bigquery_dts.py +6 -4
- airflow/providers/google/cloud/sensors/bigtable.py +14 -6
- airflow/providers/google/cloud/sensors/cloud_composer.py +535 -33
- airflow/providers/google/cloud/sensors/cloud_storage_transfer_service.py +6 -5
- airflow/providers/google/cloud/sensors/dataflow.py +27 -10
- airflow/providers/google/cloud/sensors/dataform.py +2 -2
- airflow/providers/google/cloud/sensors/datafusion.py +4 -4
- airflow/providers/google/cloud/sensors/dataplex.py +7 -5
- airflow/providers/google/cloud/sensors/dataprep.py +2 -2
- airflow/providers/google/cloud/sensors/dataproc.py +10 -9
- airflow/providers/google/cloud/sensors/dataproc_metastore.py +4 -3
- airflow/providers/google/cloud/sensors/gcs.py +22 -21
- airflow/providers/google/cloud/sensors/looker.py +5 -5
- airflow/providers/google/cloud/sensors/pubsub.py +20 -20
- airflow/providers/google/cloud/sensors/tasks.py +2 -2
- airflow/providers/google/cloud/sensors/vertex_ai/feature_store.py +2 -2
- airflow/providers/google/cloud/sensors/workflows.py +6 -4
- airflow/providers/google/cloud/transfers/adls_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/azure_blob_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/azure_fileshare_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/bigquery_to_bigquery.py +11 -8
- airflow/providers/google/cloud/transfers/bigquery_to_gcs.py +14 -13
- airflow/providers/google/cloud/transfers/bigquery_to_mssql.py +7 -3
- airflow/providers/google/cloud/transfers/bigquery_to_mysql.py +12 -1
- airflow/providers/google/cloud/transfers/bigquery_to_postgres.py +24 -10
- airflow/providers/google/cloud/transfers/bigquery_to_sql.py +104 -5
- airflow/providers/google/cloud/transfers/calendar_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/cassandra_to_gcs.py +18 -22
- airflow/providers/google/cloud/transfers/facebook_ads_to_gcs.py +4 -5
- airflow/providers/google/cloud/transfers/gcs_to_bigquery.py +45 -38
- airflow/providers/google/cloud/transfers/gcs_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/gcs_to_local.py +5 -3
- airflow/providers/google/cloud/transfers/gcs_to_sftp.py +10 -4
- airflow/providers/google/cloud/transfers/gdrive_to_gcs.py +6 -2
- airflow/providers/google/cloud/transfers/gdrive_to_local.py +2 -2
- airflow/providers/google/cloud/transfers/http_to_gcs.py +193 -0
- airflow/providers/google/cloud/transfers/local_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/mssql_to_gcs.py +1 -1
- airflow/providers/google/cloud/transfers/oracle_to_gcs.py +36 -11
- airflow/providers/google/cloud/transfers/postgres_to_gcs.py +44 -12
- airflow/providers/google/cloud/transfers/s3_to_gcs.py +12 -6
- airflow/providers/google/cloud/transfers/salesforce_to_gcs.py +2 -2
- airflow/providers/google/cloud/transfers/sftp_to_gcs.py +36 -14
- airflow/providers/google/cloud/transfers/sheets_to_gcs.py +3 -3
- airflow/providers/google/cloud/transfers/sql_to_gcs.py +10 -10
- airflow/providers/google/cloud/triggers/bigquery.py +75 -34
- airflow/providers/google/cloud/triggers/bigquery_dts.py +2 -1
- airflow/providers/google/cloud/triggers/cloud_batch.py +2 -1
- airflow/providers/google/cloud/triggers/cloud_build.py +3 -2
- airflow/providers/google/cloud/triggers/cloud_composer.py +303 -47
- airflow/providers/google/cloud/triggers/cloud_run.py +2 -2
- airflow/providers/google/cloud/triggers/cloud_storage_transfer_service.py +96 -5
- airflow/providers/google/cloud/triggers/dataflow.py +125 -2
- airflow/providers/google/cloud/triggers/datafusion.py +1 -1
- airflow/providers/google/cloud/triggers/dataplex.py +16 -3
- airflow/providers/google/cloud/triggers/dataproc.py +124 -53
- airflow/providers/google/cloud/triggers/kubernetes_engine.py +46 -28
- airflow/providers/google/cloud/triggers/mlengine.py +1 -1
- airflow/providers/google/cloud/triggers/pubsub.py +17 -20
- airflow/providers/google/cloud/triggers/vertex_ai.py +8 -7
- airflow/providers/google/cloud/utils/bigquery.py +5 -7
- airflow/providers/google/cloud/utils/bigquery_get_data.py +1 -1
- airflow/providers/google/cloud/utils/credentials_provider.py +4 -3
- airflow/providers/google/cloud/utils/dataform.py +1 -1
- airflow/providers/google/cloud/utils/external_token_supplier.py +0 -1
- airflow/providers/google/cloud/utils/field_validator.py +1 -2
- airflow/providers/google/cloud/utils/validators.py +43 -0
- airflow/providers/google/common/auth_backend/google_openid.py +26 -9
- airflow/providers/google/common/consts.py +2 -1
- airflow/providers/google/common/deprecated.py +2 -1
- airflow/providers/google/common/hooks/base_google.py +40 -43
- airflow/providers/google/common/hooks/operation_helpers.py +78 -0
- airflow/providers/google/common/links/storage.py +0 -22
- airflow/providers/google/common/utils/get_secret.py +31 -0
- airflow/providers/google/common/utils/id_token_credentials.py +4 -5
- airflow/providers/google/firebase/operators/firestore.py +2 -2
- airflow/providers/google/get_provider_info.py +61 -216
- airflow/providers/google/go_module_utils.py +35 -3
- airflow/providers/google/leveldb/hooks/leveldb.py +30 -6
- airflow/providers/google/leveldb/operators/leveldb.py +2 -2
- airflow/providers/google/marketing_platform/hooks/analytics_admin.py +3 -2
- airflow/providers/google/marketing_platform/hooks/display_video.py +3 -109
- airflow/providers/google/marketing_platform/hooks/search_ads.py +1 -1
- airflow/providers/google/marketing_platform/links/analytics_admin.py +4 -5
- airflow/providers/google/marketing_platform/operators/analytics_admin.py +7 -6
- airflow/providers/google/marketing_platform/operators/campaign_manager.py +5 -5
- airflow/providers/google/marketing_platform/operators/display_video.py +28 -489
- airflow/providers/google/marketing_platform/operators/search_ads.py +2 -2
- airflow/providers/google/marketing_platform/sensors/campaign_manager.py +2 -2
- airflow/providers/google/marketing_platform/sensors/display_video.py +4 -64
- airflow/providers/google/suite/hooks/calendar.py +1 -1
- airflow/providers/google/suite/hooks/drive.py +2 -2
- airflow/providers/google/suite/hooks/sheets.py +15 -1
- airflow/providers/google/suite/operators/sheets.py +8 -3
- airflow/providers/google/suite/sensors/drive.py +2 -2
- airflow/providers/google/suite/transfers/gcs_to_gdrive.py +2 -2
- airflow/providers/google/suite/transfers/gcs_to_sheets.py +1 -1
- airflow/providers/google/suite/transfers/local_to_drive.py +3 -3
- airflow/providers/google/suite/transfers/sql_to_sheets.py +5 -4
- airflow/providers/google/version_compat.py +15 -1
- {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/METADATA +117 -72
- apache_airflow_providers_google-19.1.0rc1.dist-info/RECORD +331 -0
- {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/WHEEL +1 -1
- apache_airflow_providers_google-19.1.0rc1.dist-info/licenses/NOTICE +5 -0
- airflow/providers/google/cloud/example_dags/example_cloud_task.py +0 -54
- airflow/providers/google/cloud/hooks/automl.py +0 -679
- airflow/providers/google/cloud/hooks/life_sciences.py +0 -159
- airflow/providers/google/cloud/links/automl.py +0 -193
- airflow/providers/google/cloud/operators/automl.py +0 -1360
- airflow/providers/google/cloud/operators/life_sciences.py +0 -119
- airflow/providers/google/cloud/operators/mlengine.py +0 -1515
- airflow/providers/google/cloud/utils/mlengine_operator_utils.py +0 -273
- apache_airflow_providers_google-14.0.0.dist-info/RECORD +0 -318
- /airflow/providers/google/cloud/{example_dags → bundles}/__init__.py +0 -0
- {apache_airflow_providers_google-14.0.0.dist-info → apache_airflow_providers_google-19.1.0rc1.dist-info}/entry_points.txt +0 -0
- {airflow/providers/google → apache_airflow_providers_google-19.1.0rc1.dist-info/licenses}/LICENSE +0 -0
|
@@ -34,7 +34,7 @@ class GoogleDisplayVideo360Hook(GoogleBaseHook):
|
|
|
34
34
|
|
|
35
35
|
def __init__(
|
|
36
36
|
self,
|
|
37
|
-
api_version: str = "
|
|
37
|
+
api_version: str = "v4",
|
|
38
38
|
gcp_conn_id: str = "google_cloud_default",
|
|
39
39
|
impersonation_chain: str | Sequence[str] | None = None,
|
|
40
40
|
**kwargs,
|
|
@@ -46,18 +46,6 @@ class GoogleDisplayVideo360Hook(GoogleBaseHook):
|
|
|
46
46
|
)
|
|
47
47
|
self.api_version = api_version
|
|
48
48
|
|
|
49
|
-
def get_conn(self) -> Resource:
|
|
50
|
-
"""Retrieve connection to DisplayVideo."""
|
|
51
|
-
if not self._conn:
|
|
52
|
-
http_authorized = self._authorize()
|
|
53
|
-
self._conn = build(
|
|
54
|
-
"doubleclickbidmanager",
|
|
55
|
-
self.api_version,
|
|
56
|
-
http=http_authorized,
|
|
57
|
-
cache_discovery=False,
|
|
58
|
-
)
|
|
59
|
-
return self._conn
|
|
60
|
-
|
|
61
49
|
def get_conn_to_display_video(self) -> Resource:
|
|
62
50
|
"""Retrieve connection to DisplayVideo."""
|
|
63
51
|
if not self._conn:
|
|
@@ -89,107 +77,13 @@ class GoogleDisplayVideo360Hook(GoogleBaseHook):
|
|
|
89
77
|
"""
|
|
90
78
|
return [f"gdbm-{partner_id}/entity/{{{{ ds_nodash }}}}.*.{entity_type}.json"]
|
|
91
79
|
|
|
92
|
-
def create_query(self, query: dict[str, Any]) -> dict:
|
|
93
|
-
"""
|
|
94
|
-
Create a query.
|
|
95
|
-
|
|
96
|
-
:param query: Query object to be passed to request body.
|
|
97
|
-
"""
|
|
98
|
-
response = self.get_conn().queries().create(body=query).execute(num_retries=self.num_retries)
|
|
99
|
-
return response
|
|
100
|
-
|
|
101
|
-
def delete_query(self, query_id: str) -> None:
|
|
102
|
-
"""
|
|
103
|
-
Delete a stored query as well as the associated stored reports.
|
|
104
|
-
|
|
105
|
-
:param query_id: Query ID to delete.
|
|
106
|
-
"""
|
|
107
|
-
self.get_conn().queries().delete(queryId=query_id).execute(num_retries=self.num_retries)
|
|
108
|
-
|
|
109
|
-
def get_query(self, query_id: str) -> dict:
|
|
110
|
-
"""
|
|
111
|
-
Retrieve a stored query.
|
|
112
|
-
|
|
113
|
-
:param query_id: Query ID to retrieve.
|
|
114
|
-
"""
|
|
115
|
-
response = self.get_conn().queries().get(queryId=query_id).execute(num_retries=self.num_retries)
|
|
116
|
-
return response
|
|
117
|
-
|
|
118
|
-
def list_queries(self) -> list[dict]:
|
|
119
|
-
"""Retrieve stored queries."""
|
|
120
|
-
response = self.get_conn().queries().list().execute(num_retries=self.num_retries)
|
|
121
|
-
return response.get("queries", [])
|
|
122
|
-
|
|
123
|
-
def run_query(self, query_id: str, params: dict[str, Any] | None) -> dict:
|
|
124
|
-
"""
|
|
125
|
-
Run a stored query to generate a report.
|
|
126
|
-
|
|
127
|
-
:param query_id: Query ID to run.
|
|
128
|
-
:param params: Parameters for the report.
|
|
129
|
-
"""
|
|
130
|
-
return (
|
|
131
|
-
self.get_conn().queries().run(queryId=query_id, body=params).execute(num_retries=self.num_retries)
|
|
132
|
-
)
|
|
133
|
-
|
|
134
|
-
def get_report(self, query_id: str, report_id: str) -> dict:
|
|
135
|
-
"""
|
|
136
|
-
Retrieve a report.
|
|
137
|
-
|
|
138
|
-
:param query_id: Query ID for which report was generated.
|
|
139
|
-
:param report_id: Report ID to retrieve.
|
|
140
|
-
"""
|
|
141
|
-
return (
|
|
142
|
-
self.get_conn()
|
|
143
|
-
.queries()
|
|
144
|
-
.reports()
|
|
145
|
-
.get(queryId=query_id, reportId=report_id)
|
|
146
|
-
.execute(num_retries=self.num_retries)
|
|
147
|
-
)
|
|
148
|
-
|
|
149
|
-
def upload_line_items(self, line_items: Any) -> list[dict[str, Any]]:
|
|
150
|
-
"""
|
|
151
|
-
Upload line items in CSV format.
|
|
152
|
-
|
|
153
|
-
:param line_items: downloaded data from GCS and passed to the body request
|
|
154
|
-
:return: response body.
|
|
155
|
-
"""
|
|
156
|
-
request_body = {
|
|
157
|
-
"lineItems": line_items,
|
|
158
|
-
"dryRun": False,
|
|
159
|
-
"format": "CSV",
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
response = (
|
|
163
|
-
self.get_conn()
|
|
164
|
-
.lineitems()
|
|
165
|
-
.uploadlineitems(body=request_body)
|
|
166
|
-
.execute(num_retries=self.num_retries)
|
|
167
|
-
)
|
|
168
|
-
return response
|
|
169
|
-
|
|
170
|
-
def download_line_items(self, request_body: dict[str, Any]) -> list[Any]:
|
|
171
|
-
"""
|
|
172
|
-
Retrieve line items in CSV format.
|
|
173
|
-
|
|
174
|
-
:param request_body: dictionary with parameters that should be passed into.
|
|
175
|
-
More information about it can be found here:
|
|
176
|
-
https://developers.google.com/bid-manager/v1.1/lineitems/downloadlineitems
|
|
177
|
-
"""
|
|
178
|
-
response = (
|
|
179
|
-
self.get_conn()
|
|
180
|
-
.lineitems()
|
|
181
|
-
.downloadlineitems(body=request_body)
|
|
182
|
-
.execute(num_retries=self.num_retries)
|
|
183
|
-
)
|
|
184
|
-
return response["lineItems"]
|
|
185
|
-
|
|
186
80
|
def create_sdf_download_operation(self, body_request: dict[str, Any]) -> dict[str, Any]:
|
|
187
81
|
"""
|
|
188
82
|
Create an SDF Download Task and Returns an Operation.
|
|
189
83
|
|
|
190
84
|
:param body_request: Body request.
|
|
191
85
|
|
|
192
|
-
More information about body request
|
|
86
|
+
More information about body request can be found here:
|
|
193
87
|
https://developers.google.com/display-video/api/reference/rest/v1/sdfdownloadtasks/create
|
|
194
88
|
"""
|
|
195
89
|
result = (
|
|
@@ -219,7 +113,7 @@ class GoogleDisplayVideo360Hook(GoogleBaseHook):
|
|
|
219
113
|
"""
|
|
220
114
|
Download media.
|
|
221
115
|
|
|
222
|
-
:param resource_name: of the media that is being downloaded.
|
|
116
|
+
:param resource_name: The resource name of the media that is being downloaded.
|
|
223
117
|
"""
|
|
224
118
|
request = self.get_conn_to_display_video().media().download_media(resourceName=resource_name)
|
|
225
119
|
return request
|
|
@@ -23,11 +23,11 @@ from collections.abc import Sequence
|
|
|
23
23
|
from functools import cached_property
|
|
24
24
|
from typing import TYPE_CHECKING, Any
|
|
25
25
|
|
|
26
|
+
from google.oauth2.credentials import Credentials
|
|
26
27
|
from googleapiclient.discovery import build
|
|
27
28
|
|
|
28
29
|
from airflow.exceptions import AirflowException
|
|
29
30
|
from airflow.providers.google.common.hooks.base_google import GoogleBaseHook
|
|
30
|
-
from google.oauth2.credentials import Credentials
|
|
31
31
|
|
|
32
32
|
if TYPE_CHECKING:
|
|
33
33
|
from googleapiclient.discovery import Resource
|
|
@@ -18,11 +18,12 @@ from __future__ import annotations
|
|
|
18
18
|
|
|
19
19
|
from typing import TYPE_CHECKING, ClassVar
|
|
20
20
|
|
|
21
|
-
from airflow.
|
|
21
|
+
from airflow.providers.common.compat.sdk import BaseOperatorLink, XCom
|
|
22
22
|
|
|
23
23
|
if TYPE_CHECKING:
|
|
24
24
|
from airflow.models.taskinstancekey import TaskInstanceKey
|
|
25
|
-
from airflow.
|
|
25
|
+
from airflow.providers.common.compat.sdk import Context
|
|
26
|
+
from airflow.providers.google.version_compat import BaseOperator
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
BASE_LINK = "https://analytics.google.com/analytics/web/"
|
|
@@ -56,11 +57,9 @@ class GoogleAnalyticsPropertyLink(GoogleAnalyticsBaseLink):
|
|
|
56
57
|
@staticmethod
|
|
57
58
|
def persist(
|
|
58
59
|
context: Context,
|
|
59
|
-
task_instance: BaseOperator,
|
|
60
60
|
property_id: str,
|
|
61
61
|
):
|
|
62
|
-
task_instance.xcom_push(
|
|
63
|
-
context,
|
|
62
|
+
context["task_instance"].xcom_push(
|
|
64
63
|
key=GoogleAnalyticsPropertyLink.key,
|
|
65
64
|
value={"property_id": property_id},
|
|
66
65
|
)
|
|
@@ -22,10 +22,6 @@ from __future__ import annotations
|
|
|
22
22
|
from collections.abc import Sequence
|
|
23
23
|
from typing import TYPE_CHECKING, Any
|
|
24
24
|
|
|
25
|
-
from airflow.exceptions import AirflowNotFoundException
|
|
26
|
-
from airflow.providers.google.cloud.operators.cloud_base import GoogleCloudBaseOperator
|
|
27
|
-
from airflow.providers.google.marketing_platform.hooks.analytics_admin import GoogleAnalyticsAdminHook
|
|
28
|
-
from airflow.providers.google.marketing_platform.links.analytics_admin import GoogleAnalyticsPropertyLink
|
|
29
25
|
from google.analytics.admin_v1beta import (
|
|
30
26
|
Account,
|
|
31
27
|
DataStream,
|
|
@@ -34,11 +30,17 @@ from google.analytics.admin_v1beta import (
|
|
|
34
30
|
)
|
|
35
31
|
from google.api_core.gapic_v1.method import DEFAULT, _MethodDefault
|
|
36
32
|
|
|
33
|
+
from airflow.exceptions import AirflowNotFoundException
|
|
34
|
+
from airflow.providers.google.cloud.operators.cloud_base import GoogleCloudBaseOperator
|
|
35
|
+
from airflow.providers.google.marketing_platform.hooks.analytics_admin import GoogleAnalyticsAdminHook
|
|
36
|
+
from airflow.providers.google.marketing_platform.links.analytics_admin import GoogleAnalyticsPropertyLink
|
|
37
|
+
|
|
37
38
|
if TYPE_CHECKING:
|
|
38
|
-
from airflow.utils.context import Context
|
|
39
39
|
from google.api_core.retry import Retry
|
|
40
40
|
from google.protobuf.message import Message
|
|
41
41
|
|
|
42
|
+
from airflow.providers.common.compat.sdk import Context
|
|
43
|
+
|
|
42
44
|
|
|
43
45
|
class GoogleAnalyticsAdminListAccountsOperator(GoogleCloudBaseOperator):
|
|
44
46
|
"""
|
|
@@ -192,7 +194,6 @@ class GoogleAnalyticsAdminCreatePropertyOperator(GoogleCloudBaseOperator):
|
|
|
192
194
|
self.log.info("The Google Analytics property %s was created successfully.", prop.name)
|
|
193
195
|
GoogleAnalyticsPropertyLink.persist(
|
|
194
196
|
context=context,
|
|
195
|
-
task_instance=self,
|
|
196
197
|
property_id=prop.name.lstrip("properties/"),
|
|
197
198
|
)
|
|
198
199
|
|
|
@@ -28,12 +28,12 @@ from typing import TYPE_CHECKING, Any
|
|
|
28
28
|
from googleapiclient import http
|
|
29
29
|
|
|
30
30
|
from airflow.exceptions import AirflowException
|
|
31
|
-
from airflow.models import BaseOperator
|
|
32
31
|
from airflow.providers.google.cloud.hooks.gcs import GCSHook
|
|
33
32
|
from airflow.providers.google.marketing_platform.hooks.campaign_manager import GoogleCampaignManagerHook
|
|
33
|
+
from airflow.providers.google.version_compat import BaseOperator
|
|
34
34
|
|
|
35
35
|
if TYPE_CHECKING:
|
|
36
|
-
from airflow.
|
|
36
|
+
from airflow.providers.common.compat.sdk import Context
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
class GoogleCampaignManagerDeleteReportOperator(BaseOperator):
|
|
@@ -237,7 +237,7 @@ class GoogleCampaignManagerDownloadReportOperator(BaseOperator):
|
|
|
237
237
|
mime_type="text/csv",
|
|
238
238
|
)
|
|
239
239
|
|
|
240
|
-
|
|
240
|
+
context["task_instance"].xcom_push(key="report_name", value=report_name)
|
|
241
241
|
|
|
242
242
|
|
|
243
243
|
class GoogleCampaignManagerInsertReportOperator(BaseOperator):
|
|
@@ -308,7 +308,7 @@ class GoogleCampaignManagerInsertReportOperator(BaseOperator):
|
|
|
308
308
|
self.log.info("Inserting Campaign Manager report.")
|
|
309
309
|
response = hook.insert_report(profile_id=self.profile_id, report=self.report)
|
|
310
310
|
report_id = response.get("id")
|
|
311
|
-
|
|
311
|
+
context["task_instance"].xcom_push(key="report_id", value=report_id)
|
|
312
312
|
self.log.info("Report successfully inserted. Report id: %s", report_id)
|
|
313
313
|
return response
|
|
314
314
|
|
|
@@ -381,7 +381,7 @@ class GoogleCampaignManagerRunReportOperator(BaseOperator):
|
|
|
381
381
|
synchronous=self.synchronous,
|
|
382
382
|
)
|
|
383
383
|
file_id = response.get("id")
|
|
384
|
-
|
|
384
|
+
context["task_instance"].xcom_push(key="file_id", value=file_id)
|
|
385
385
|
self.log.info("Report file id: %s", file_id)
|
|
386
386
|
return response
|
|
387
387
|
|