मल्टी चैनल फ़नल रिपोर्टिंग एपीआई - डेवलपर गाइड

इस दस्तावेज़ में बताया गया है कि मल्टी चैनल फ़नल के डेटा को ऐक्सेस करने के लिए, मल्टी चैनल फ़नल रिपोर्टिंग एपीआई का इस्तेमाल कैसे किया जा सकता है.

शुरुआती जानकारी

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

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

शुरू करने से पहले

मल्टी चैनल फ़नल रिपोर्टिंग एपीआई को ऐक्सेस करने के लिए इस गाइड में Java क्लाइंट लाइब्रेरी का इस्तेमाल किया गया है. हर क्लाइंट लाइब्रेरी एक Analytics सेवा ऑब्जेक्ट देती है, ताकि डेटा पाने के लिए मल्टी चैनल फ़नल रिपोर्टिंग एपीआई को कॉल किया जा सके. अगर एपीआई ऐक्सेस करने के लिए क्लाइंट लाइब्रेरी का इस्तेमाल नहीं किया जाता है, तो मल्टी चैनल फ़नल रिपोर्टिंग एपीआई - रेफ़रंस गाइड पढ़ें.

Analytics सेवा ऑब्जेक्ट बनाने के लिए:

  1. Google API (एपीआई) कंसोल में अपना ऐप्लिकेशन रजिस्टर करें.
  2. Google Analytics डेटा को ऐक्सेस करने की अनुमति दें.
  3. Analytics सेवा ऑब्जेक्ट बनाने के लिए कोड लिखें.

अगर आपने इन चरणों को पूरा नहीं किया है, तो रुक जाएं और Hello Analytics API का ट्यूटोरियल पढ़ें. इसमें, Google Analytics API ऐप्लिकेशन बनाने के शुरुआती चरणों के बारे में बताया गया है. ट्यूटोरियल पूरा करने के बाद, नीचे दी गई गाइड पढ़ना जारी रखें.

उदाहरण के लिए, नीचे दिया गया कोड अनुमति पा चुके Analytics सेवा ऑब्जेक्ट बनाता है:

Java

Analytics analytics = initializeAnalytics();

मल्टी चैनल फ़नल रिपोर्टिंग एपीआई को कॉल करने के लिए, Analytics सेवा ऑब्जेक्ट analytics का इस्तेमाल करें.

खास जानकारी

डेटा पाने के लिए मल्टी चैनल फ़नल रिपोर्टिंग एपीआई का इस्तेमाल करने के लिए एक ऐप्लिकेशन लिखें:

  1. मल्टी चैनल फ़नल रिपोर्टिंग एपीआई की क्वेरी करें.
  2. एपीआई से मिले नतीजों के साथ काम करें.

मल्टी चैनल फ़नल रिपोर्टिंग एपीआई के लिए क्वेरी करना

मल्टी चैनल फ़नल रिपोर्टिंग एपीआई से डेटा पाने का अनुरोध करने के लिए:

  1. मल्टी चैनल फ़नल रिपोर्टिंग एपीआई क्वेरी ऑब्जेक्ट बनाएं.
  2. मल्टी चैनल फ़नल सर्वर से डेटा पाने का अनुरोध करने के लिए, क्वेरी ऑब्जेक्ट का इस्तेमाल करें.

मल्टी चैनल फ़नल रिपोर्टिंग एपीआई क्वेरी बनाना

मल्टी चैनल फ़नल रिपोर्टिंग एपीआई क्वेरी ऑब्जेक्ट बनाने के लिए, इस तरीके को कॉल करें:

analytics.data.mcf.get()    // analytics is the Analytics service object

इस तरीके में दिया गया पहला पैरामीटर, ga:XXXX के रूप में एक यूनीक टेबल आईडी होता है. इसमें XXXX, अनुरोध किए गए डेटा वाले Analytics व्यू (प्रोफ़ाइल) का आईडी होता है. क्वेरी पैरामीटर तय करने के लिए क्वेरी ऑब्जेक्ट का इस्तेमाल करें (जैसे, setDimensions). उदाहरण के लिए:

Java

Get apiQuery = analytics.data().mcf()
    .get(tableId,
        "2012-01-01",              // Start date
        "2012-03-31",              // End date
        "mcf:totalConversions")    // Metrics
    .setDimensions("mcf:sourcePath")
    .setSort("-mcf:totalConversions")
    .setMaxResults(25);

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

मल्टी चैनल फ़नल रिपोर्टिंग एपीआई डेटा के लिए अनुरोध करना

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

Java

try {
  apiQuery.execute();
  // Success. Do something cool!

} catch (GoogleJsonResponseException e) {
  // Catch API specific errors.
  handleApiError(e);

} catch (IOException e) {
  // Catch general parsing network errors.
  e.printStackTrace();
}

