रिपोर्ट बनाना और अपडेट करना

Campaign Manager 360 एपीआई की रिपोर्ट सेवा की मदद से, रिपोर्ट रिसॉर्स ऑब्जेक्ट का इस्तेमाल करके, रिपोर्ट बिल्डर रिपोर्ट बनाई जा सकती हैं और उन्हें अपडेट किया जा सकता है. रिपोर्ट रिसॉर्स, किसी रिपोर्ट के चलने की बुनियादी जानकारी के साथ-साथ रिपोर्ट आउटपुट का स्ट्रक्चर भी बताता है.

इस गाइड में 'रिपोर्ट' के ज़रिए, रिपोर्ट बिल्डर को प्रोग्राम के तौर पर बनाने और अपडेट करने का तरीका बताया गया है.

रिपोर्ट रिसॉर्स को कॉन्फ़िगर करना

रिपोर्ट बिल्डर रिपोर्ट बनाने या अपडेट करने का पहला चरण, रिपोर्ट रिसॉर्स ऑब्जेक्ट को कॉन्फ़िगर करना है. नई रिपोर्ट बनाने के लिए, सबसे पहले आपको किसी खाली संसाधन का इस्तेमाल करना होगा. साथ ही, ज़रूरी फ़ील्ड भी सेट करने होंगे. किसी मौजूदा रिपोर्ट को अपडेट करते समय, आपके पास ये विकल्प होते हैं:

  1. पसंदीदा: कुछ अपडेट करना. इस तरीके का इस्तेमाल करके, आपको खाली संसाधन के साथ शुरुआत करनी होगी और वे फ़ील्ड सेट करनी होंगी जिन्हें आपको बदलना है. आंशिक अपडेट, सिर्फ़ आपके बताए गए फ़ील्ड में किए गए बदलावों को सेव करता है.
  2. पूरा अपडेट किया जा रहा है. इस तरीके का इस्तेमाल करके, किसी मौजूदा रिपोर्ट रिसॉर्स को लोड करें और इसके फ़ील्ड में सीधे तौर पर बदलाव करें. पूरा अपडेट देने से, रिपोर्ट के सभी फ़ील्ड हमेशा सेव हो जाते हैं.

किसी रिपोर्ट रिसॉर्स का सटीक कॉन्टेंट, रिपोर्ट टाइप के हिसाब से अलग-अलग होता है. इसके बावजूद, कुछ ऐसे रिपोर्ट फ़ील्ड होते हैं जो सभी रिपोर्ट टाइप के लिए समान होते हैं:

फ़ील्डजानकारी
ज़रूरी फ़ील्ड
नामरिपोर्ट का नाम.
टाइप करेंरिपोर्ट किस तरह की है.
ऐसे फ़ील्ड जो ज़रूरी नहीं हैं
डिलीवरीरिपोर्ट की ईमेल डिलीवरी सेटिंग.
फ़ाइल का नामइस रिपोर्ट के लिए रिपोर्ट फ़ाइलें जनरेट करते समय इस्तेमाल किया जाने वाला फ़ाइल नाम.
फ़ॉर्मैटरिपोर्ट का आउटपुट फ़ॉर्मैट, जैसे कि CSV या Excel.
शेड्यूलआपकी रिपोर्ट को समय-समय पर चलाने के लिए इस्तेमाल किया जाने वाला शेड्यूल.

ये सामान्य फ़ील्ड आपकी रिपोर्ट का आकलन करते हैं. नीचे दिए गए उदाहरण में, एक नया स्टैंडर्ड रिपोर्ट संसाधन बनाने के बारे में बताया गया है:

C#

Report report = new Report();

// Set the required fields "name" and "type".
report.Name = "Example standard report";
report.Type = "STANDARD";

// Set optional fields.
report.FileName = "example_report";
report.Format = "CSV";

Java

Report report = new Report();

