Events
31 Mar, 11 pm - 2 Apr, 11 pm
The biggest Fabric, Power BI, and SQL learning event. March 31 – April 2. Use code FABINSIDER to save $400.
Register todayThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
APPLIES TO:
Azure Data Factory
Azure Synapse Analytics
Tip
Try out Data Factory in Microsoft Fabric, an all-in-one analytics solution for enterprises. Microsoft Fabric covers everything from data movement to data science, real-time analytics, business intelligence, and reporting. Learn how to start a new trial for free!
This article outlines how to use the Copy Activity in an Azure Data Factory or Synapse Analytics pipeline to copy data from Google Ads. It builds on the copy activity overview article that presents a general overview of copy activity.
Important
Please kindly upgrade your Google Ads driver version before February 18, 2024. If not, connection will start to fail with an error because of the deprecation of the legacy driver.
This Google Ads connector is supported for the following capabilities:
Supported capabilities | IR |
---|---|
Copy activity (source/-) | ① ② |
Lookup activity | ① ② |
① Azure integration runtime ② Self-hosted integration runtime
For a list of data stores that are supported as sources/sinks, see the Supported data stores table.
The service provides a built-in driver to enable connectivity, therefore you don't need to manually install any driver using this connector.
To perform the Copy activity with a pipeline, you can use one of the following tools or SDKs:
Use the following steps to create a linked service to Google Ads in the Azure portal UI.
Browse to the Manage tab in your Azure Data Factory or Synapse workspace and select Linked Services, then click New:
Search for Google Ads and select the Google Ads connector.
Configure the service details, test the connection, and create the new linked service.
The following sections provide details about properties that are used to define Data Factory entities specific to Google Ads connector.
The following properties are supported for Google Ads linked service:
Property | Description | Required |
---|---|---|
type | The type property must be set to: GoogleAdWords | Yes |
googleAdsApiVersion | The Google Ads API version that you use when you select the recommended driver version. You can refer this article for API version information. | Yes |
clientCustomerID | The Client customer ID of the Ads account that you want to fetch report data for. | Yes |
loginCustomerID | The customer ID of the Google Ads manager account through which you want to fetch report data of specific customer. | No |
developerToken | The developer token associated with the manager account that you use to grant access to the Ads API. You can choose to mark this field as a SecureString to store it securely, or store password in Azure Key Vault and let the copy activity pull from there when performing data copy - learn more from Store credentials in Key Vault. | Yes |
authenticationType | The OAuth 2.0 authentication mechanism used for authentication. Allowed values are: ServiceAuthentication, UserAuthentication. ServiceAuthentication can only be used on self-hosted IR. |
Yes |
For UserAuthentication: | ||
refreshToken | The refresh token obtained from Google for authorizing access to Ads for UserAuthentication. You can choose to mark this field as a SecureString to store it securely, or store password in Azure Key Vault and let the copy activity pull from there when performing data copy - learn more from Store credentials in Key Vault. | No |
clientId | The client ID of the Google application used to acquire the refresh token. You can choose to mark this field as a SecureString to store it securely, or store password in Azure Key Vault and let the copy activity pull from there when performing data copy - learn more from Store credentials in Key Vault. | No |
clientSecret | The client secret of the google application used to acquire the refresh token. You can choose to mark this field as a SecureString to store it securely, or store password in Azure Key Vault and let the copy activity pull from there when performing data copy - learn more from Store credentials in Key Vault. | No |
For ServiceAuthentication: | ||
The service account email ID that is used for ServiceAuthentication and can only be used on self-hosted IR. | No | |
privateKey | The service private key that is used for ServiceAuthentication for recommended driver version and can only be used on self-hosted IR. You can choose to mark this field as a SecureString to store it securely, or store password in Azure Key Vault and let the copy activity pull from there when performing data copy - learn more from Store credentials in Key Vault. | No |
For ServiceAuthentication using the legacy driver version: | ||
The service account email ID that is used for ServiceAuthentication and can only be used on self-hosted IR. | No | |
keyFilePath | The full path to the .p12 or .json key file that is used to authenticate the service account email address and can only be used on self-hosted IR. |
No |
trustedCertPath | The full path of the .pem file containing trusted CA certificates for verifying the server when connecting over TLS. This property can only be set when using TLS on self-hosted IR. The default value is the cacerts.pem file installed with the IR. | No |
useSystemTrustStore | Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false. | No |
Example:
{
"name": "GoogleAdsLinkedService",
"properties": {
"type": "GoogleAdWords",
"typeProperties": {
"clientCustomerID": "<clientCustomerID>",
"loginCustomerID": "<loginCustomerID>",
"developerToken": {
"type": "SecureString",
"value": "<developerToken>"
},
"authenticationType": "UserAuthentication",
"refreshToken": {
"type": "SecureString",
"value": "<refreshToken>"
},
"clientId": {
"type": "SecureString",
"value": "<clientId>"
},
"clientSecret": {
"type": "SecureString",
"value": "<clientSecret>"
},
"googleAdsApiVersion": "v14"
}
}
}
For a full list of sections and properties available for defining datasets, see the datasets article. This section provides a list of properties supported by Google Ads dataset.
To copy data from Google Ads, set the type property of the dataset to GoogleAdWordsObject. The following properties are supported:
Property | Description | Required |
---|---|---|
type | The type property of the dataset must be set to: GoogleAdWordsObject | Yes |
tableName | Name of the table. Specify this property when you use the legacy driver version. | No (if "query" in activity source is specified) |
Example
{
"name": "GoogleAdsDataset",
"properties": {
"type": "GoogleAdWordsObject",
"typeProperties": {},
"schema": [],
"linkedServiceName": {
"referenceName": "<GoogleAds linked service name>",
"type": "LinkedServiceReference"
}
}
}
For a full list of sections and properties available for defining activities, see the Pipelines article. This section provides a list of properties supported by Google Ads source.
To copy data from Google Ads set the source type in the copy activity to GoogleAdWordsSource. The following properties are supported in the copy activity source section:
Property | Description | Required |
---|---|---|
type | The type property of the copy activity source must be set to: GoogleAdWordsSource | Yes |
query | Use the GAQL query to read data. For example: SELECT campaign.id FROM campaign . |
No (if "tableName" in dataset is specified) |
Example:
"activities":[
{
"name": "CopyFromGoogleAds",
"type": "Copy",
"inputs": [
{
"referenceName": "<GoogleAds input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "GoogleAdWordsSource",
"query": "SELECT campaign.id FROM campaign"
},
"sink": {
"type": "<sink type>"
}
}
}
]
To learn details about the properties, check Lookup activity.
To upgrade your Google Ads driver version, you need update your linked service and learn how to migrate from SQL to Google Ads Query Language (GAQL).
In Edit linked service page, select Recommended under Driver version and configure the linked service by referring to Linked service properties.
Convert your query statements and field names when migrating from SQL to GAQL.
If you use SQL query in the copy activity source or the lookup activity that refers to the legacy Google Ads linked service, you need to update them to GAQL query.
In contrast to SQL, the query in GAQL is made up of six kinds of clauses:
SELECT
FROM
WHERE
ORDER BY
LIMIT
PARAMETERS
Go to Google Ads Query Language Grammar for the introduction of GAQL.
Take the following SQL statement as an example:
SELECT *|FieldName FROM ResourceName WHERE FieldName Operator Value
You can follow the guidance below to convert the SQL statement to the corresponding GAQL statement:
*
(asterisk) is used after the SELECT
clause, then you need to specify all the required fields in place of the asterisk as GAQL doesn't support SELECT *
. Go to this article to see all the selectable fields in the specific resource.SELECT
clause, then you need to convert the name to the corresponding field name in GAQL as they have different naming conventions. For example, the field name campaign_id
in SQL query statement should be converted to campaign.id
in GAQL. See Field name for more details on field name conversion.WHERE
clause should be updated according to the GAQL grammar as the operators supported by GAQL are not consistent with SQL, and field name should also be converted as described in the second point.Here are two very useful tools offered by Google and they are highly recommended when building the corresponding GAQL query statements:
The field name used in SQL is not aligned with GAQL. You also need to learn the conversion rules from field names in SQL to field names in GAQL. The conversion rule can be summarized as follows:
If the field name belongs to a resource, the underscore (_
) in SQL will be changed to dot (.
) in GAQL. And for the words between the dot, the camelCase type statement used in SQL will be changed to standalone words with added underscores in between. The first string of type PascalCase in SQL will be changed to the corresponding resource name in GAQL.
If the field name belongs to segments or metrics, the prefix segments.
or metrics.
should be added in GAQL, then follow the same rule as described in the first point to convert the name.
Here are the concrete examples of the field name conversion:
Category | Field names in SQL | Field names in GAQL |
---|---|---|
Resource fields | Campaign_startDate |
campaign.start_date |
Resource fields | Customer_conversionTrackingSetting_conversionTrackingStatus |
customer.conversion_tracking_setting.conversion_tracking_status |
Segments | DayOfWeek |
segments.day_of_week |
Metrics | VideoViews |
metrics.video_views |
The table below shows the feature differences between Google Ads using the recommended and the legacy driver version.
Recommended driver version | Legacy driver version |
---|---|
Specifying Google Ads API version is supported. | Specifying Google Ads API version is not supported. |
ServiceAuthentication supports two properties: • privateKey |
ServiceAuthentication supports four properties: • keyFilePath • trustedCertPath • useSystemTrustStore |
Selecting a table in a dataset is not supported. | Support selecting a table in a dataset and querying the table in copy activities. |
Support GAQL syntax as the query language. | Support SQL syntax as the query language. |
The output column names are the same as the field names defined in Google Ads. | The output column names don't match the field names defined in Google Ads. |
The following mappings are used from Google Ads data types to interim data types used by the service internally. float -> float int32 -> int int64 -> long |
The following mappings are used from Google Ads data types to interim data types used by the service internally. float -> string int32 -> string int64 -> string |
Upgrade your Google AdWords linked service to the latest Google Ads linked service following the steps below:
Select Recommended as driver version to create a new Google Ads linked service and configure it by referring to Linked service properties.
Update your pipelines that refer to the legacy Google AdWords linked service. Considering that the Google Ads linked service only supports using query to copy data, so:
If your pipeline is directly retrieving data from the report of Google AdWords, find the corresponding resource name of Google Ads in the table below and use this tool to build the query.
Google AdWords report | Google Ads resource |
---|---|
ACCOUNT_PERFORMANCE_REPORT | customer |
AD_PERFORMANCE_REPORT | ad_group_ad |
ADGROUP_PERFORMANCE_REPORT | ad_group |
AGE_RANGE_PERFORMANCE_REPORT | age_range_view |
AUDIENCE_PERFORMANCE_REPORT | campaign_audience_view,ad_group_audience_view |
AUTOMATIC_PLACEMENTS_PERFORMANCE_REPORT | group_placement_view |
BID_GOAL_PERFORMANCE_REPORT | bidding_strategy |
BUDGET_PERFORMANCE_REPORT | campaign_budget |
CALL_METRICS_CALL_DETAILS_REPORT | call_view |
CAMPAIGN_AD_SCHEDULE_TARGET_REPORT | ad_schedule_view |
CAMPAIGN_CRITERIA_REPORT | campaign_criterion |
CAMPAIGN_PERFORMANCE_REPORT | campaign |
CAMPAIGN_SHARED_SET_REPORT | campaign_shared_set |
CAMPAIGN_LOCATION_TARGET_REPORT | location_view |
CLICK_PERFORMANCE_REPORT | click_view |
DISPLAY_KEYWORD_PERFORMANCE_REPORT | display_keyword_view |
DISPLAY_TOPICS_PERFORMANCE_REPORT | topic_view |
GENDER_PERFORMANCE_REPORT | gender_view |
GEO_PERFORMANCE_REPORT | geographic_view,user_location_view |
KEYWORDLESS_QUERY_REPORT | dynamic_search_ads_search_term_view |
KEYWORDS_PERFORMANCE_REPORT | keyword_view |
LABEL_REPORT | label |
LANDING_PAGE_REPORT | landing_page_view,expanded_landing_page_view |
PAID_ORGANIC_QUERY_REPORT | paid_organic_search_term_view |
PARENTAL_STATUS_PERFORMANCE_REPORT | parental_status_view |
PLACEHOLDER_FEED_ITEM_REPORT | feed_item,feed_item_target |
PLACEHOLDER_REPORT | feed_placeholder_view |
PLACEMENT_PERFORMANCE_REPORT | managed_placement_view |
PRODUCT_PARTITION_REPORT | product_group_view |
SEARCH_QUERY_PERFORMANCE_REPORT | search_term_view |
SHARED_SET_CRITERIA_REPORT | shared_criterion |
SHARED_SET_REPORT | shared_set |
SHOPPING_PERFORMANCE_REPORT | shopping_performance_view |
TOP_CONTENT_PERFORMANCE_REPORT | No longer available in the Google Ads API. |
URL_PERFORMANCE_REPORT | detail_placement_view |
USER_AD_DISTANCE_REPORT | distance_view |
VIDEO_PERFORMANCE_REPORT | video |
Be aware that there are certain limitations with this upgrade:
For a list of data stores supported as sources and sinks by the copy activity, see supported data stores.
Events
31 Mar, 11 pm - 2 Apr, 11 pm
The biggest Fabric, Power BI, and SQL learning event. March 31 – April 2. Use code FABINSIDER to save $400.
Register todayTraining
Learning path
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Certification
Microsoft Certified: Azure Data Engineer Associate - Certifications
Demonstrate understanding of common data engineering tasks to implement and manage data engineering workloads on Microsoft Azure, using a number of Azure services.
Documentation
Troubleshoot the Google Ads connector - Azure Data Factory & Azure Synapse
Learn how to troubleshoot issues with the Google Ads connector in Azure Data Factory and Azure Synapse Analytics.
Transform data in data.world (Preview) - Azure Data Factory & Azure Synapse
Learn how to transform data in data.world (Preview) by using Data Factory or Azure Synapse Analytics.
Copy and transform data in Snowflake V2 - Azure Data Factory & Azure Synapse
Learn how to copy and transform data in Snowflake V2 using Data Factory or Azure Synapse Analytics.