इसके बजाय, अगर आपको एपीआई के रॉ रिस्पॉन्स को ऐक्सेस करना है, तो क्वेरी ऑब्जेक्ट पर executeUnparsed() तरीके को कॉल करें:

HttpResponse response = apiQuery.executeUnparsed();

क्वेरी का जवाब मिलने पर, अनुरोध किया गया डेटा दिखता है. अगर कोई गड़बड़ी होती है, तो execute वाला तरीका, गड़बड़ी के स्टेटस कोड और गड़बड़ी के ब्यौरे वाला अपवाद दिखाता है. ऐप्लिकेशन अपवाद को पकड़ना और उसे हैंडल करना चाहिए.

एपीआई के नतीजों के साथ काम करना

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

मल्टी चैनल फ़नल रिपोर्टिंग डेटा

क्वेरी से यह टेबल फ़ॉर्मैट वाला रिपोर्टिंग डेटा मिलता है:

  • कॉलम हेडर का डेटा
  • लाइन का डेटा

कॉलम हेडर का डेटा

क्वेरी के जवाब में एक कॉलम हेडर फ़ील्ड होता है, जिसमें टेबल हेडर की जानकारी होती है. यह फ़ील्ड, ColumnHeaders ऑब्जेक्ट की सूची या कलेक्शन है. हर ऑब्जेक्ट में कॉलम का नाम, कॉलम का टाइप, और कॉलम का डेटा टाइप शामिल है. कॉलम का क्रम, डाइमेंशन कॉलम का क्रम होता है. इसके बाद, मेट्रिक कॉलम उसी क्रम में होते हैं जैसा ओरिजनल क्वेरी में बताया गया है. उदाहरण के लिए, नीचे दिया गया तरीका, कॉलम हेडर को प्रिंट करता है:

Java

private static void printColumnHeaders(McfData mcfData) {
  System.out.println("Column Headers:");

  for (ColumnHeaders header : mcfData.getColumnHeaders()) {
    System.out.println("Column Name: " + header.getName());
    System.out.println("Column Type: " + header.getColumnType());
    System.out.println("Column Data Type: " + header.getDataType());
  }
}

लाइन का डेटा

एपीआई से मिला मुख्य डेटा, McfData.Rows के दो डाइमेंशन वाले List के तौर पर दिखाया जाता है. हर McfData.Rows एक सेल को दिखाता है, जो या तो String टाइप की शुरुआती वैल्यू होती है या McfData.Rows.ConversionPathValue टाइप की कन्वर्ज़न पाथ वैल्यू होती है. किसी पंक्ति में सेल का क्रम, ऊपर बताए गए कॉलम हेडर ऑब्जेक्ट के फ़ील्ड जैसा ही होता है.

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

उदाहरण के लिए, नीचे दिया गया तरीका टेबल के हेडर और पंक्तियों को प्रिंट करता है:

Java

private static void printDataTable(McfData mcfData) {
  System.out.println("Data Table:");
  if (mcfData.getTotalResults() > 0) {
    // Print the column names.
    List<ColumnHeaders> headers = mcfData.getColumnHeaders();
    for (ColumnHeaders header : headers) {
      System.out.print(header.getName());
    }
    System.out.println();

    // Print the rows of data.
    for (List<McfData.Rows> row : mcfData.getRows()) {
      for (int columnIndex = 0; columnIndex < row.size(); ++columnIndex) {
        ColumnHeaders header = headers.get(columnIndex);
        McfData.Rows cell = row.get(columnIndex);
        if (header.getDataType().equals("MCF_SEQUENCE")) {
          System.out.print(getStringFromMcfSequence(cell.getConversionPathValue()));
        } else {
          System.out.print(cell.getPrimitiveValue());
        }
      }
      System.out.println();
    }
  } else {
    System.out.println("No rows found");
  }
}

नीचे दिए गए उदाहरण में, मल्टी चैनल फ़नल के क्रम टाइप ऑब्जेक्ट को पार्स और उसे स्ट्रिंग में बदलने का तरीका बताया गया है:

Java

private static String getStringFromMcfSequence(List<McfData.Rows.ConversionPathValue> path) {
  StringBuilder stringBuilder = new StringBuilder();
  for (McfData.Rows.ConversionPathValue pathElement : path) {
    if (stringBuilder.length() > 0)
      stringBuilder.append(" > ");
    stringBuilder.append(pathElement.getNodeValue());
  }
  return stringBuilder.toString();
}

रिपोर्ट की जानकारी

क्वेरी में रिपोर्टिंग डेटा के अलावा, डेटा के बारे में जानकारी (उदाहरण के लिए, रिपोर्ट आईडी) भी दिखती है. उदाहरण के लिए, नीचे दिया गया तरीका रिपोर्ट की जानकारी को प्रिंट करता है:

Java