// Set the required fields "name" and "type".
report.setName("Example standard report");
report.setType("STANDARD");

// Set optional fields
report.setFileName("example_report");
report.setFormat("CSV");

129

$report = new Google_Service_Dfareporting_Report();

// Set the required fields "name" and "type".
$report->setName('Example standard report');
$report->setType('STANDARD');

// Set optional fields.
$report->setFileName('example_report');
$report->setFormat('CSV');

Python

report = {
    # Set the required fields "name" and "type".
    'name': 'Example Standard Report',
    'type': 'STANDARD',
    # Set optional fields.
    'fileName': 'example_report',
    'format': 'CSV'
}

Ruby

report = DfareportingUtils::API_NAMESPACE::Report.new(
  # Set the required fields "name" and "type".
  name: 'Example Standard Report',
  type: 'STANDARD',
  # Set optional fields.
  file_name: 'example_report',
  format: 'CSV'
)

रिपोर्ट की शर्तें तय करें

रिपोर्ट टाइप चुनने और सामान्य फ़ील्ड कॉन्फ़िगर करने के बाद, रिपोर्ट की शर्तें तय करें. रिपोर्ट से जुड़ी ज़रूरी शर्तों का इस्तेमाल, आपकी रिपोर्ट के दायरे को सीमित करने के लिए किया जाता है. इससे यह पक्का होता है कि सिर्फ़ काम की जानकारी दिखे. इससे रिपोर्ट के आउटपुट का स्ट्रक्चर भी तय होता है.

किस तरह का कॉन्टेंट इस्तेमाल किया जाएगा, यह रिपोर्ट के टाइप पर निर्भर करता है. रिपोर्ट टाइप और मानदंड के बीच के संबंध को नीचे दी गई टेबल में समझाया गया है:

रिपोर्ट का टाइप मानदंड फ़ील्ड
स्टैंडर्ड शर्तें
आरईएसीएच रीच क्राइटेरिया
PATH_TO_CONVERSION pathToConversionCriteria
फ़्लोलाइट floodlightCriteria
CROSS_DIMENSION_REACH क्रॉसडाइमेंशन से जुड़ी शर्तें

इनमें से हर टाइप आधारित शर्त से फ़ील्ड का थोड़ा अलग सेट दिखता है, लेकिन सामान्य मानदंड फ़ील्ड का सेट होता है जो आम तौर पर रिपोर्ट आउटपुट को कंट्रोल करने के लिए मददगार होते हैं:

फ़ील्ड जानकारी
तारीख सीमा वे तारीखें जिनके लिए यह रिपोर्ट चलाई जानी चाहिए. इसका इस्तेमाल, पसंद के मुताबिक शुरू और खत्म होने की तारीख या तारीख की रिलेटिव तारीख बताने के लिए किया जा सकता है.
आयाम फ़िल्टर दिखाए गए नतीजों पर पाबंदी लगाने वाले फ़िल्टर की सूची. फ़िल्टर कॉन्फ़िगर करने के बारे में ज़्यादा जानकारी के लिए, क्वेरी फ़िल्टर की वैल्यू सेक्शन देखें.
आयाम रिपोर्ट आउटपुट में शामिल करने के लिए, Campaign Manager 360 एलिमेंट की सूची.
मेट्रिक के नाम रिपोर्ट आउटपुट में शामिल करने के लिए मेज़रमेंट की स्टैंडर्ड यूनिट.

अपनी रिपोर्ट के लिए डाइमेंशन, मेट्रिक, और फ़िल्टर चुनने के बारे में ज़्यादा जानकारी के लिए, फ़ील्ड के काम करने की संभावना का पता लगाना सेक्शन देखें. खास जानकारी वाले दस्तावेज़ और सहायता केंद्र में, खास तरह की शर्तों से जुड़े अतिरिक्त फ़ील्ड के बारे में बताया गया है.

