$selector->setFields(array('CampaignId', 'CampaignName', 'CampaignStatus', 'Id', 'CriteriaType', 'Criteria', 'IsNegative'));
$selector->setPredicates([
new Predicate('CampaignStatus', PredicateOperator::IN, ['ENABLED']),
new Predicate('CriteriaType', PredicateOperator::IN, ['IP_BLOCK', 'USER_LIST', 'USER_INTEREST', 'LOCATION', 'CONTENT_LABEL', 'PLACEMENT', 'AD_SCHEDULE']),
]);
$reportDefinition = new ReportDefinition();
$reportDefinition->setSelector($selector);
$reportDefinition->setReportName($reportName);
$reportDefinition->setDateRangeType($dateRangeType);
$reportDefinition->setReportType(CAMPAIGN_CRITERIA_REPORT);
$reportDefinition->setDownloadFormat(DownloadFormat::CSV);
$reportSettingsOverride = (new ReportSettingsBuilder())->includeZeroImpressions(TRUE)->skipReportHeader(true)->build();
SELECT campaign.id, campaign.name, campaign.status, campaign_criterion.criterion_id, campaign_criterion.type, campaign_criterion.negative, campaign_criterion.user_interest.user_interest_category, campaign_criterion.ip_block.ip_address, campaign_criterion.location.geo_target_constant, campaign_criterion.user_list.user_list, campaign_criterion.content_label.type, campaign_criterion.placement.url, campaign_criterion.ad_schedule.day_of_week, campaign_criterion.ad_schedule.end_hour, campaign_criterion.ad_schedule.start_hour, campaign_criterion.status FROM campaign_criterion WHERE campaign.status IN (ENABLED) AND campaign_criterion.type IN (IP_BLOCK,USER_LIST,USER_INTEREST,LOCATION,CONTENT_LABEL,PLACEMENT,AD_SCHEDULE)
Thanks,