diff --git a/colabs/itp_audit.ipynb b/colabs/itp_audit.ipynb index b1b32695..59ee18e6 100644 --- a/colabs/itp_audit.ipynb +++ b/colabs/itp_audit.ipynb @@ -97,12 +97,12 @@ "source": [ "FIELDS = {\n", " 'recipe_timezone': 'America/Los_Angeles', # Timezone for report dates.\n", + " 'recipe_name': '', # Name of document to deploy to.\n", " 'cm_account_id': '', # Campaign Manager Account Id.\n", + " 'cm_advertiser_ids': '', # Optional: Comma delimited list of CM advertiser ids.\n", " 'floodlight_configuration_id': '', # Floodlight Configuration Id for the Campaign Manager floodlight report.\n", - " 'cm_advertiser_ids': '', # Optional: Comma delimited list of DCM advertiser ids.\n", " 'dv360_partner_ids': '', # Comma delimited list of DV360 Partner ids.\n", " 'dv360_advertiser_ids': '', # Optional: Comma delimited list of DV360 Advertiser ids.\n", - " 'recipe_name': '', # Name of document to deploy to.\n", "}\n", "\n", "print(\"Parameters Set To: %s\" % FIELDS)\n" @@ -137,14 +137,14 @@ " ],\n", " 'copy': {\n", " 'source': 'https://docs.google.com/spreadsheets/d/1rH_PGXOYW2mVdmAYnKbv6kcaB6lQihAyMsGtFfinnqg/',\n", - " 'destination': {'field': {'name': 'recipe_name','prefix': 'ITP Audit ','kind': 'string','order': 7,'description': 'Name of document to deploy to.','default': ''}}\n", + " 'destination': {'field': {'name': 'recipe_name','prefix': 'ITP Audit ','kind': 'string','order': 1,'description': 'Name of document to deploy to.','default': ''}}\n", " }\n", " }\n", " },\n", " {\n", " 'dataset': {\n", " 'auth': 'user',\n", - " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 7,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}}\n", + " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 1,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}}\n", " }\n", " },\n", " {\n", @@ -154,16 +154,16 @@ " 'timeout': 90,\n", " 'filters': {\n", " 'FILTER_ADVERTISER': {\n", - " 'values': {'field': {'name': 'dv360_advertiser_ids','kind': 'integer_list','order': 5,'default': '','description': 'Optional: Comma delimited list of DV360 Advertiser ids.'}}\n", + " 'values': {'field': {'name': 'dv360_advertiser_ids','kind': 'integer_list','order': 6,'default': '','description': 'Optional: Comma delimited list of DV360 Advertiser ids.'}}\n", " },\n", " 'FILTER_PARTNER': {\n", - " 'values': {'field': {'name': 'dv360_partner_ids','kind': 'integer_list','order': 4,'default': '','description': 'Comma delimited list of DV360 Partner ids.'}}\n", + " 'values': {'field': {'name': 'dv360_partner_ids','kind': 'integer_list','order': 5,'default': '','description': 'Comma delimited list of DV360 Partner ids.'}}\n", " }\n", " },\n", " 'body': {\n", " 'timezoneCode': {'field': {'name': 'recipe_timezone','kind': 'timezone','description': 'Timezone for report dates.','default': 'America/Los_Angeles'}},\n", " 'metadata': {\n", - " 'title': {'field': {'name': 'recipe_name','kind': 'string','prefix': 'ITP_Audit_Browser_','order': 7,'description': 'Name of report in DBM, should be unique.'}},\n", + " 'title': {'field': {'name': 'recipe_name','kind': 'string','prefix': 'ITP_Audit_Browser_','order': 1,'description': 'Name of report in DV360, should be unique.'}},\n", " 'dataRange': 'LAST_365_DAYS',\n", " 'format': 'CSV'\n", " },\n", @@ -206,10 +206,10 @@ " 'auth': 'user',\n", " 'report': {\n", " 'timeout': 90,\n", - " 'account': {'field': {'name': 'cm_account_id','kind': 'string','order': 1,'default': '','description': 'Campaign Manager Account Id.'}},\n", + " 'account': {'field': {'name': 'cm_account_id','kind': 'string','order': 2,'default': '','description': 'Campaign Manager Account Id.'}},\n", " 'body': {\n", " 'kind': 'dfareporting#report',\n", - " 'name': {'field': {'name': 'recipe_name','kind': 'string','prefix': 'ITP_Audit_Floodlight_','order': 7,'description': 'Name of report in DBM, should be unique.'}},\n", + " 'name': {'field': {'name': 'recipe_name','kind': 'string','prefix': 'ITP_Audit_Floodlight_','order': 1,'description': 'Name of report in DV360, should be unique.'}},\n", " 'format': 'CSV',\n", " 'type': 'FLOODLIGHT',\n", " 'floodlightCriteria': {\n", @@ -220,7 +220,7 @@ " 'floodlightConfigId': {\n", " 'kind': 'dfareporting#dimensionValue',\n", " 'dimensionName': 'dfa:floodlightConfigId',\n", - " 'value': {'field': {'name': 'floodlight_configuration_id','kind': 'integer','order': 2,'default': '','description': 'Floodlight Configuration Id for the Campaign Manager floodlight report.'}},\n", + " 'value': {'field': {'name': 'floodlight_configuration_id','kind': 'integer','order': 4,'default': '','description': 'Floodlight Configuration Id for the Campaign Manager floodlight report.'}},\n", " 'matchType': 'EXACT'\n", " },\n", " 'reportProperties': {\n", @@ -279,7 +279,7 @@ " },\n", " 'out': {\n", " 'bigquery': {\n", - " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 7,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", + " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 1,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", " 'table': 'z_Floodlight_CM_Report',\n", " 'is_incremental_load': False\n", " }\n", @@ -292,16 +292,16 @@ " 'auth': 'user',\n", " 'report': {\n", " 'timeout': 90,\n", - " 'account': {'field': {'name': 'cm_account_id','kind': 'string','order': 1,'default': '','description': 'Campaign Manager Account Id.'}},\n", + " 'account': {'field': {'name': 'cm_account_id','kind': 'string','order': 2,'default': '','description': 'Campaign Manager Account Id.'}},\n", " 'filters': {\n", " 'dfa:advertiser': {\n", - " 'values': {'field': {'name': 'cm_advertiser_ids','kind': 'integer_list','order': 3,'default': '','description': 'Optional: Comma delimited list of DCM advertiser ids.'}}\n", + " 'values': {'field': {'name': 'cm_advertiser_ids','kind': 'integer_list','order': 3,'default': '','description': 'Optional: Comma delimited list of CM advertiser ids.'}}\n", " }\n", " },\n", " 'body': {\n", " 'kind': 'dfareporting#report',\n", - " 'name': {'field': {'name': 'recipe_name','kind': 'string','order': 9,'prefix': 'ITP_Audit_Browser_','default': 'ITP_Audit_Dashboard_Browser','description': 'Name of the Campaign Manager browser report.'}},\n", - " 'fileName': {'field': {'name': 'recipe_name','kind': 'string','order': 9,'prefix': 'ITP_Audit_Browser_','default': 'ITP_Audit_Dashboard_Browser','description': 'Name of the Campaign Manager browser report.'}},\n", + " 'name': {'field': {'name': 'recipe_name','kind': 'string','order': 1,'prefix': 'ITP_Audit_Browser_','default': 'ITP_Audit_Dashboard_Browser','description': 'Name of the Campaign Manager browser report.'}},\n", + " 'fileName': {'field': {'name': 'recipe_name','kind': 'string','order': 1,'prefix': 'ITP_Audit_Browser_','default': 'ITP_Audit_Dashboard_Browser','description': 'Name of the Campaign Manager browser report.'}},\n", " 'format': 'CSV',\n", " 'type': 'STANDARD',\n", " 'criteria': {\n", @@ -372,7 +372,7 @@ " },\n", " 'out': {\n", " 'bigquery': {\n", - " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 7,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", + " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 1,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", " 'table': 'z_CM_Browser_Report_Dirty',\n", " 'is_incremental_load': False\n", " }\n", @@ -383,14 +383,14 @@ " {\n", " 'sheets': {\n", " 'auth': 'user',\n", - " 'sheet': {'field': {'name': 'recipe_name','prefix': 'ITP Audit ','kind': 'string','order': 7,'description': 'Name of document to deploy to.','default': ''}},\n", + " 'sheet': {'field': {'name': 'recipe_name','prefix': 'ITP Audit ','kind': 'string','order': 1,'description': 'Name of document to deploy to.','default': ''}},\n", " 'tab': 'Enviroment',\n", " 'range': 'A:B',\n", " 'header': True,\n", " 'out': {\n", " 'auth': 'user',\n", " 'bigquery': {\n", - " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 7,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", + " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 1,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", " 'table': 'z_Environment'\n", " }\n", " }\n", @@ -399,14 +399,14 @@ " {\n", " 'sheets': {\n", " 'auth': 'user',\n", - " 'sheet': {'field': {'name': 'recipe_name','prefix': 'ITP Audit ','kind': 'string','order': 7,'description': 'Name of document to deploy to.','default': ''}},\n", + " 'sheet': {'field': {'name': 'recipe_name','prefix': 'ITP Audit ','kind': 'string','order': 1,'description': 'Name of document to deploy to.','default': ''}},\n", " 'tab': 'Browser',\n", " 'range': 'A:C',\n", " 'header': True,\n", " 'out': {\n", " 'auth': 'user',\n", " 'bigquery': {\n", - " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 7,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", + " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 1,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", " 'table': 'z_Browser'\n", " }\n", " }\n", @@ -415,14 +415,14 @@ " {\n", " 'sheets': {\n", " 'auth': 'user',\n", - " 'sheet': {'field': {'name': 'recipe_name','prefix': 'ITP Audit ','kind': 'string','order': 7,'description': 'Name of document to deploy to.','default': ''}},\n", + " 'sheet': {'field': {'name': 'recipe_name','prefix': 'ITP Audit ','kind': 'string','order': 1,'description': 'Name of document to deploy to.','default': ''}},\n", " 'tab': 'CM_Browser_lookup',\n", " 'range': 'A:C',\n", " 'header': True,\n", " 'out': {\n", " 'auth': 'user',\n", " 'bigquery': {\n", - " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 7,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", + " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 1,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", " 'table': 'z_CM_Browser_lookup'\n", " }\n", " }\n", @@ -431,14 +431,14 @@ " {\n", " 'sheets': {\n", " 'auth': 'user',\n", - " 'sheet': {'field': {'name': 'recipe_name','prefix': 'ITP Audit ','kind': 'string','order': 7,'description': 'Name of document to deploy to.','default': ''}},\n", + " 'sheet': {'field': {'name': 'recipe_name','prefix': 'ITP Audit ','kind': 'string','order': 1,'description': 'Name of document to deploy to.','default': ''}},\n", " 'tab': 'Device_Type',\n", " 'range': 'A:B',\n", " 'header': True,\n", " 'out': {\n", " 'auth': 'user',\n", " 'bigquery': {\n", - " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 7,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", + " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 1,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", " 'table': 'z_Device_Type'\n", " }\n", " }\n", @@ -447,14 +447,14 @@ " {\n", " 'sheets': {\n", " 'auth': 'user',\n", - " 'sheet': {'field': {'name': 'recipe_name','prefix': 'ITP Audit ','kind': 'string','order': 7,'description': 'Name of document to deploy to.','default': ''}},\n", + " 'sheet': {'field': {'name': 'recipe_name','prefix': 'ITP Audit ','kind': 'string','order': 1,'description': 'Name of document to deploy to.','default': ''}},\n", " 'tab': 'Floodlight_Attribution',\n", " 'range': 'A:B',\n", " 'header': True,\n", " 'out': {\n", " 'auth': 'user',\n", " 'bigquery': {\n", - " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 7,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", + " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 1,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", " 'table': 'z_Floodlight_Attribution'\n", " }\n", " }\n", @@ -464,11 +464,11 @@ " 'dbm': {\n", " 'auth': 'user',\n", " 'report': {\n", - " 'name': {'field': {'name': 'recipe_name','kind': 'string','prefix': 'ITP_Audit_Browser_','order': 7,'description': 'Name of report in DBM, should be unique.'}}\n", + " 'name': {'field': {'name': 'recipe_name','kind': 'string','prefix': 'ITP_Audit_Browser_','order': 1,'description': 'Name of report in DV360, should be unique.'}}\n", " },\n", " 'out': {\n", " 'bigquery': {\n", - " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 7,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", + " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 1,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", " 'table': 'z_Dv360_Browser_Report_Dirty'\n", " }\n", " }\n", @@ -477,9 +477,9 @@ " {\n", " 'itp_audit': {\n", " 'auth': 'user',\n", - " 'account': {'field': {'name': 'cm_account_id','kind': 'string','order': 1,'default': '','description': 'Campaign Manager Account Id.'}},\n", - " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 7,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", - " 'sheet': {'field': {'name': 'recipe_name','prefix': 'ITP Audit ','kind': 'string','order': 7,'description': 'Name of document to deploy to.','default': ''}},\n", + " 'account': {'field': {'name': 'cm_account_id','kind': 'string','order': 2,'default': '','description': 'Campaign Manager Account Id.'}},\n", + " 'dataset': {'field': {'name': 'recipe_name','kind': 'string','order': 1,'default': 'ITP_Audit_Dashboard','description': 'BigQuery dataset for store dashboard tables.'}},\n", + " 'sheet': {'field': {'name': 'recipe_name','prefix': 'ITP Audit ','kind': 'string','order': 1,'description': 'Name of document to deploy to.','default': ''}},\n", " 'timeout': 60\n", " }\n", " }\n", diff --git a/colabs/monthly_budget_mover.ipynb b/colabs/monthly_budget_mover.ipynb index 674c3974..c8e63b96 100644 --- a/colabs/monthly_budget_mover.ipynb +++ b/colabs/monthly_budget_mover.ipynb @@ -105,12 +105,14 @@ }, "source": [ "FIELDS = {\n", + " 'recipe_timezone': 'America/Los_Angeles', # Timezone for report dates.\n", " 'recipe_name': '', # \n", - " 'spend_report_id': '', # The report Id for the DV360 spend report.\n", - " 'budget_categories': '{\"CATEGORY1\":[12345,12345,12345], \"CATEGORY2\":[12345,12345]}', # A dictionary to show which IO Ids go under which Category. Please view the solutions page for information on format.\n", + " 'partner_id': '', # The sdf file types.\n", + " 'budget_categories': '{}', # A dictionary to show which IO Ids go under which Category. {\"CATEGORY1\":[12345,12345,12345], \"CATEGORY2\":[12345,12345]}\n", + " 'filter_ids': [], # Comma separated list of filter ids for the request.\n", " 'excluded_ios': '', # A comma separated list of Inserion Order Ids that should be exluded from the budget calculations\n", - " 'filter_type': '', # The filter type for the filter ids.\n", - " 'filter_ids': '', # The filter ids for the request.\n", + " 'version': '5', # The sdf version to be returned.\n", + " 'is_colab': True, # Are you running this in Colab? (This will store the files in Colab instead of Bigquery)\n", " 'dataset': '', # Dataset that you would like your output tables to be produced in.\n", "}\n", "\n", @@ -147,22 +149,93 @@ " }\n", " },\n", " {\n", + " 'dbm': {\n", + " 'auth': 'user',\n", + " 'report': {\n", + " 'timeout': 90,\n", + " 'filters': {\n", + " 'FILTER_ADVERTISER': {\n", + " 'values': {'field': {'name': 'filter_ids','kind': 'integer_list','order': 7,'default': '','description': 'The comma separated list of Advertiser Ids.'}}\n", + " }\n", + " },\n", + " 'body': {\n", + " 'timezoneCode': {'field': {'name': 'recipe_timezone','kind': 'timezone','description': 'Timezone for report dates.','default': 'America/Los_Angeles'}},\n", + " 'metadata': {\n", + " 'title': {'field': {'name': 'recipe_name','kind': 'string','prefix': 'Monthly_Budget_Mover_','order': 1,'description': 'Name of report in DV360, should be unique.'}},\n", + " 'dataRange': 'PREVIOUS_MONTH',\n", + " 'format': 'CSV'\n", + " },\n", + " 'params': {\n", + " 'type': 'TYPE_GENERAL',\n", + " 'groupBys': [\n", + " 'FILTER_ADVERTISER_CURRENCY',\n", + " 'FILTER_INSERTION_ORDER'\n", + " ],\n", + " 'metrics': [\n", + " 'METRIC_REVENUE_ADVERTISER'\n", + " ]\n", + " }\n", + " }\n", + " },\n", + " 'delete': False\n", + " }\n", + " },\n", + " {\n", " 'monthly_budget_mover': {\n", " 'auth': 'user',\n", - " 'spend_report_id': {'field': {'name': 'spend_report_id','kind': 'string','order': 2,'default': '','description': 'The report Id for the DV360 spend report.'}},\n", - " 'budget_categories': {'field': {'name': 'budget_categories','kind': 'json','order': 3,'default': '{\"CATEGORY1\":[12345,12345,12345], \"CATEGORY2\":[12345,12345]}','description': 'A dictionary to show which IO Ids go under which Category. Please view the solutions page for information on format.'}},\n", + " 'is_colab': {'field': {'name': 'is_colab','kind': 'boolean','default': True,'order': 7,'description': 'Are you running this in Colab? (This will store the files in Colab instead of Bigquery)'}},\n", + " 'report_name': {'field': {'name': 'recipe_name','kind': 'string','prefix': 'Monthly_Budget_Mover_','order': 1,'description': 'Name of report in DV360, should be unique.'}},\n", + " 'budget_categories': {'field': {'name': 'budget_categories','kind': 'json','order': 3,'default': '{}','description': 'A dictionary to show which IO Ids go under which Category. {\"CATEGORY1\":[12345,12345,12345], \"CATEGORY2\":[12345,12345]}'}},\n", " 'excluded_ios': {'field': {'name': 'excluded_ios','kind': 'integer_list','order': 4,'description': 'A comma separated list of Inserion Order Ids that should be exluded from the budget calculations'}},\n", " 'sdf': {\n", " 'auth': 'user',\n", + " 'version': {'field': {'name': 'version','kind': 'choice','order': 6,'default': '5','description': 'The sdf version to be returned.','choices': ['SDF_VERSION_5','SDF_VERSION_5_1']}},\n", + " 'partner_id': {'field': {'name': 'partner_id','kind': 'integer','order': 1,'description': 'The sdf file types.'}},\n", " 'file_types': 'INSERTION_ORDER',\n", - " 'filter_type': {'field': {'name': 'filter_type','kind': 'choice','order': 6,'default': '','description': 'The filter type for the filter ids.','choices': ['ADVERTISER_ID','CAMPAIGN_ID','INSERTION_ORDER_ID','INVENTORY_SOURCE_ID','LINE_ITEM_ID','PARTNER_ID']}},\n", - " 'filter_ids': {'field': {'name': 'filter_ids','kind': 'integer_list','order': 7,'default': '','description': 'The filter ids for the request.'}}\n", + " 'filter_type': 'FILTER_TYPE_ADVERTISER_ID',\n", + " 'read': {\n", + " 'filter_ids': {\n", + " 'single_cell': True,\n", + " 'values': {'field': {'name': 'filter_ids','kind': 'integer_list','order': 4,'default': [],'description': 'Comma separated list of filter ids for the request.'}}\n", + " }\n", + " },\n", + " 'time_partitioned_table': False,\n", + " 'create_single_day_table': False,\n", + " 'dataset': {'field': {'name': 'dataset','kind': 'string','order': 6,'default': '','description': 'Dataset to be written to in BigQuery.'}},\n", + " 'table_suffix': ''\n", + " },\n", + " 'out_old_sdf': {\n", + " 'bigquery': {\n", + " 'dataset': {'field': {'name': 'dataset','kind': 'string','order': 8,'default': '','description': 'Dataset that you would like your output tables to be produced in.'}},\n", + " 'table': {'field': {'name': 'recipe_name','kind': 'string','prefix': 'SDF_OLD_','description': ''}},\n", + " 'schema': [\n", + " ],\n", + " 'skip_rows': 0,\n", + " 'disposition': 'WRITE_TRUNCATE'\n", + " },\n", + " 'file': '/content/old_sdf.csv'\n", + " },\n", + " 'out_new_sdf': {\n", + " 'bigquery': {\n", + " 'dataset': {'field': {'name': 'dataset','kind': 'string','order': 8,'default': '','description': 'Dataset that you would like your output tables to be produced in.'}},\n", + " 'table': {'field': {'name': 'recipe_name','kind': 'string','prefix': 'SDF_NEW_','description': ''}},\n", + " 'schema': [\n", + " ],\n", + " 'skip_rows': 0,\n", + " 'disposition': 'WRITE_TRUNCATE'\n", + " },\n", + " 'file': '/content/new_sdf.csv'\n", " },\n", - " 'out': {\n", - " 'dataset': {'field': {'name': 'dataset','kind': 'string','order': 8,'default': '','description': 'Dataset that you would like your output tables to be produced in.'}},\n", - " 'old_sdf_table_name': {'field': {'name': 'recipe_name','kind': 'string','prefix': 'SDF_OLD_','description': ''}},\n", - " 'new_sdf_table_name': {'field': {'name': 'recipe_name','kind': 'string','prefix': 'SDF_NEW_','description': ''}},\n", - " 'changes_table_name': {'field': {'name': 'recipe_name','kind': 'string','prefix': 'SDF_BUDGET_MOVER_LOG_','description': ''}}\n", + " 'out_changes': {\n", + " 'bigquery': {\n", + " 'dataset': {'field': {'name': 'dataset','kind': 'string','order': 8,'default': '','description': 'Dataset that you would like your output tables to be produced in.'}},\n", + " 'table': {'field': {'name': 'recipe_name','kind': 'string','prefix': 'SDF_BUDGET_MOVER_LOG_','description': ''}},\n", + " 'schema': [\n", + " ],\n", + " 'skip_rows': 0,\n", + " 'disposition': 'WRITE_TRUNCATE'\n", + " },\n", + " 'file': '/content/log.csv'\n", " }\n", " }\n", " }\n", diff --git a/dags/monthly_budget_mover_dag.py b/dags/monthly_budget_mover_dag.py index 9381c710..e915f7eb 100644 --- a/dags/monthly_budget_mover_dag.py +++ b/dags/monthly_budget_mover_dag.py @@ -57,12 +57,14 @@ GCP_CONN_ID = "starthinker_service" # The connection to use for service authentication. INPUTS = { + 'recipe_timezone': 'America/Los_Angeles', # Timezone for report dates. 'recipe_name': '', # - 'spend_report_id': '', # The report Id for the DV360 spend report. - 'budget_categories': '{"CATEGORY1":[12345,12345,12345], "CATEGORY2":[12345,12345]}', # A dictionary to show which IO Ids go under which Category. Please view the solutions page for information on format. + 'partner_id': '', # The sdf file types. + 'budget_categories': '{}', # A dictionary to show which IO Ids go under which Category. {"CATEGORY1":[12345,12345,12345], "CATEGORY2":[12345,12345]} + 'filter_ids': [], # Comma separated list of filter ids for the request. 'excluded_ios': '', # A comma separated list of Inserion Order Ids that should be exluded from the budget calculations - 'filter_type': '', # The filter type for the filter ids. - 'filter_ids': '', # The filter ids for the request. + 'version': '5', # The sdf version to be returned. + 'is_colab': True, # Are you running this in Colab? (This will store the files in Colab instead of Bigquery) 'dataset': '', # Dataset that you would like your output tables to be produced in. } @@ -81,16 +83,80 @@ } } }, + { + 'dbm': { + 'auth': 'user', + 'report': { + 'timeout': 90, + 'filters': { + 'FILTER_ADVERTISER': { + 'values': { + 'field': { + 'name': 'filter_ids', + 'kind': 'integer_list', + 'order': 7, + 'default': '', + 'description': 'The comma separated list of Advertiser Ids.' + } + } + } + }, + 'body': { + 'timezoneCode': { + 'field': { + 'name': 'recipe_timezone', + 'kind': 'timezone', + 'description': 'Timezone for report dates.', + 'default': 'America/Los_Angeles' + } + }, + 'metadata': { + 'title': { + 'field': { + 'name': 'recipe_name', + 'kind': 'string', + 'prefix': 'Monthly_Budget_Mover_', + 'order': 1, + 'description': 'Name of report in DV360, should be unique.' + } + }, + 'dataRange': 'PREVIOUS_MONTH', + 'format': 'CSV' + }, + 'params': { + 'type': 'TYPE_GENERAL', + 'groupBys': [ + 'FILTER_ADVERTISER_CURRENCY', + 'FILTER_INSERTION_ORDER' + ], + 'metrics': [ + 'METRIC_REVENUE_ADVERTISER' + ] + } + } + }, + 'delete': False + } + }, { 'monthly_budget_mover': { 'auth': 'user', - 'spend_report_id': { + 'is_colab': { 'field': { - 'name': 'spend_report_id', + 'name': 'is_colab', + 'kind': 'boolean', + 'default': True, + 'order': 7, + 'description': 'Are you running this in Colab? (This will store the files in Colab instead of Bigquery)' + } + }, + 'report_name': { + 'field': { + 'name': 'recipe_name', 'kind': 'string', - 'order': 2, - 'default': '', - 'description': 'The report Id for the DV360 spend report.' + 'prefix': 'Monthly_Budget_Mover_', + 'order': 1, + 'description': 'Name of report in DV360, should be unique.' } }, 'budget_categories': { @@ -98,8 +164,8 @@ 'name': 'budget_categories', 'kind': 'json', 'order': 3, - 'default': '{"CATEGORY1":[12345,12345,12345], "CATEGORY2":[12345,12345]}', - 'description': 'A dictionary to show which IO Ids go under which Category. Please view the solutions page for information on format.' + 'default': '{}', + 'description': 'A dictionary to show which IO Ids go under which Category. {"CATEGORY1":[12345,12345,12345], "CATEGORY2":[12345,12345]}' } }, 'excluded_ios': { @@ -112,68 +178,134 @@ }, 'sdf': { 'auth': 'user', - 'file_types': 'INSERTION_ORDER', - 'filter_type': { + 'version': { 'field': { - 'name': 'filter_type', + 'name': 'version', 'kind': 'choice', 'order': 6, - 'default': '', - 'description': 'The filter type for the filter ids.', + 'default': '5', + 'description': 'The sdf version to be returned.', 'choices': [ - 'ADVERTISER_ID', - 'CAMPAIGN_ID', - 'INSERTION_ORDER_ID', - 'INVENTORY_SOURCE_ID', - 'LINE_ITEM_ID', - 'PARTNER_ID' + 'SDF_VERSION_5', + 'SDF_VERSION_5_1' ] } }, - 'filter_ids': { + 'partner_id': { 'field': { - 'name': 'filter_ids', - 'kind': 'integer_list', - 'order': 7, - 'default': '', - 'description': 'The filter ids for the request.' + 'name': 'partner_id', + 'kind': 'integer', + 'order': 1, + 'description': 'The sdf file types.' } - } - }, - 'out': { + }, + 'file_types': 'INSERTION_ORDER', + 'filter_type': 'FILTER_TYPE_ADVERTISER_ID', + 'read': { + 'filter_ids': { + 'single_cell': True, + 'values': { + 'field': { + 'name': 'filter_ids', + 'kind': 'integer_list', + 'order': 4, + 'default': [ + ], + 'description': 'Comma separated list of filter ids for the request.' + } + } + } + }, + 'time_partitioned_table': False, + 'create_single_day_table': False, 'dataset': { 'field': { 'name': 'dataset', 'kind': 'string', - 'order': 8, + 'order': 6, 'default': '', - 'description': 'Dataset that you would like your output tables to be produced in.' + 'description': 'Dataset to be written to in BigQuery.' } }, - 'old_sdf_table_name': { - 'field': { - 'name': 'recipe_name', - 'kind': 'string', - 'prefix': 'SDF_OLD_', - 'description': '' - } + 'table_suffix': '' + }, + 'out_old_sdf': { + 'bigquery': { + 'dataset': { + 'field': { + 'name': 'dataset', + 'kind': 'string', + 'order': 8, + 'default': '', + 'description': 'Dataset that you would like your output tables to be produced in.' + } + }, + 'table': { + 'field': { + 'name': 'recipe_name', + 'kind': 'string', + 'prefix': 'SDF_OLD_', + 'description': '' + } + }, + 'schema': [ + ], + 'skip_rows': 0, + 'disposition': 'WRITE_TRUNCATE' }, - 'new_sdf_table_name': { - 'field': { - 'name': 'recipe_name', - 'kind': 'string', - 'prefix': 'SDF_NEW_', - 'description': '' - } + 'file': '/content/old_sdf.csv' + }, + 'out_new_sdf': { + 'bigquery': { + 'dataset': { + 'field': { + 'name': 'dataset', + 'kind': 'string', + 'order': 8, + 'default': '', + 'description': 'Dataset that you would like your output tables to be produced in.' + } + }, + 'table': { + 'field': { + 'name': 'recipe_name', + 'kind': 'string', + 'prefix': 'SDF_NEW_', + 'description': '' + } + }, + 'schema': [ + ], + 'skip_rows': 0, + 'disposition': 'WRITE_TRUNCATE' }, - 'changes_table_name': { - 'field': { - 'name': 'recipe_name', - 'kind': 'string', - 'prefix': 'SDF_BUDGET_MOVER_LOG_', - 'description': '' - } - } + 'file': '/content/new_sdf.csv' + }, + 'out_changes': { + 'bigquery': { + 'dataset': { + 'field': { + 'name': 'dataset', + 'kind': 'string', + 'order': 8, + 'default': '', + 'description': 'Dataset that you would like your output tables to be produced in.' + } + }, + 'table': { + 'field': { + 'name': 'recipe_name', + 'kind': 'string', + 'prefix': 'SDF_BUDGET_MOVER_LOG_', + 'description': '' + } + }, + 'schema': [ + ], + 'skip_rows': 0, + 'disposition': 'WRITE_TRUNCATE' + }, + 'file': '/content/log.csv' } } } diff --git a/docs/index.html b/docs/index.html index 7b227c84..44f0145d 100644 --- a/docs/index.html +++ b/docs/index.html @@ -306,45 +306,6 @@
Visualizes a client's Campaign Manager and DV360 activity by browser and device
-Understand client exposure to ITP and ETP. | -
Identify browser impact across devices. | -
Monitor impact over time. | -
Dashboard that shows performance metrics across browser to see the impact of ITP.
+See drilled down metrics of your accounts performance as ITP changes | +
Visualizes a client's Campaign Manager and DV360 activity by browser and device
-Understand client exposure to ITP and ETP. | -
Identify browser impact across devices. | -
Monitor impact over time. | -
Dashboard that shows performance metrics across browser to see the impact of ITP.
+See drilled down metrics of your accounts performance as ITP changes | +
Dashboard that shows performance metrics across browser to see the impact of ITP.
+ + All + + cm + + dv360 + + datastudio + + bigquery + + +Value Proposition | +
---|
See drilled down metrics of your accounts performance as ITP changes | +
Impact | +Level | +
---|---|
Spend Optimization | +
+
+
+
+ |
+
Spend Growth | +
+
+
+
+ |
+
Time Savings | +
+
+
+
+ |
+
Account Health | +
+
+
+
+ |
+
Csat Improvement | +
+
+
+
+ |
+
Details | +|
---|---|
This solution has anonymized data and is OK to share with clients. | +|
Age | +Nov. 19, 2019 (7 months) | +
Authors | +terwilleger@google.com aallamang@google.com + |
+
Instructions | +
---|
Follow the instructions from this document | +
[
+ {
+ "drive": {
+ "auth": "user",
+ "hour": [],
+ "copy": {
+ "source": "https://docs.google.com/spreadsheets/d/1rH_PGXOYW2mVdmAYnKbv6kcaB6lQihAyMsGtFfinnqg/",
+ "destination": {
+ "field": {
+ "name": "recipe_name",
+ "prefix": "ITP Audit ",
+ "kind": "string",
+ "order": 1,
+ "description": "Name of document to deploy to.",
+ "default": ""
+ }
+ }
+ }
+ }
+ },
+ {
+ "dataset": {
+ "auth": "service",
+ "dataset": {
+ "field": {
+ "name": "recipe_name",
+ "kind": "string",
+ "order": 1,
+ "default": "ITP_Audit_Dashboard",
+ "description": "BigQuery dataset for store dashboard tables."
+ }
+ }
+ }
+ },
+ {
+ "dbm": {
+ "auth": "user",
+ "report": {
+ "timeout": 90,
+ "filters": {
+ "FILTER_ADVERTISER": {
+ "values": {
+ "field": {
+ "name": "dv360_advertiser_ids",
+ "kind": "integer_list",
+ "order": 6,
+ "default": "",
+ "description": "Optional: Comma delimited list of DV360 Advertiser ids."
+ }
+ }
+ },
+ "FILTER_PARTNER": {
+ "values": {
+ "field": {
+ "name": "dv360_partner_ids",
+ "kind": "integer_list",
+ "order": 5,
+ "default": "",
+ "description": "Comma delimited list of DV360 Partner ids."
+ }
+ }
+ }
+ },
+ "body": {
+ "timezoneCode": {
+ "field": {
+ "name": "recipe_timezone",
+ "kind": "timezone",
+ "description": "Timezone for report dates.",
+ "default": "America/Los_Angeles"
+ }
+ },
+ "metadata": {
+ "title": {
+ "field": {
+ "name": "recipe_name",
+ "kind": "string",
+ "prefix": "ITP_Audit_Browser_",
+ "order": 1,
+ "description": "Name of report in DV360, should be unique."
+ }
+ },
+ "dataRange": "LAST_365_DAYS",
+ "format": "CSV"
+ },
+ "params": {
+ "type": "TYPE_GENERAL",
+ "groupBys": [
+ "FILTER_ADVERTISER",
+ "FILTER_ADVERTISER_CURRENCY",
+ "FILTER_MEDIA_PLAN",
+ "FILTER_INSERTION_ORDER",
+ "FILTER_LINE_ITEM",
+ "FILTER_PAGE_LAYOUT",
+ "FILTER_WEEK",
+ "FILTER_MONTH",
+ "FILTER_YEAR",
+ "FILTER_PARTNER",
+ "FILTER_LINE_ITEM_TYPE",
+ "FILTER_DEVICE_TYPE",
+ "FILTER_BROWSER"
+ ],
+ "metrics": [
+ "METRIC_MEDIA_COST_ADVERTISER",
+ "METRIC_IMPRESSIONS",
+ "METRIC_CLICKS",
+ "METRIC_TOTAL_CONVERSIONS",
+ "METRIC_LAST_CLICKS",
+ "METRIC_LAST_IMPRESSIONS",
+ "METRIC_CM_POST_CLICK_REVENUE",
+ "METRIC_CM_POST_VIEW_REVENUE",
+ "METRIC_REVENUE_ADVERTISER"
+ ]
+ }
+ }
+ },
+ "delete": false
+ }
+ },
+ {
+ "dcm": {
+ "auth": "user",
+ "report": {
+ "timeout": 90,
+ "account": {
+ "field": {
+ "name": "cm_account_id",
+ "kind": "string",
+ "order": 2,
+ "default": "",
+ "description": "Campaign Manager Account Id."
+ }
+ },
+ "body": {
+ "kind": "dfareporting#report",
+ "name": {
+ "field": {
+ "name": "recipe_name",
+ "kind": "string",
+ "prefix": "ITP_Audit_Floodlight_",
+ "order": 1,
+ "description": "Name of report in DV360, should be unique."
+ }
+ },
+ "format": "CSV",
+ "type": "FLOODLIGHT",
+ "floodlightCriteria": {
+ "dateRange": {
+ "kind": "dfareporting#dateRange",
+ "relativeDateRange": "LAST_30_DAYS"
+ },
+ "floodlightConfigId": {
+ "kind": "dfareporting#dimensionValue",
+ "dimensionName": "dfa:floodlightConfigId",
+ "value": {
+ "field": {
+ "name": "floodlight_configuration_id",
+ "kind": "integer",
+ "order": 4,
+ "default": "",
+ "description": "Floodlight Configuration Id for the Campaign Manager floodlight report."
+ }
+ },
+ "matchType": "EXACT"
+ },
+ "reportProperties": {
+ "includeUnattributedIPConversions": false,
+ "includeUnattributedCookieConversions": true
+ },
+ "dimensions": [
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:site"
+ },
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:floodlightAttributionType"
+ },
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:interactionType"
+ },
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:pathType"
+ },
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:browserPlatform"
+ },
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:platformType"
+ },
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:week"
+ }
+ ],
+ "metricNames": [
+ "dfa:activityClickThroughConversions",
+ "dfa:activityViewThroughConversions",
+ "dfa:totalConversions",
+ "dfa:totalConversionsRevenue"
+ ]
+ },
+ "schedule": {
+ "active": true,
+ "repeats": "WEEKLY",
+ "every": 1,
+ "repeatsOnWeekDays": [
+ "Sunday"
+ ]
+ },
+ "delivery": {
+ "emailOwner": false
+ }
+ }
+ },
+ "out": {
+ "bigquery": {
+ "dataset": {
+ "field": {
+ "name": "recipe_name",
+ "kind": "string",
+ "order": 1,
+ "default": "ITP_Audit_Dashboard",
+ "description": "BigQuery dataset for store dashboard tables."
+ }
+ },
+ "table": "z_Floodlight_CM_Report",
+ "is_incremental_load": false
+ }
+ },
+ "delete": false
+ }
+ },
+ {
+ "dcm": {
+ "auth": "user",
+ "report": {
+ "timeout": 90,
+ "account": {
+ "field": {
+ "name": "cm_account_id",
+ "kind": "string",
+ "order": 2,
+ "default": "",
+ "description": "Campaign Manager Account Id."
+ }
+ },
+ "filters": {
+ "dfa:advertiser": {
+ "values": {
+ "field": {
+ "name": "cm_advertiser_ids",
+ "kind": "integer_list",
+ "order": 3,
+ "default": "",
+ "description": "Optional: Comma delimited list of CM advertiser ids."
+ }
+ }
+ }
+ },
+ "body": {
+ "kind": "dfareporting#report",
+ "name": {
+ "field": {
+ "name": "recipe_name",
+ "kind": "string",
+ "order": 1,
+ "prefix": "ITP_Audit_Browser_",
+ "default": "ITP_Audit_Dashboard_Browser",
+ "description": "Name of the Campaign Manager browser report."
+ }
+ },
+ "fileName": {
+ "field": {
+ "name": "recipe_name",
+ "kind": "string",
+ "order": 1,
+ "prefix": "ITP_Audit_Browser_",
+ "default": "ITP_Audit_Dashboard_Browser",
+ "description": "Name of the Campaign Manager browser report."
+ }
+ },
+ "format": "CSV",
+ "type": "STANDARD",
+ "criteria": {
+ "dateRange": {
+ "kind": "dfareporting#dateRange",
+ "relativeDateRange": "LAST_365_DAYS"
+ },
+ "dimensions": [
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:campaign"
+ },
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:campaignId"
+ },
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:site"
+ },
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:advertiser"
+ },
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:advertiserId"
+ },
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:browserPlatform"
+ },
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:platformType"
+ },
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:month"
+ },
+ {
+ "kind": "dfareporting#sortedDimension",
+ "name": "dfa:week"
+ }
+ ],
+ "metricNames": [
+ "dfa:impressions",
+ "dfa:clicks",
+ "dfa:totalConversions",
+ "dfa:activityViewThroughConversions",
+ "dfa:activityClickThroughConversions"
+ ],
+ "dimensionFilters": []
+ },
+ "schedule": {
+ "active": true,
+ "repeats": "WEEKLY",
+ "every": 1,
+ "repeatsOnWeekDays": [
+ "Sunday"
+ ]
+ },
+ "delivery": {
+ "emailOwner": false
+ }
+ }
+ },
+ "out": {
+ "bigquery": {
+ "dataset": {
+ "field": {
+ "name": "recipe_name",
+ "kind": "string",
+ "order": 1,
+ "default": "ITP_Audit_Dashboard",
+ "description": "BigQuery dataset for store dashboard tables."
+ }
+ },
+ "table": "z_CM_Browser_Report_Dirty",
+ "is_incremental_load": false
+ }
+ },
+ "delete": false
+ }
+ },
+ {
+ "sheets": {
+ "auth": "user",
+ "sheet": {
+ "field": {
+ "name": "recipe_name",
+ "prefix": "ITP Audit ",
+ "kind": "string",
+ "order": 1,
+ "description": "Name of document to deploy to.",
+ "default": ""
+ }
+ },
+ "tab": "Enviroment",
+ "range": "A:B",
+ "header": true,
+ "out": {
+ "auth": "service",
+ "bigquery": {
+ "dataset": {
+ "field": {
+ "name": "recipe_name",
+ "kind": "string",
+ "order": 1,
+ "default": "ITP_Audit_Dashboard",
+ "description": "BigQuery dataset for store dashboard tables."
+ }
+ },
+ "table": "z_Environment"
+ }
+ }
+ }
+ },
+ {
+ "sheets": {
+ "auth": "user",
+ "sheet": {
+ "field": {
+ "name": "recipe_name",
+ "prefix": "ITP Audit ",
+ "kind": "string",
+ "order": 1,
+ "description": "Name of document to deploy to.",
+ "default": ""
+ }
+ },
+ "tab": "Browser",
+ "range": "A:C",
+ "header": true,
+ "out": {
+ "auth": "service",
+ "bigquery": {
+ "dataset": {
+ "field": {
+ "name": "recipe_name",
+ "kind": "string",
+ "order": 1,
+ "default": "ITP_Audit_Dashboard",
+ "description": "BigQuery dataset for store dashboard tables."
+ }
+ },
+ "table": "z_Browser"
+ }
+ }
+ }
+ },
+ {
+ "sheets": {
+ "auth": "user",
+ "sheet": {
+ "field": {
+ "name": "recipe_name",
+ "prefix": "ITP Audit ",
+ "kind": "string",
+ "order": 1,
+ "description": "Name of document to deploy to.",
+ "default": ""
+ }
+ },
+ "tab": "CM_Browser_lookup",
+ "range": "A:C",
+ "header": true,
+ "out": {
+ "auth": "service",
+ "bigquery": {
+ "dataset": {
+ "field": {
+ "name": "recipe_name",
+ "kind": "string",
+ "order": 1,
+ "default": "ITP_Audit_Dashboard",
+ "description": "BigQuery dataset for store dashboard tables."
+ }
+ },
+ "table": "z_CM_Browser_lookup"
+ }
+ }
+ }
+ },
+ {
+ "sheets": {
+ "auth": "user",
+ "sheet": {
+ "field": {
+ "name": "recipe_name",
+ "prefix": "ITP Audit ",
+ "kind": "string",
+ "order": 1,
+ "description": "Name of document to deploy to.",
+ "default": ""
+ }
+ },
+ "tab": "Device_Type",
+ "range": "A:B",
+ "header": true,
+ "out": {
+ "auth": "service",
+ "bigquery": {
+ "dataset": {
+ "field": {
+ "name": "recipe_name",
+ "kind": "string",
+ "order": 1,
+ "default": "ITP_Audit_Dashboard",
+ "description": "BigQuery dataset for store dashboard tables."
+ }
+ },
+ "table": "z_Device_Type"
+ }
+ }
+ }
+ },
+ {
+ "sheets": {
+ "auth": "user",
+ "sheet": {
+ "field": {
+ "name": "recipe_name",
+ "prefix": "ITP Audit ",
+ "kind": "string",
+ "order": 1,
+ "description": "Name of document to deploy to.",
+ "default": ""
+ }
+ },
+ "tab": "Floodlight_Attribution",
+ "range": "A:B",
+ "header": true,
+ "out": {
+ "auth": "service",
+ "bigquery": {
+ "dataset": {
+ "field": {
+ "name": "recipe_name",
+ "kind": "string",
+ "order": 1,
+ "default": "ITP_Audit_Dashboard",
+ "description": "BigQuery dataset for store dashboard tables."
+ }
+ },
+ "table": "z_Floodlight_Attribution"
+ }
+ }
+ }
+ },
+ {
+ "dbm": {
+ "auth": "user",
+ "report": {
+ "name": {
+ "field": {
+ "name": "recipe_name",
+ "kind": "string",
+ "prefix": "ITP_Audit_Browser_",
+ "order": 1,
+ "description": "Name of report in DV360, should be unique."
+ }
+ }
+ },
+ "out": {
+ "bigquery": {
+ "dataset": {
+ "field": {
+ "name": "recipe_name",
+ "kind": "string",
+ "order": 1,
+ "default": "ITP_Audit_Dashboard",
+ "description": "BigQuery dataset for store dashboard tables."
+ }
+ },
+ "table": "z_Dv360_Browser_Report_Dirty"
+ }
+ }
+ }
+ },
+ {
+ "itp_audit": {
+ "auth": "service",
+ "account": {
+ "field": {
+ "name": "cm_account_id",
+ "kind": "string",
+ "order": 2,
+ "default": "",
+ "description": "Campaign Manager Account Id."
+ }
+ },
+ "dataset": {
+ "field": {
+ "name": "recipe_name",
+ "kind": "string",
+ "order": 1,
+ "default": "ITP_Audit_Dashboard",
+ "description": "BigQuery dataset for store dashboard tables."
+ }
+ },
+ "sheet": {
+ "field": {
+ "name": "recipe_name",
+ "prefix": "ITP Audit ",
+ "kind": "string",
+ "order": 1,
+ "description": "Name of document to deploy to.",
+ "default": ""
+ }
+ },
+ "timeout": 60
+ }
+ }
+]
+ Everything from a quick Google Cloud UI to reference developer code for your team in one GitHub repository.
++ + Deployment Stepslaunch + + + Developer Guidebuild + + + UI How Tolaptop + +
+ + + +