नीचे दिया गया उदाहरण हमारे स्टैंडर्ड रिपोर्ट संसाधन में एक बुनियादी शर्तें जोड़ता है:

C#

// Define a date range to report on. This example uses explicit start and
// end dates to mimic the "LAST_30_DAYS" relative date range.
DateRange dateRange = new DateRange();
dateRange.EndDate = DateTime.Now.ToString("yyyy-MM-dd");
dateRange.StartDate = DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd");

// Create a report criteria.
SortedDimension dimension = new SortedDimension();
dimension.Name = "advertiser";

Report.CriteriaData criteria = new Report.CriteriaData();
criteria.DateRange = dateRange;
criteria.Dimensions = new List<SortedDimension>() { dimension };
criteria.MetricNames = new List<string>() {
  "clicks",
  "impressions"
};

// Add the criteria to the report resource.
report.Criteria = criteria;

Java

// Define a date range to report on. This example uses explicit start and end dates to mimic
// the "LAST_MONTH" relative date range.
DateRange dateRange = new DateRange();
dateRange.setEndDate(new DateTime(true, System.currentTimeMillis(), null));

Calendar lastMonth = Calendar.getInstance();
lastMonth.add(Calendar.MONTH, -1);
dateRange.setStartDate(new DateTime(true, lastMonth.getTimeInMillis(), null));

// Create a report criteria.
Report.Criteria criteria = new Report.Criteria();
criteria.setDateRange(dateRange);
criteria.setDimensions(Lists.newArrayList(new SortedDimension().setName("advertiser")));
criteria.setMetricNames(Lists.newArrayList("clicks", "impressions"));

// Add the criteria to the report resource.
report.setCriteria(criteria);

129

// Define a date range to report on. This example uses explicit start and
// end dates to mimic the "LAST_30_DAYS" relative date range.
$dateRange = new Google_Service_Dfareporting_DateRange();
$dateRange->setStartDate(
    date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - 30, date('Y')))
);
$dateRange->setEndDate(date('Y-m-d'));

// Create a report criteria.
$dimension = new Google_Service_Dfareporting_SortedDimension();
$dimension->setName('advertiser');

$criteria = new Google_Service_Dfareporting_ReportCriteria();
$criteria->setDateRange($dateRange);
$criteria->setDimensions([$dimension]);
$criteria->setMetricNames(['clicks', 'impressions']);

// Add the criteria to the report resource.
$report->setCriteria($criteria);

Python

# Define a date range to report on. This example uses explicit start and end
# dates to mimic the "LAST_30_DAYS" relative date range.
end_date = date.today()
start_date = end_date - timedelta(days=30)

# Create a report criteria.
criteria = {
    'dateRange': {
        'startDate': start_date.strftime('%Y-%m-%d'),
        'endDate': end_date.strftime('%Y-%m-%d')
    },
    'dimensions': [{
        'name': 'advertiser'
    }],
    'metricNames': ['clicks', 'impressions']
}

# Add the criteria to the report resource.
report['criteria'] = criteria

Ruby

# Define a date range to report on. This example uses explicit start and end
# dates to mimic the "LAST_30_DAYS" relative date range.
start_date = DateTime.now.prev_day(30).strftime('%Y-%m-%d')
end_date = DateTime.now.strftime('%Y-%m-%d')

# Create a report criteria
criteria = DfareportingUtils::API_NAMESPACE::Report::Criteria.new(
  date_range: DfareportingUtils::API_NAMESPACE::DateRange.new(
    start_date: start_date,
    end_date: end_date
  ),
  dimensions: [
    DfareportingUtils::API_NAMESPACE::SortedDimension.new(
      name: 'advertiser'
    )
  ],
  metric_names: ['clicks', 'impressions']
)

# Add the criteria to the report resource.
report.criteria = criteria

क्वेरी फ़िल्टर की वैल्यू

