We found some strange behavior in the google ads api.
When requesting impressions and other metrics, rows are missing where impressions are zero but some other metric is greater than zero.
return "SELECT
ad_group.id,\n" +
" segments.date,\n" +
" metrics.impressions,\n" +
" metrics.absolute_top_impression_percentage,\n" +
" metrics.content_impression_share,\n" +
" metrics.content_rank_lost_impression_share,\n" +
" metrics.search_absolute_top_impression_share,\n" +
" metrics.search_budget_lost_absolute_top_impression_share,\n" +
" metrics.search_budget_lost_top_impression_share,\n" +
" metrics.search_exact_match_impression_share,\n" +
" metrics.search_impression_share,\n" +
" metrics.search_rank_lost_absolute_top_impression_share,\n" +
" metrics.search_rank_lost_impression_share,\n" +
" metrics.search_rank_lost_top_impression_share,\n" +
" metrics.search_top_impression_share,\n" +
" metrics.top_impression_percentage\n" +
"FROM\n" +
" ad_group\n" +
"WHERE\n" +
" segments.date >= '" + startDate.toString() + "' AND\n" +
" segments.date <= '" + endDate.toString() + "'";