private static void printReportInfo(McfData mcfData) {
  System.out.println("Report Info:");
  System.out.println("ID:" + mcfData.getId());
  System.out.println("Self link: " + mcfData.getSelfLink());
  System.out.println("Kind: " + mcfData.getKind());
  System.out.println("Contains Sampled Data: " + mcfData.getContainsSampledData());
}

containsSampledData फ़ील्ड से आपको पता चलता है कि क्वेरी के जवाब का सैंपल लिया गया है या नहीं. सैंपलिंग से क्वेरी के नतीजों पर असर पड़ सकता है, इसलिए क्वेरी (एपीआई) से मिले सैंपल की वैल्यू, वेब इंटरफ़ेस पर दिखाई गई वैल्यू से मेल नहीं खातीं. ज़्यादा जानकारी के लिए, सैंपलिंग देखें.

प्रोफ़ाइल की जानकारी देखें

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

Java

private static void printProfileInfo(McfData mcfData) {
  ProfileInfo profileInfo = mcfData.getProfileInfo();

  System.out.println("View (Profile) Info:");
  System.out.println("Account ID: " + profileInfo.getAccountId());
  System.out.println("Web Property ID: " + profileInfo.getWebPropertyId());
  System.out.println("Internal Web Property ID: " + profileInfo.getInternalWebPropertyId());
  System.out.println("View (Profile) ID: " + profileInfo.getProfileId());
  System.out.println("View (Profile) Name: " + profileInfo.getProfileName());
  System.out.println("Table ID: " + profileInfo.getTableId());
}

क्वेरी की जानकारी

क्वेरी के जवाब में एक Query ऑब्जेक्ट शामिल होता है, जिसमें सभी डेटा अनुरोध क्वेरी पैरामीटर की वैल्यू होती हैं. उदाहरण के लिए, नीचे दिया गया तरीका ऐसे पैरामीटर की वैल्यू प्रिंट करता है:

Java

private static void printQueryInfo(McfData mcfData) {
  Query query = mcfData.getQuery();

  System.out.println("Query Info:");
  System.out.println("Ids: " + query.getIds());
  System.out.println("Start Date: " + query.getStartDate());
  System.out.println("End Date: " + query.getEndDate());
  System.out.println("Metrics: " + query.getMetrics());       // List of Analytics metrics
  System.out.println("Dimensions: " + query.getDimensions()); // List of Analytics dimensions
  System.out.println("Sort: " + query.getSort());             // List of sorte metrics or dimensions
  System.out.println("Segment: " + query.getSegment());
  System.out.println("Filters: " + query.getFilters());
  System.out.println("Start Index: " + query.getStartIndex());
  System.out.println("Max Results: " + query.getMaxResults());
}

query.getMetrics(), query.getDimensions(), और query.getSort() के अलावा, दूसरे तरीके String दिखाते हैं. उदाहरण के लिए, query.getStartDate(), रिपोर्ट के शुरू होने की तारीख (String) दिखाता है.

खोज नतीजों को पेजों में बांटने के बारे में जानकारी

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

Java

private static void printPaginationInfo(McfData mcfData) {
  System.out.println("Pagination Info:");
  System.out.println("Previous Link: " + mcfData.getPreviousLink());
  System.out.println("Next Link: " + mcfData.getNextLink());
  System.out.println("Items Per Page: " + mcfData.getItemsPerPage());
  System.out.println("Total Results: " + mcfData.getTotalResults());
}

तरीका कॉल mcfData.getTotalResults(), क्वेरी के लिए पंक्तियों की कुल संख्या दिखाता है. यह संख्या, क्वेरी से मिली पंक्तियों की कुल संख्या से ज़्यादा हो सकती है. साथ ही, तरीका कॉल mcfData.getItemsPerPage() यह दिखाता है कि क्वेरी के जवाब में ज़्यादा से ज़्यादा कितनी पंक्तियां हो सकती हैं.

mcfData.getPreviousLink() वाले तरीके से, पिछले पेज का लिंक दिखता है और mcfData.getNextLink() अगले पेज का लिंक दिखाता है.

सभी नतीजों के लिए कुल वैल्यू

क्वेरी के जवाब में मिले नतीजे के साथ-साथ सभी नतीजों में, अनुरोध की गई मेट्रिक की कुल वैल्यू पाने के लिए, क्वेरी के जवाब पर getTotalsForAllResults() तरीके का इस्तेमाल करें, जिसे McfData ऑब्जेक्ट कहा जाता है. औसत निकालने के लिए कुल वैल्यू का इस्तेमाल करें.

Java

private static void printTotalsForAllResults(McfData mcfData) {
  System.out.println("Metric totals over all results:");
  Map<String, String> totalsMap = mcfData.getTotalsForAllResults();
  for (Map.Entry<String, String> entry : totalsMap.entrySet()) {
    System.out.println(entry.getKey() + " : " + entry.getValue());
  }
}

वर्किंग सैंपल