किसी रिपोर्ट के लिए फ़िल्टर कॉन्फ़िगर करते समय, आपको वे सटीक वैल्यू डालनी होंगी जिनका इस्तेमाल करके फ़िल्टर, रिपोर्ट आउटपुट को सीमित करेंगे. अगर आपको नहीं पता कि किसी फ़िल्टर के लिए संभावित वैल्यू क्या हैं, तो डाइमेंशन वैल्यू सेवा का इस्तेमाल करके उन्हें देखें.

बेसिक डाइमेंशन वैल्यू क्वेरी में एक डाइमेंशन नाम के साथ-साथ एक शुरू होने की तारीख और खत्म होने की तारीख भी होती है. शुरू और खत्म होने की तारीखें, उस समयावधि में मान्य वैल्यू के रिस्पॉन्स को सीमित करती हैं. अगर आपको क्वेरी के नतीजों को और सीमित करना है, तो अतिरिक्त फ़िल्टर की जानकारी दी जा सकती है.

नीचे दिया गया उदाहरण हमारी रिपोर्ट के चलने और उन्हें रिपोर्ट में जोड़ने के तारीखों के दौरान मान्य विज्ञापन देने वाले फ़िल्टर मानों को खोजता है:

C#

// Query advertiser dimension values for report run dates.
DimensionValueRequest request = new DimensionValueRequest();
request.StartDate = report.Criteria.DateRange.StartDate;
request.EndDate = report.Criteria.DateRange.EndDate;
request.DimensionName = "advertiser";

DimensionValueList values =
    service.DimensionValues.Query(request, profileId).Execute();

if (values.Items.Any()) {
  // Add a value as a filter to the report criteria.
  report.Criteria.DimensionFilters = new List<DimensionValue>() {
    values.Items[0]
  };
}

Java

// Query advertiser dimension values for report run dates.
DimensionValueRequest request = new DimensionValueRequest();
request.setStartDate(report.getCriteria().getDateRange().getStartDate());
request.setEndDate(report.getCriteria().getDateRange().getEndDate());
request.setDimensionName("advertiser");

DimensionValueList values = reporting.dimensionValues().query(profileId, request).execute();

if (!values.getItems().isEmpty()) {
  // Add a value as a filter to the report criteria.
  List<DimensionValue> filters = Lists.newArrayList(values.getItems().get(0));
  report.getCriteria().setDimensionFilters(filters);
}

129

// Query advertiser dimension values for report run dates.
$request = new Google_Service_Dfareporting_DimensionValueRequest();
$request->setStartDate(
    $report->getCriteria()->getDateRange()->getStartDate()
);
$request->setEndDate(
    $report->getCriteria()->getDateRange()->getEndDate()
);
$request->setDimensionName('advertiser');

$values =
    $this->service->dimensionValues->query($userProfileId, $request);

if (!empty($values->getItems())) {
    // Add a value as a filter to the report criteria.
    $report->getCriteria()->setDimensionFilters([$values->getItems()[0]]);
}

Python

# Query advertiser dimension values for report run dates.
request = {
    'dimensionName': 'advertiser',
    'endDate': report['criteria']['dateRange']['endDate'],
    'startDate': report['criteria']['dateRange']['startDate']
}

values = service.dimensionValues().query(
    profileId=profile_id, body=request).execute()

if values['items']:
  # Add a value as a filter to the report criteria.
  report['criteria']['dimensionFilters'] = [values['items'][0]]

Ruby

# Query advertiser dimension values for report run dates.
dimension = DfareportingUtils::API_NAMESPACE::DimensionValueRequest.new(
  dimension_name: 'advertiser',
  start_date: report.criteria.date_range.start_date,
  end_date: report.criteria.date_range.end_date
)

values = service.query_dimension_value(profile_id, dimension)

unless values.items.empty?
  # Add a value as a filter to the report criteria.
  report.criteria.dimension_filters = [values.items.first]
end

