googleads / googleads-python-lib

The Python client library for Google's Ads APIs
Apache License 2.0
681 stars 974 forks source link

ad unit statement error. #546

Open seckingocen opened 3 weeks ago

seckingocen commented 3 weeks ago

Hi, I am trying to run a report by filtering the data with Ad unit ID. However when I set 'adUnitView':'HIERARCHICAL' the code produces zero data. When I remove 'statement': ad_unit_filter_statement, the code works but brings all data of all ad unit IDs.

How can I rewrite the ad_unit_filter_statement?

The error

EmptyDataError: No columns to parse from file

The Code

ad_unit_ids = [1111, 2222]

ad_unit_filter_statement = {
    'query': 'WHERE AD_UNIT_ID IN (%s)' % ','.join(map(str, ad_unit_ids))
}

report_job = {
    'reportQuery': {
        'dimensions': [
            'DATE',
            'ADVERTISER_ID'       ,'ADVERTISER_NAME',
            'ORDER_ID'            ,'ORDER_NAME',
            'LINE_ITEM_ID'        ,'LINE_ITEM_NAME',
            'AD_UNIT_ID'          ,'AD_UNIT_NAME', 
            'DEVICE_CATEGORY_NAME','DEVICE_CATEGORY_ID'

        ],
        'columns': ['TOTAL_LINE_ITEM_LEVEL_IMPRESSIONS',
                    'TOTAL_LINE_ITEM_LEVEL_CLICKS',
                    'TOTAL_ACTIVE_VIEW_VIEWABLE_IMPRESSIONS'
                   ],
        'adUnitView':'HIERARCHICAL',
        'dateRangeType': 'CUSTOM_DATE',
        'startDate': first_date,
        'endDate': last_date,
        'statement': ad_unit_filter_statement
    }
}

report_job_id = report_downloader.WaitForReport(report_job)
export_format = 'CSV_DUMP'
directory='/home/sgocen/git_tree/xxx'
report_file = tempfile.NamedTemporaryFile(suffix='.csv', dir=directory, delete=False)
report_downloader.DownloadReportToFile(report_job_id, export_format, report_file, use_gzip_compression=False)
chunk_size = (16 * 1024) # chunk size used for report downloader
file_size = os.path.getsize(report_file.name)
df_report = pd.read_csv(report_file.name)
report_file.close()