यह तय करना कि फ़ील्ड कितने काम का है

अपनी रिपोर्ट की शर्तें कॉन्फ़िगर करते समय, ध्यान रखें कि सभी मेट्रिक, डाइमेंशन, और फ़िल्टर मान्य नहीं होते. आपको ऐसी रिपोर्ट सेव करने की अनुमति नहीं होगी जिसमें अमान्य कॉम्बिनेशन है. इसलिए, यह पक्का करना ज़रूरी है कि आप जिन फ़ील्ड का इस्तेमाल करना चाहते हैं वे एक-दूसरे के साथ काम करते हों.

अपने रिपोर्ट रिसॉर्स बनाते समय, उसे रिपोर्ट.supportedFields सेवा में पास करके देखा जा सकता है कि पहले से चुने गए फ़ील्ड के लिए कौनसे फ़ील्ड मान्य हैं. रिपोर्ट के कॉन्फ़िगरेशन का विश्लेषण किया जाएगा. साथ ही, काम करने वाले डाइमेंशन, मेट्रिक, और फ़िल्टर वाले जवाब दिखाए जाएंगे. इस बात की गारंटी नहीं दी जा सकती कि इस जवाब के फ़ील्ड एक-दूसरे के साथ काम करेंगे. इसलिए, आपको एक से ज़्यादा अनुरोध करने पड़ सकते हैं, ताकि यह पक्का किया जा सके कि आपके चुने गए सभी फ़ील्ड एक साथ काम करें.

नीचे दिए गए उदाहरण में बताया गया है कि हमारे रिपोर्ट रिसॉर्स को इनपुट के तौर पर इस्तेमाल करते हुए, सैंपल के तौर पर काम करने वाले फ़ील्ड का अनुरोध कैसे करें:

C#

CompatibleFields fields =
    service.Reports.CompatibleFields.Query(report, profileId).Execute();

ReportCompatibleFields reportFields = fields.ReportCompatibleFields;

if(reportFields.Dimensions.Any()) {
  // Add a compatible dimension to the report.
  Dimension dimension = reportFields.Dimensions[0];
  SortedDimension sortedDimension = new SortedDimension();
  sortedDimension.Name = dimension.Name;
  report.Criteria.Dimensions.Add(sortedDimension);
} else if (reportFields.Metrics.Any()) {
  // Add a compatible metric to the report.
  Metric metric = reportFields.Metrics[0];
  report.Criteria.MetricNames.Add(metric.Name);
}

Java

CompatibleFields fields = reporting.reports().compatibleFields()
    .query(profileId, report).execute();

ReportCompatibleFields reportFields = fields.getReportCompatibleFields();

if (!reportFields.getDimensions().isEmpty()) {
  // Add a compatible dimension to the report.
  Dimension dimension = reportFields.getDimensions().get(0);
  SortedDimension sortedDimension = new SortedDimension().setName(dimension.getName());
  report.getCriteria().getDimensions().add(sortedDimension);
} else if (!reportFields.getMetrics().isEmpty()) {
  // Add a compatible metric to the report.
  Metric metric = reportFields.getMetrics().get(0);
  report.getCriteria().getMetricNames().add(metric.getName());
}

129

$fields = $this->service->reports_compatibleFields->query(
    $userProfileId,
    $report
);

$reportFields = $fields->getReportCompatibleFields();

if (!empty($reportFields->getDimensions())) {
    // Add a compatible dimension to the report.
    $dimension = $reportFields->getDimensions()[0];
    $sortedDimension = new Google_Service_Dfareporting_SortedDimension();
    $sortedDimension->setName($dimension->getName());
    $report->getCriteria()->setDimensions(
        array_merge(
            $report->getCriteria()->getDimensions(),
            [$sortedDimension]
        )
    );
} elseif (!empty($reportFields->getMetrics())) {
    // Add a compatible metric to the report.
    $metric = $reportFields->getMetrics()[0];
    $report->getCriteria()->setMetricNames(
        array_merge(
            $report->getCriteria()->getMetricNames(),
            [$metric->getName()]
        )
    );
}

Python

fields = service.reports().compatibleFields().query(
    profileId=profile_id, body=report).execute()

report_fields = fields['reportCompatibleFields']

if report_fields['dimensions']:
  # Add a compatible dimension to the report.
  report['criteria']['dimensions'].append({
      'name': report_fields['dimensions'][0]['name']
  })
elif report_fields['metrics']:
  # Add a compatible metric to the report.
  report['criteria']['metricNames'].append(
      report_fields['metrics'][0]['name'])

Ruby

fields = service.query_report_compatible_field(profile_id, report)

report_fields = fields.report_compatible_fields

if report_fields.dimensions.any?
  # Add a compatible dimension to the report.
  report.criteria.dimensions <<
    DfareportingUtils::API_NAMESPACE::SortedDimension.new(
      name: report_fields.dimensions.first.name
    )
elsif report_fields.metrics.any?
  # Add a compatible metric to the report.
  report.criteria.metric_names << report_fields.metrics.first.name
end

रिपोर्ट सेव करना

इस प्रक्रिया का आखिरी कदम, अपनी रिपोर्ट के संसाधन को सेव करना है. नई रिपोर्ट बनाने के दौरान, उसे report.insert के साथ कॉल के ज़रिए शामिल किया जा सकता है:

C#

Report insertedReport =
    service.Reports.Insert(report, profileId).Execute();

Java

Report insertedReport = reporting.reports().insert(profileId, report).execute();

129

$insertedReport =
    $this->service->reports->insert($userProfileId, $report);

Python

inserted_report = service.reports().insert(
    profileId=profile_id, body=report).execute()

Ruby

report = service.insert_report(profile_id, report)

अगर आपको कुछ ही अपडेट करने हैं, तो रिपोर्ट.पेच को कॉल करके अपने बदलावों को सेव करें:

C#

// Patch an existing report.
Report patchedReport =
    service.Reports.Patch(report, profileId, reportId).Execute();

Java

// Patch an existing report.
Report patchedReport = reporting.reports().patch(profileId, reportId, report).execute();

129

# Patch an existing report.
$patchedReport =
    $this->service->reports->patch($userProfileId, $reportId, $report)

Python

# Patch an existing report.
patched_report = service.reports().patch(
    profileId=profile_id, reportId=report_id, body=report).execute();

Ruby

# Patch an existing report.
patched_report = service.patch_report(profile_id, report_id, report)

या, अगर आपने पूरा अपडेट लेने का फ़ैसला किया है, तो आप रिपोर्ट.अपडेट को कॉल करके अपने बदलाव सेव कर सकते हैं:

C#

// Update an existing report.
Report updatedReport =
    service.Reports.Update(report, profileId, report.Id).Execute();

Java

// Update an existing report.
Report updatedReport = reporting.reports().update(profileId, report.getId(), report).execute();

129

# Update an existing report.
$updatedReport =
    $this->service->reports->update($userProfileId, $report->getId(), $report)

Python

# Update an existing report.
updated_report = service.reports().update(
    profileId=profile_id, reportId=report['id'], body=report).execute();

Ruby

# Update an existing report.
updated_report = service.update_report(profile_id, report.id, report);

सेव करने का अनुरोध पूरा होने के बाद, जवाब के मुख्य भाग में रिपोर्ट संसाधन की एक कॉपी दिखाई जाएगी. इस संसाधन में कुछ नए फ़ील्ड भरे जाएंगे, जिनमें से सबसे ज़रूरी फ़ील्ड id फ़ील्ड है. इस आईडी का इस्तेमाल, पूरे आपके वर्कफ़्लोमें आपको इस रिपोर्ट के बारे में बताने के लिए किया जाएगा.