মাইগ্রেশন গাইড, মাইগ্রেশন গাইড, মাইগ্রেশন গাইড

এই নির্দেশিকা কোর রিপোর্টিং API v3-কে Analytics রিপোর্টিং API v4-এ স্থানান্তরিত করার নির্দেশিকা প্রদান করে।

ভূমিকা

Analytics রিপোর্টিং API v4-এ প্রবর্তিত নতুন বৈশিষ্ট্যগুলির সুবিধা নিতে, API ব্যবহার করতে আপনার কোড স্থানান্তর করুন৷ এই নির্দেশিকাটি আপনার স্থানান্তরকে সহজ করার জন্য কোর রিপোর্টিং API v3 এবং Analytics রিপোর্টিং API v4-এর সমতুল্য অনুরোধগুলি দেখায়৷

পাইথন মাইগ্রেশন

আপনি যদি পাইথন ডেভেলপার হন, Google Analytics কোর রিপোর্টিং API v3 অনুরোধগুলিকে Analytics রিপোর্টিং API v4 অনুরোধে রূপান্তর করতে GitHub-এ GAV4 সহায়ক লাইব্রেরি ব্যবহার করুন

শেষবিন্দু

কোর রিপোর্টিং এপিআই v3 এবং অ্যানালিটিক্স রিপোর্টিং এপিআই v4 এর বিভিন্ন এন্ডপয়েন্ট এবং HTTP পদ্ধতি রয়েছে:

v3 এন্ডপয়েন্ট

GET https://www.googleapis.com/analytics/v3/data/ga

v4 এন্ডপয়েন্ট

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet

নিম্নলিখিত উদাহরণগুলি v3-তে একটি অনুরোধ এবং v4-এর সমতুল্য অনুরোধের তুলনা করে:

v3

v3 রেফারেন্স ডকুমেন্টেশন

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
    &start-date=2015-11-01&end-date=2015-11-06 \
    &metrics=ga:users&dimensions=ga:pagePath

v4

v4 রেফারেন্স ডকুমেন্টেশন

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    "viewId":"XXXX",
    "dateRanges":[
    {
      "startDate":"2015-11-01",
      "endDate":"2015-11-06"
    }],
    "metrics":[
    {
      "expression":"ga:users"
    }],
    "dimensions": [
    {
      "name":"ga:pagePath"
    }]
  }]
}

ক্লায়েন্ট লাইব্রেরি এবং আবিষ্কার পরিষেবা

আপনি যদি পাইথন, জাভাস্ক্রিপ্ট বা অন্যান্য ক্লায়েন্ট লাইব্রেরি ব্যবহার করেন যা Google আবিষ্কার পরিষেবার উপর নির্ভর করে, তাহলে আপনাকে রিপোর্টিং API v4-এর জন্য আবিষ্কার নথির অবস্থান প্রদান করতে হবে।

পাইথন

from apiclient import discovery

...

# Build the Analytics Reporting API v4 authorized service object.
analyticsReporting = discovery.build(
  'analyticsreporting',
  'v4',
  http=http,
  discoveryServiceUrl='https://analyticsreporting.googleapis.com/$discovery/rest')

জাভাস্ক্রিপ্ট

gapi.client.load(
  'https://analyticsreporting.googleapis.com/$discovery/rest',
  'v4'
).then(...)

জাভা এবং পিএইচপি ক্লায়েন্ট লাইব্রেরিগুলি পূর্ব-নির্মিত, তবে আপনি সেগুলি তৈরি করতে আবিষ্কার পরিষেবা এবং Google API জেনারেটর ব্যবহার করতে পারেন।

অনুরোধ

API v4 রেফারেন্স অনুরোধের বডির গঠন বিস্তারিতভাবে বর্ণনা করে। নিম্নলিখিত বিভাগগুলি v3 অনুরোধের পরামিতিগুলিকে v4 অনুরোধের পরামিতিতে স্থানান্তরিত করে।

আইডি দেখুন

v3-তে, একটি ids প্যারামিটার, যা একটি "টেবিল আইডি" গ্রহণ করে, এটি ga:XXXX ফর্ম্যাটে থাকে, যেখানে XXXX হল ভিউ (প্রোফাইল) আইডি। v4-এ, অনুরোধের বডিতে viewId ক্ষেত্রে একটি ভিউ (প্রোফাইল) আইডি নির্দিষ্ট করা আছে।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে ids প্যারামিটার এবং একটি v4 অনুরোধে viewId ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    "viewId":"XXXX",
    ...
  }]
}

তারিখ পরিসীমা

Analytics রিপোর্টিং API v4 আপনাকে একটি অনুরোধে একাধিক তারিখের সীমা নির্দিষ্ট করতে দেয়। dateRanges ক্ষেত্রটি DateRange অবজেক্টের একটি তালিকা নেয়। v3 তে, আপনি একটি অনুরোধে একটি তারিখ পরিসীমা নির্দিষ্ট করতে start-date এবং end-date প্যারামিটার ব্যবহার করেন।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে start-date এবং end-date পরামিতি এবং একটি v4 অনুরোধে dateRanges ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
    &start-date=2015-11-01&end-date=2015-11-06 \
    ...

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    "viewId":"XXXX",
    "dateRanges":[
    {
      "startDate":"2015-11-01",
      "endDate":"2015-11-06"
    }],
    ....
  }]
}

মেট্রিক্স

v3 metrics প্যারামিটার v4 metrics ক্ষেত্রের সাথে মিলে যায় যা মেট্রিক অবজেক্টের একটি তালিকা নেয়।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধের metrics প্যারামিটার এবং একটি v4 অনুরোধের metrics ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
    &start-date=2015-11-01&end-date=2015-11-06 \
    &metrics=ga:users,ga:sessions \
    ...

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    "viewId":"XXXX",
    "dateRanges":[
    {
      "startDate":"2015-11-01",
      "endDate":"2015-11-06"
    }],
    "metrics":[
    {
      "expression":"ga:users"
    },{
      "expression":"ga:sessions"
    }],
    ...
  }]
}

মাত্রা

v3 dimensions প্যারামিটার v4 dimensions ক্ষেত্রের সাথে মিলে যায় যা মাত্রা বস্তুর একটি তালিকা নেয়।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে dimensions পরামিতি এবং একটি v4 অনুরোধে dimensions ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
  &dimensions=ga:country,ga:browser&... \

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    ...
    "dimensions": [
    {
      "name":"ga:country"
    },{
      "name":"ga:browser"
    }],
    ...
  }]
}

শ্রেণীবিভাজন

v3 sort প্যারামিটারটি v4 orderBys ক্ষেত্রের সমতুল্য যা OrderBy অবজেক্টের একটি তালিকা নেয়।

v4-এ, একটি মাত্রা বা মেট্রিক মান অনুসারে ফলাফলগুলি সাজাতে:

  • fieldName ক্ষেত্রের মাধ্যমে এর নাম বা উপনাম সরবরাহ করুন।
  • sortOrder ক্ষেত্রের মাধ্যমে সাজানোর ক্রম ( ASCENDING বা DESCENDING ) উল্লেখ করুন।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে sort পরামিতি এবং একটি v4 অনুরোধে orderBy ক্ষেত্রের তুলনা করে; তারা উভয়ই ব্যবহারকারীদের ক্রমানুসারে এবং উৎসগুলিকে বর্ণানুক্রমিকভাবে সাজায়:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
  &sort=-ga:users,ga:source

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    ...
    "orderBys": [
    {
      "fieldName": "ga:users",
      "sortOrder": "DESCENDING"
    },{
      "fieldName": "ga:source"
    }],
  }]
}

স্যাম্পলিং লেভেল

v3 samplingLevel প্যারামিটার v4 samplingLevel ক্ষেত্রের সাথে মিলে যায়। v3 তে, গৃহীত samplingLevel মানগুলি হল FASTER , HIGHER_PRECISION , এবং DEFAULT ; এবং v4-এ, গৃহীত samplingLevel মানগুলি হল SMALL , LARGE , এবং DEFAULT ৷ মনে রাখবেন যে v3-তে FASTER পরিবর্তিত হয়েছে v4-এ SMALL , HIGHER_PRECISION LARGE এ।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে samplingLevel প্যারামিটার এবং একটি v4 অনুরোধে samplingLevel ক্ষেত্রের তুলনা করে:

v3

https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX ...\
samplingLevel=HIGHER_PRECISION

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    ...
    "samplingLevel": "LARGE"
  }]
}

সেগমেন্ট

v3 segment প্যারামিটার v4 segments ক্ষেত্রের সাথে মিলে যায় যা সেগমেন্ট অবজেক্টের একটি তালিকা নেয়।

সেগমেন্ট আইডি

v4-এ, সেগমেন্ট আইডি দ্বারা একটি সেগমেন্টের অনুরোধ করতে, একটি সেগমেন্ট অবজেক্ট তৈরি করুন এবং সেগমেন্ট আইডি ক্ষেত্রের মাধ্যমে তার আইডি সরবরাহ করুন।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে segment প্যারামিটার এবং একটি v4 অনুরোধে segments ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
&segment=gaid::-11

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [{
    ...
    "viewId": "XXXX",
    "segments": [{
      "segmentId": "gaid::-11"
    }]
  }]
}

ডাইনামিক সেগমেন্ট

v4-এ, আরও জটিল সেগমেন্টের সংজ্ঞা প্রকাশ করতে, segments ক্ষেত্রটি ব্যবহার করুন যাতে একটি DynamicSegment অবজেক্ট রয়েছে।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধের segment প্যারামিটার এবং একটি v4 অনুরোধে একটি DynamicSegment অবজেক্ট ধারণকারী segments ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
&segment=sessions::condition::ga:medium==referral

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [{
    ...
    "segments": [{
      "dynamicSegment": {
        "name": "segment_name",
        "sessionSegment": {
          "segmentFilters": [{
            "simpleSegment": {
              "orFiltersForSegment": [{
                "segmentFilterClauses": [{
                  "dimensionFilter": {
                    "dimensionName": "ga:medium",
                    "operator": "EXACT",
                    "expressions": [ "referral" ]
                  }
                }]
              }]
            }
          }]
        }
      }
    }]
  }]
}

আপনি একটি বিভাগে শর্ত এবং ক্রম একত্রিত করতে পারেন:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
&segment=users::condition::ga:revenue>10;sequence::ga:deviceCategory==desktop->>ga:deviceCategory==mobile

v4

  "reportRequests": [{
      "dateRanges": [
            { "endDate": "2014-11-30", "startDate": "2014-11-01" }
      ],
      "metrics": [
          {"expression": "ga:pageviews"},
          {"expression": "ga:sessions"}
      ],
      "viewId": "XXXX",
      "dimensions":[{"name":"ga:medium"}, {"name":"ga:segment"}],
      "segments": [{
        "dynamicSegment": {
        "name": "segment_name",
        "userSegment": {
          "segmentFilters": [{
            "simpleSegment": {
              "orFiltersForSegment": [{
                "segmentFilterClauses": [{
                  "metricFilter": {
                    "metricName": "ga:sessions",
                    "operator": "GREATER_THAN",
                    "comparisonValue": "10"
                  }
                }]
              }]
            }
          },
          {
            "sequenceSegment": {
              "segmentSequenceSteps": [{
                "orFiltersForSegment": [{
                  "segmentFilterClauses": [{
                    "dimensionFilter": {
                      "dimensionName": "ga:deviceCategory",
                      "operator": "EXACT",
                      "expressions": ["desktop"]
                    }
                  }]
                }],
                "matchType": "PRECEDES"
              },{
                "orFiltersForSegment": [{
                  "segmentFilterClauses": [{
                    "dimensionFilter": {
                      "dimensionName": "ga:deviceCategory",
                      "operator": "EXACT",
                      "expressions": ["mobile"]
                    }
                  }]
                }]
              }]
            }
          }]
        }
      }
    }]
  }]

v3 v4-এ সেগমেন্ট সিনট্যাক্স

v4 API-এর segmentId ক্ষেত্র v3 API-এ সেগমেন্ট সিনট্যাক্স সমর্থন করে।

নিম্নলিখিত উদাহরণগুলি দেখায় যে কীভাবে একটি v3 অনুরোধের segment প্যারামিটার v4-এর সমতুল্য অনুরোধের segmentId ক্ষেত্রের দ্বারা সমর্থিত হয়:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
&segment=sessions::condition::ga:medium==referral

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [{
    ...
    "viewId": "XXXX",
    "segments": [{
      "segmentId": "sessions::condition::ga:medium==referral"
    }]
  }]
}

ফিল্টার

v4 মাত্রা ফিল্টার করতে dimensionFilterClauses এবং মেট্রিক্স ফিল্টার করতে metricFilterClauses ব্যবহার করে। একটি dimensionFilterClausesDimensionFilter অবজেক্টের একটি তালিকা রয়েছে; এবং একটি metricFilterClausesMetricFilter অবজেক্টের একটি তালিকা রয়েছে।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে filters প্যারামিটার এবং একটি v4 অনুরোধে dimensionFilterClauses ফিল্ডের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
  &start-date=2015-06-01&end-date=2015-07-31&metrics=ga:users& \
  dimensions=ga:browser&filters=ga:browser==Firefox

v4

  "reportRequests": [{
      "dateRanges": [
            { "endDate": "2014-11-30", "startDate": "2014-11-01" }
      ],
      "metrics": [
          {"expression": "ga:pageviews"},
          {"expression": "ga:sessions"}
      ],
      "viewId": "XXXX",
      "dimensions":[{"name":"ga:browser"}, {"name":"ga:country"}],
      "dimensionFilterClauses": [{
           "filters": [{
                "dimension_name": "ga:browser",
                "operator": "EXACT",
                "expressions": ["Firefox"]
            }]
      }]
  }]

v4 এ v3 ফিল্টার সিনট্যাক্স

যদিও v4-এ filtersExpression ক্ষেত্র v3-এ filters সিনট্যাক্স সমর্থন করে, মাত্রা এবং মেট্রিক্স ফিল্টার করতে dimensionFilterClauses এবং metricFilterClauses ব্যবহার করুন।

নিম্নলিখিত উদাহরণগুলি দেখায় যে কীভাবে একটি v3 অনুরোধের filters প্যারামিটারটি v4 এর সমতুল্য অনুরোধের filtersExpression ক্ষেত্রের দ্বারা সমর্থিত হয়:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga%XXXX \
&filters=ga:browser==Firefox

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [{
    ...
    "filtersExpression": "ga:browser==Firefox"
  }]
}

খালি সারি

v3 include-empty-rows প্যারামিটার v4-এর includeEmptyRows ক্ষেত্রের সাথে মিলে যায়। v3 প্যারামিটার সত্যে ডিফল্ট হয়, যখন v4 ক্ষেত্রটি মিথ্যাতে ডিফল্ট হয়। আপনার যদি v3 তে মান সেট না থাকে তবে আপনাকে v4-এ মানটিকে সত্যে সেট করতে হবে।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধের include-empty-rows প্যারামিটারটিকে একটি v4 অনুরোধের includeEmptyRows ক্ষেত্রের সাথে তুলনা করে:

v3

https://www.googleapis.com/analytics/v3/data/ga? ...\
    &include-empty-rows=true

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    ...
    "includeEmptyRows": "true",
  }]
}

পৃষ্ঠা সংখ্যা

v4 pageToken এবং pageSize ফিল্ড ব্যবহার করে অনেক সংখ্যক ফলাফলের মাধ্যমে পেজিনেট করতে। pageToken একটি প্রতিক্রিয়া বস্তুর nextPageToken সম্পত্তি থেকে প্রাপ্ত হয়।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধের start-index এবং max-results পরামিতিগুলিকে একটি v4 অনুরোধে pageToken এবং pageSize ক্ষেত্রের সাথে তুলনা করে:

v3

https://www.googleapis.com/analytics/v3/data/ga? ...\
    &start-index=10001&max-results=10000

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    ...
    # Taken from `nextPageToken` of a previous response.
    "pageToken": "10000",
    "pageSize": "10000",
  }]
}

স্ট্যান্ডার্ড প্যারামিটার

userIp এবং callback প্যারামিটার ব্যতীত অ্যানালিটিক্স রিপোর্টিং API v4 v3 API-এর বেশিরভাগ স্ট্যান্ডার্ড কোয়েরি প্যারামিটার সমর্থন করে।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধের quotaUser প্যারামিটারটিকে একটি v4 অনুরোধের সাথে তুলনা করে:

v3 এন্ডপয়েন্ট

GET https://www.googleapis.com/analytics/v3/data/ga?quotaUser=1X3F2F2

v4 এন্ডপয়েন্ট

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet?quotaUser=1X3F2F2

প্রতিক্রিয়া

যেহেতু v4 আপনাকে একক HTTP অনুরোধে একাধিক ReportRequest অবজেক্ট জমা দেওয়ার অনুমতি দেয়, আপনি প্রতিক্রিয়াতে রিপোর্ট অবজেক্টের একটি অ্যারে পাবেন। প্রতিটি জমা দেওয়া ReportRequest এর জন্য, আপনি প্রতিক্রিয়াতে একটি সংশ্লিষ্ট রিপোর্ট পাবেন।

রিপোর্ট

একটি v4 রিপোর্টে তিনটি শীর্ষ-স্তরের ক্ষেত্র রয়েছে: columnHeader , data , এবং nextPageToken

যেহেতু v4 প্রতিক্রিয়া বডিতে সমস্ত ক্যোয়ারী প্যারামিটারের প্রতিক্রিয়া অন্তর্ভুক্ত করা হয় না যেমন v3 প্রতিক্রিয়া করে, একটি নির্দিষ্ট ক্যোয়ারী প্যারামিটারের প্রতিক্রিয়া পেতে, ক্লায়েন্ট অ্যাপ্লিকেশনটিকে সেই প্যারামিটারটি ReportRequest- এ যোগ করতে হবে।

আমরা ইতিমধ্যেই পেজিনেশন বিভাগে nextPageToken সম্বোধন করেছি, তাই প্রথমে columnHeader অবজেক্টটি দেখি।

কলাম হেডার

কলাম হেডারে নামযুক্ত মাত্রার একটি তালিকা এবং একটি MetricHeader অবজেক্ট রয়েছে, যার মধ্যে MetricHeaderEntry অবজেক্টের একটি তালিকা রয়েছে। প্রতিটি MetricHeaderEntry অবজেক্ট মেট্রিক name এবং এর type (মুদ্রা, শতাংশ, ইত্যাদি) নির্দিষ্ট করে, যা আপনাকে আউটপুট ফর্ম্যাট করতে সহায়তা করে।

নিম্নলিখিত উদাহরণগুলি একটি v3 প্রতিক্রিয়াতে columnHeaders ক্ষেত্রটিকে একটি v4 প্রতিক্রিয়াতে columnHeader ক্ষেত্রের সাথে তুলনা করে:

v3

"columnHeaders": [
    {
        "name":"ga:source",
        "columnType":"DIMENSION",
        "dataType":"STRING"
    },{
        "name":"ga:city",
        "columnType":"DIMENSION",
        "dataType":"STRING"
    },{
        "name":"ga:sessions",
        "columnType":"METRIC",
        "dataType":"INTEGER"
    },{
        "name":"ga:pageviews",
        "columnType":
        "METRIC",
        "dataType":"INTEGER"
    }
]

v4

"columnHeader": {
    "dimensions": [
        "ga:source",
        "ga:city"
    ],
    "metricHeader": {
        "metricHeaderEntries": [
            {
                "name": "ga:pageviews",
                "type": "INTEGER"
            },
            {
                "name": "ga:sessions",
                "type": "INTEGER"
            }
        ]
    }
},

রিপোর্ট সারি

কোর রিপোর্টিং API v3 সারি অ্যারেতে রিপোর্ট ডেটা প্রদান করে, যাতে অনুরোধ করা মাত্রা এবং মেট্রিক্স থাকে।

অ্যানালিটিক্স রিপোর্টিং API v4 একটি ReportRow অবজেক্টে রিপোর্ট ডেটা প্রদান করে, যেটিতে মাত্রার একটি অ্যারে এবং DateRangeValues ​​অবজেক্টের একটি অ্যারে রয়েছে, যার প্রতিটিতে এক বা দুটি তারিখের ব্যাপ্তি রয়েছে, যেমনটি নিম্নলিখিত চিত্রটি চিত্রিত করে:

Report Rows

সারি

v3

"rows": [
    [
        "google",
        "Philadelphia",
        "60",
        "5"
    ],
    [
        "google",
        "Johnstown",
        "21",
        "1"
    ],
    [
        "google",
        "Progress",
        "7",
        "1"
    ]
],

v4

"rows": [
    {
        "dimensions": [
            "google",
            "Philadelphia"
        ],
        "metrics": [
            {
                "values": [
                    "60",
                    "5"
                ]
            }
        ]
    },
    {
        "dimensions": [
            "google",
            "Johnstown"
        ],
        "metrics": [
            {
                "values": [
                    "21",
                    "1"
                ]
            }
        ]
    },
    {
        "dimensions": [
            "google",
            "Progress"
        ],
        "metrics": [
            {
                "values": [
                    "7",
                    "1"
                ]
            }
        ]
    }
],

নমুনা তথ্য

ফলাফল নমুনা করা হলে Core Reporting API v3 প্রদান করে বুলিয়ান ফিল্ডে রয়েছে containsSampledData , যা true সেট করা আছে।

বিশ্লেষণ রিপোর্টিং API v4 একটি বুলিয়ান প্রদান করে না যদি ডেটা নমুনা করা হয়; বরং এপিআই samplesReadCounts এবং samplingSpaceSizes ক্ষেত্রগুলি প্রদান করে। ফলাফল নমুনা না হলে এই ক্ষেত্রগুলি সংজ্ঞায়িত করা হবে না। নিম্নলিখিত পাইথন উদাহরণটি দেখায় যে কীভাবে একটি প্রতিবেদনে নমুনাযুক্ত ডেটা থাকে তা গণনা করতে হয়:

def ContainsSampledData(report):
  """Determines if the report contains sampled data.

   Args:
       report (Report): An Analytics Reporting API v4 response report.

  Returns:
      bool: True if the report contains sampled data.
  """
  report_data = report.get('data', {})
  sample_sizes = report_data.get('samplesReadCounts', [])
  sample_spaces = report_data.get('samplingSpaceSizes', [])
  if sample_sizes and sample_spaces:
    return True
  else:
    return False

নীচে একটি উদাহরণ প্রতিক্রিয়া যা দুটি তারিখ ব্যাপ্তি সহ একটি অনুরোধ থেকে নমুনাযুক্ত ডেটা রয়েছে৷ ফলাফলগুলি প্রায় 15 মিলিয়ন সেশনের একটি নমুনা স্থান আকারের প্রায় 500k নমুনা থেকে গণনা করা হয়েছিল:

{
  "reports":
  [
    {
      "columnHeader": {
        ...
      },
      "data": {
        ...
        "samplesReadCounts": [ "499630","499630"],
        "samplingSpaceSizes": ["15328013","15328013"],
      }
    }
  ]
}

v4 প্রতিক্রিয়া পার্সিং

নিম্নলিখিত নমুনা কোড বিশ্লেষণ রিপোর্টিং API v4 প্রতিক্রিয়া পার্স এবং প্রিন্ট করে:

পাইথন

def printResponse(self, response):
  """Parses and prints the Analytics Reporting API v4 response"""

  for report in response.get('reports', []):
    columnHeader = report.get('columnHeader', {})
    dimensionHeaders = columnHeader.get('dimensions', [])
    metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])
    rows = report.get('data', {}).get('rows', [])

    for row in rows:
      dimensions = row.get('dimensions', [])
      dateRangeValues = row.get('metrics', [])

      for header, dimension in zip(dimensionHeaders, dimensions):
        print header + ': ' + dimension

      for i, values in enumerate(dateRangeValues):
        print 'Date range (' + str(i) + ')'
        for metricHeader, value in zip(metricHeaders, values.get('values')):
          print metricHeader.get('name') + ': ' + value

জাভা

public static void printResponse(GetReportsResponse response) {

  for (Report report: response.getReports()) {
    ColumnHeader header = report.getColumnHeader();
    List<String> dimensionHeaders = header.getDimensions();
    List<MetricHeaderEntry> metricHeaders = header.getMetricHeader().getMetricHeaderEntries();
    List<ReportRow> rows = report.getData().getRows();

    for (ReportRow row: rows) {
      List<String> dimensions = row.getDimensions();
      List<DateRangeValues> metrics = row.getMetrics();
      for (int i = 0; i < dimensionHeaders.size() && i < dimensions.size(); i++) {
        System.out.println(dimensionHeaders.get(i) + ": " + dimensions.get(i));
      }

      for (int j = 0; j < metrics.size(); j++) {
        System.out.print("Date Range (" + j + "): ");
        DateRangeValues values = metrics.get(j);
        for (int k = 0; k < values.size() && k < metricHeaders.size(); k++) {
          System.out.println(metricHeaders.get(k).getName() + ": " + values.get(k));
        }
      }
    }
  }
}

ত্রুটি পরিচালনা

যেহেতু v4 এর ত্রুটি প্রতিক্রিয়া বিন্যাসটি v3 এর থেকে ভিন্ন, তাই v4 ত্রুটির প্রতিক্রিয়াগুলি পরিচালনা করতে আপনার কোড আপডেট করুন৷

নিম্নলিখিত উদাহরণগুলি v3 তে একটি ত্রুটি প্রতিক্রিয়া এবং v4 এর সমতুল্য ত্রুটি প্রতিক্রিয়ার তুলনা করে:

v3

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "insufficientPermissions",
    "message": "User does not have sufficient permissions for this profile.",

   }
  ],
  "code": 403,
  "message": "User does not have sufficient permissions for this profile."
 }
}

v4

{
 "error": {
  "code": 403,
  "message": "User does not have sufficient permissions for this profile.",
  "status": "PERMISSION_DENIED",
  "details": [
   {
    "@type": "type.googleapis.com/google.rpc.DebugInfo",
    "detail": "[ORIGINAL ERROR] generic::permission_denied: User does not have sufficient permissions for this profile. [google.rpc.error_details_ext] { message: \"User does not have sufficient permissions for this profile.\" }"
   }
  ]
 }
}
,

এই নির্দেশিকা কোর রিপোর্টিং API v3-কে Analytics রিপোর্টিং API v4-এ স্থানান্তরিত করার নির্দেশিকা প্রদান করে।

ভূমিকা

Analytics রিপোর্টিং API v4-এ প্রবর্তিত নতুন বৈশিষ্ট্যগুলির সুবিধা নিতে, API ব্যবহার করতে আপনার কোড স্থানান্তর করুন৷ এই নির্দেশিকাটি আপনার স্থানান্তরকে সহজ করার জন্য কোর রিপোর্টিং API v3 এবং Analytics রিপোর্টিং API v4-এর সমতুল্য অনুরোধগুলি দেখায়৷

পাইথন মাইগ্রেশন

আপনি যদি পাইথন ডেভেলপার হন, Google Analytics কোর রিপোর্টিং API v3 অনুরোধগুলিকে Analytics রিপোর্টিং API v4 অনুরোধে রূপান্তর করতে GitHub-এ GAV4 সহায়ক লাইব্রেরি ব্যবহার করুন

শেষবিন্দু

কোর রিপোর্টিং এপিআই v3 এবং অ্যানালিটিক্স রিপোর্টিং এপিআই v4 এর বিভিন্ন এন্ডপয়েন্ট এবং HTTP পদ্ধতি রয়েছে:

v3 এন্ডপয়েন্ট

GET https://www.googleapis.com/analytics/v3/data/ga

v4 এন্ডপয়েন্ট

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet

নিম্নলিখিত উদাহরণগুলি v3-তে একটি অনুরোধ এবং v4-এর সমতুল্য অনুরোধের তুলনা করে:

v3

v3 রেফারেন্স ডকুমেন্টেশন

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
    &start-date=2015-11-01&end-date=2015-11-06 \
    &metrics=ga:users&dimensions=ga:pagePath

v4

v4 রেফারেন্স ডকুমেন্টেশন

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    "viewId":"XXXX",
    "dateRanges":[
    {
      "startDate":"2015-11-01",
      "endDate":"2015-11-06"
    }],
    "metrics":[
    {
      "expression":"ga:users"
    }],
    "dimensions": [
    {
      "name":"ga:pagePath"
    }]
  }]
}

ক্লায়েন্ট লাইব্রেরি এবং আবিষ্কার পরিষেবা

আপনি যদি পাইথন, জাভাস্ক্রিপ্ট বা অন্যান্য ক্লায়েন্ট লাইব্রেরি ব্যবহার করেন যা Google আবিষ্কার পরিষেবার উপর নির্ভর করে, তাহলে আপনাকে রিপোর্টিং API v4-এর জন্য আবিষ্কার নথির অবস্থান প্রদান করতে হবে।

পাইথন

from apiclient import discovery

...

# Build the Analytics Reporting API v4 authorized service object.
analyticsReporting = discovery.build(
  'analyticsreporting',
  'v4',
  http=http,
  discoveryServiceUrl='https://analyticsreporting.googleapis.com/$discovery/rest')

জাভাস্ক্রিপ্ট

gapi.client.load(
  'https://analyticsreporting.googleapis.com/$discovery/rest',
  'v4'
).then(...)

জাভা এবং পিএইচপি ক্লায়েন্ট লাইব্রেরিগুলি পূর্ব-নির্মিত, তবে আপনি সেগুলি তৈরি করতে আবিষ্কার পরিষেবা এবং Google API জেনারেটর ব্যবহার করতে পারেন।

অনুরোধ

API v4 রেফারেন্স অনুরোধের বডির গঠন বিস্তারিতভাবে বর্ণনা করে। নিম্নলিখিত বিভাগগুলি v3 অনুরোধের পরামিতিগুলিকে v4 অনুরোধের পরামিতিতে স্থানান্তরিত করে।

আইডি দেখুন

v3-তে, একটি ids প্যারামিটার, যা একটি "টেবিল আইডি" গ্রহণ করে, এটি ga:XXXX ফর্ম্যাটে থাকে, যেখানে XXXX হল ভিউ (প্রোফাইল) আইডি। v4-এ, অনুরোধের বডিতে viewId ক্ষেত্রে একটি ভিউ (প্রোফাইল) আইডি নির্দিষ্ট করা আছে।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে ids প্যারামিটার এবং একটি v4 অনুরোধে viewId ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    "viewId":"XXXX",
    ...
  }]
}

তারিখ পরিসীমা

Analytics রিপোর্টিং API v4 আপনাকে একটি অনুরোধে একাধিক তারিখের সীমা নির্দিষ্ট করতে দেয়। dateRanges ক্ষেত্রটি DateRange অবজেক্টের একটি তালিকা নেয়। v3 তে, আপনি একটি অনুরোধে একটি তারিখ পরিসীমা নির্দিষ্ট করতে start-date এবং end-date প্যারামিটার ব্যবহার করেন।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে start-date এবং end-date পরামিতি এবং একটি v4 অনুরোধে dateRanges ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
    &start-date=2015-11-01&end-date=2015-11-06 \
    ...

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    "viewId":"XXXX",
    "dateRanges":[
    {
      "startDate":"2015-11-01",
      "endDate":"2015-11-06"
    }],
    ....
  }]
}

মেট্রিক্স

v3 metrics প্যারামিটার v4 metrics ক্ষেত্রের সাথে মিলে যায় যা মেট্রিক অবজেক্টের একটি তালিকা নেয়।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধের metrics প্যারামিটার এবং একটি v4 অনুরোধের metrics ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
    &start-date=2015-11-01&end-date=2015-11-06 \
    &metrics=ga:users,ga:sessions \
    ...

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    "viewId":"XXXX",
    "dateRanges":[
    {
      "startDate":"2015-11-01",
      "endDate":"2015-11-06"
    }],
    "metrics":[
    {
      "expression":"ga:users"
    },{
      "expression":"ga:sessions"
    }],
    ...
  }]
}

মাত্রা

v3 dimensions প্যারামিটার v4 dimensions ক্ষেত্রের সাথে মিলে যায় যা মাত্রা বস্তুর একটি তালিকা নেয়।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে dimensions পরামিতি এবং একটি v4 অনুরোধে dimensions ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
  &dimensions=ga:country,ga:browser&... \

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    ...
    "dimensions": [
    {
      "name":"ga:country"
    },{
      "name":"ga:browser"
    }],
    ...
  }]
}

শ্রেণীবিভাজন

v3 sort প্যারামিটারটি v4 orderBys ক্ষেত্রের সমতুল্য যা OrderBy অবজেক্টের একটি তালিকা নেয়।

v4-এ, একটি মাত্রা বা মেট্রিক মান অনুসারে ফলাফলগুলি সাজাতে:

  • fieldName ক্ষেত্রের মাধ্যমে এর নাম বা উপনাম সরবরাহ করুন।
  • sortOrder ক্ষেত্রের মাধ্যমে সাজানোর ক্রম ( ASCENDING বা DESCENDING ) উল্লেখ করুন।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে sort পরামিতি এবং একটি v4 অনুরোধে orderBy ক্ষেত্রের তুলনা করে; তারা উভয়ই ব্যবহারকারীদের ক্রমানুসারে এবং উৎসগুলিকে বর্ণানুক্রমিকভাবে সাজায়:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
  &sort=-ga:users,ga:source

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    ...
    "orderBys": [
    {
      "fieldName": "ga:users",
      "sortOrder": "DESCENDING"
    },{
      "fieldName": "ga:source"
    }],
  }]
}

স্যাম্পলিং লেভেল

v3 samplingLevel প্যারামিটার v4 samplingLevel ক্ষেত্রের সাথে মিলে যায়। v3 তে, গৃহীত samplingLevel মানগুলি হল FASTER , HIGHER_PRECISION , এবং DEFAULT ; এবং v4-এ, গৃহীত samplingLevel মানগুলি হল SMALL , LARGE , এবং DEFAULT ৷ মনে রাখবেন যে v3-তে FASTER পরিবর্তিত হয়েছে v4-এ SMALL , HIGHER_PRECISION LARGE এ।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে samplingLevel প্যারামিটার এবং একটি v4 অনুরোধে samplingLevel ক্ষেত্রের তুলনা করে:

v3

https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX ...\
samplingLevel=HIGHER_PRECISION

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    ...
    "samplingLevel": "LARGE"
  }]
}

সেগমেন্ট

v3 segment প্যারামিটার v4 segments ক্ষেত্রের সাথে মিলে যায় যা সেগমেন্ট অবজেক্টের একটি তালিকা নেয়।

সেগমেন্ট আইডি

v4-এ, সেগমেন্ট আইডি দ্বারা একটি সেগমেন্টের অনুরোধ করতে, একটি সেগমেন্ট অবজেক্ট তৈরি করুন এবং সেগমেন্ট আইডি ক্ষেত্রের মাধ্যমে তার আইডি সরবরাহ করুন।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে segment প্যারামিটার এবং একটি v4 অনুরোধে segments ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
&segment=gaid::-11

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [{
    ...
    "viewId": "XXXX",
    "segments": [{
      "segmentId": "gaid::-11"
    }]
  }]
}

ডাইনামিক সেগমেন্ট

v4-এ, আরও জটিল সেগমেন্টের সংজ্ঞা প্রকাশ করতে, segments ক্ষেত্রটি ব্যবহার করুন যাতে একটি DynamicSegment অবজেক্ট রয়েছে।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধের segment প্যারামিটার এবং একটি v4 অনুরোধে একটি DynamicSegment অবজেক্ট ধারণকারী segments ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
&segment=sessions::condition::ga:medium==referral

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [{
    ...
    "segments": [{
      "dynamicSegment": {
        "name": "segment_name",
        "sessionSegment": {
          "segmentFilters": [{
            "simpleSegment": {
              "orFiltersForSegment": [{
                "segmentFilterClauses": [{
                  "dimensionFilter": {
                    "dimensionName": "ga:medium",
                    "operator": "EXACT",
                    "expressions": [ "referral" ]
                  }
                }]
              }]
            }
          }]
        }
      }
    }]
  }]
}

আপনি একটি বিভাগে শর্ত এবং ক্রম একত্রিত করতে পারেন:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
&segment=users::condition::ga:revenue>10;sequence::ga:deviceCategory==desktop->>ga:deviceCategory==mobile

v4

  "reportRequests": [{
      "dateRanges": [
            { "endDate": "2014-11-30", "startDate": "2014-11-01" }
      ],
      "metrics": [
          {"expression": "ga:pageviews"},
          {"expression": "ga:sessions"}
      ],
      "viewId": "XXXX",
      "dimensions":[{"name":"ga:medium"}, {"name":"ga:segment"}],
      "segments": [{
        "dynamicSegment": {
        "name": "segment_name",
        "userSegment": {
          "segmentFilters": [{
            "simpleSegment": {
              "orFiltersForSegment": [{
                "segmentFilterClauses": [{
                  "metricFilter": {
                    "metricName": "ga:sessions",
                    "operator": "GREATER_THAN",
                    "comparisonValue": "10"
                  }
                }]
              }]
            }
          },
          {
            "sequenceSegment": {
              "segmentSequenceSteps": [{
                "orFiltersForSegment": [{
                  "segmentFilterClauses": [{
                    "dimensionFilter": {
                      "dimensionName": "ga:deviceCategory",
                      "operator": "EXACT",
                      "expressions": ["desktop"]
                    }
                  }]
                }],
                "matchType": "PRECEDES"
              },{
                "orFiltersForSegment": [{
                  "segmentFilterClauses": [{
                    "dimensionFilter": {
                      "dimensionName": "ga:deviceCategory",
                      "operator": "EXACT",
                      "expressions": ["mobile"]
                    }
                  }]
                }]
              }]
            }
          }]
        }
      }
    }]
  }]

v3 v4-এ সেগমেন্ট সিনট্যাক্স

v4 API-এর segmentId ক্ষেত্র v3 API-এ সেগমেন্ট সিনট্যাক্স সমর্থন করে।

নিম্নলিখিত উদাহরণগুলি দেখায় যে কীভাবে একটি v3 অনুরোধের segment প্যারামিটার v4-এর সমতুল্য অনুরোধের segmentId ক্ষেত্রের দ্বারা সমর্থিত হয়:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
&segment=sessions::condition::ga:medium==referral

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [{
    ...
    "viewId": "XXXX",
    "segments": [{
      "segmentId": "sessions::condition::ga:medium==referral"
    }]
  }]
}

ফিল্টার

v4 মাত্রা ফিল্টার করতে dimensionFilterClauses এবং মেট্রিক্স ফিল্টার করতে metricFilterClauses ব্যবহার করে। একটি dimensionFilterClausesDimensionFilter অবজেক্টের একটি তালিকা রয়েছে; এবং একটি metricFilterClausesMetricFilter অবজেক্টের একটি তালিকা রয়েছে।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে filters প্যারামিটার এবং একটি v4 অনুরোধে dimensionFilterClauses ফিল্ডের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
  &start-date=2015-06-01&end-date=2015-07-31&metrics=ga:users& \
  dimensions=ga:browser&filters=ga:browser==Firefox

v4

  "reportRequests": [{
      "dateRanges": [
            { "endDate": "2014-11-30", "startDate": "2014-11-01" }
      ],
      "metrics": [
          {"expression": "ga:pageviews"},
          {"expression": "ga:sessions"}
      ],
      "viewId": "XXXX",
      "dimensions":[{"name":"ga:browser"}, {"name":"ga:country"}],
      "dimensionFilterClauses": [{
           "filters": [{
                "dimension_name": "ga:browser",
                "operator": "EXACT",
                "expressions": ["Firefox"]
            }]
      }]
  }]

v4 এ v3 ফিল্টার সিনট্যাক্স

যদিও v4-এ filtersExpression ক্ষেত্র v3-এ filters সিনট্যাক্স সমর্থন করে, মাত্রা এবং মেট্রিক্স ফিল্টার করতে dimensionFilterClauses এবং metricFilterClauses ব্যবহার করুন।

নিম্নলিখিত উদাহরণগুলি দেখায় যে কীভাবে একটি v3 অনুরোধের filters প্যারামিটারটি v4 এর সমতুল্য অনুরোধের filtersExpression ক্ষেত্রের দ্বারা সমর্থিত হয়:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga%XXXX \
&filters=ga:browser==Firefox

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [{
    ...
    "filtersExpression": "ga:browser==Firefox"
  }]
}

খালি সারি

v3 include-empty-rows প্যারামিটার v4-এর includeEmptyRows ক্ষেত্রের সাথে মিলে যায়। v3 প্যারামিটার সত্যে ডিফল্ট হয়, যখন v4 ক্ষেত্রটি মিথ্যাতে ডিফল্ট হয়। আপনার যদি v3 তে মান সেট না থাকে তবে আপনাকে v4-এ মানটিকে সত্যে সেট করতে হবে।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধের include-empty-rows প্যারামিটারটিকে একটি v4 অনুরোধের includeEmptyRows ক্ষেত্রের সাথে তুলনা করে:

v3

https://www.googleapis.com/analytics/v3/data/ga? ...\
    &include-empty-rows=true

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    ...
    "includeEmptyRows": "true",
  }]
}

পৃষ্ঠা সংখ্যা

v4 pageToken এবং pageSize ফিল্ড ব্যবহার করে অনেক সংখ্যক ফলাফলের মাধ্যমে পেজিনেট করতে। pageToken একটি প্রতিক্রিয়া বস্তুর nextPageToken সম্পত্তি থেকে প্রাপ্ত হয়।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধের start-index এবং max-results পরামিতিগুলিকে একটি v4 অনুরোধে pageToken এবং pageSize ক্ষেত্রের সাথে তুলনা করে:

v3

https://www.googleapis.com/analytics/v3/data/ga? ...\
    &start-index=10001&max-results=10000

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    ...
    # Taken from `nextPageToken` of a previous response.
    "pageToken": "10000",
    "pageSize": "10000",
  }]
}

স্ট্যান্ডার্ড প্যারামিটার

userIp এবং callback প্যারামিটার ব্যতীত অ্যানালিটিক্স রিপোর্টিং API v4 v3 API-এর বেশিরভাগ স্ট্যান্ডার্ড কোয়েরি প্যারামিটার সমর্থন করে।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধের quotaUser প্যারামিটারটিকে একটি v4 অনুরোধের সাথে তুলনা করে:

v3 এন্ডপয়েন্ট

GET https://www.googleapis.com/analytics/v3/data/ga?quotaUser=1X3F2F2

v4 এন্ডপয়েন্ট

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet?quotaUser=1X3F2F2

প্রতিক্রিয়া

যেহেতু v4 আপনাকে একক HTTP অনুরোধে একাধিক ReportRequest অবজেক্ট জমা দেওয়ার অনুমতি দেয়, আপনি প্রতিক্রিয়াতে রিপোর্ট অবজেক্টের একটি অ্যারে পাবেন। প্রতিটি জমা দেওয়া ReportRequest এর জন্য, আপনি প্রতিক্রিয়াতে একটি সংশ্লিষ্ট রিপোর্ট পাবেন।

রিপোর্ট

একটি v4 রিপোর্টে তিনটি শীর্ষ-স্তরের ক্ষেত্র রয়েছে: columnHeader , data , এবং nextPageToken

যেহেতু v4 প্রতিক্রিয়া বডিতে সমস্ত ক্যোয়ারী প্যারামিটারের প্রতিক্রিয়া অন্তর্ভুক্ত করা হয় না যেমন v3 প্রতিক্রিয়া করে, একটি নির্দিষ্ট ক্যোয়ারী প্যারামিটারের প্রতিক্রিয়া পেতে, ক্লায়েন্ট অ্যাপ্লিকেশনটিকে সেই প্যারামিটারটি ReportRequest- এ যোগ করতে হবে।

আমরা ইতিমধ্যেই পেজিনেশন বিভাগে nextPageToken সম্বোধন করেছি, তাই প্রথমে columnHeader অবজেক্টটি দেখি।

কলাম হেডার

কলাম হেডারে নামযুক্ত মাত্রার একটি তালিকা এবং একটি MetricHeader অবজেক্ট রয়েছে, যার মধ্যে MetricHeaderEntry অবজেক্টের একটি তালিকা রয়েছে। প্রতিটি MetricHeaderEntry অবজেক্ট মেট্রিক name এবং এর type (মুদ্রা, শতাংশ, ইত্যাদি) নির্দিষ্ট করে, যা আপনাকে আউটপুট ফর্ম্যাট করতে সহায়তা করে।

নিম্নলিখিত উদাহরণগুলি একটি v3 প্রতিক্রিয়াতে columnHeaders ক্ষেত্রটিকে একটি v4 প্রতিক্রিয়াতে columnHeader ক্ষেত্রের সাথে তুলনা করে:

v3

"columnHeaders": [
    {
        "name":"ga:source",
        "columnType":"DIMENSION",
        "dataType":"STRING"
    },{
        "name":"ga:city",
        "columnType":"DIMENSION",
        "dataType":"STRING"
    },{
        "name":"ga:sessions",
        "columnType":"METRIC",
        "dataType":"INTEGER"
    },{
        "name":"ga:pageviews",
        "columnType":
        "METRIC",
        "dataType":"INTEGER"
    }
]

v4

"columnHeader": {
    "dimensions": [
        "ga:source",
        "ga:city"
    ],
    "metricHeader": {
        "metricHeaderEntries": [
            {
                "name": "ga:pageviews",
                "type": "INTEGER"
            },
            {
                "name": "ga:sessions",
                "type": "INTEGER"
            }
        ]
    }
},

রিপোর্ট সারি

কোর রিপোর্টিং API v3 সারি অ্যারেতে রিপোর্ট ডেটা প্রদান করে, যাতে অনুরোধ করা মাত্রা এবং মেট্রিক্স থাকে।

অ্যানালিটিক্স রিপোর্টিং API v4 একটি ReportRow অবজেক্টে রিপোর্ট ডেটা প্রদান করে, যেটিতে মাত্রার একটি অ্যারে এবং DateRangeValues ​​অবজেক্টের একটি অ্যারে রয়েছে, যার প্রতিটিতে এক বা দুটি তারিখের ব্যাপ্তি রয়েছে, যেমনটি নিম্নলিখিত চিত্রটি চিত্রিত করে:

Report Rows

সারি

v3

"rows": [
    [
        "google",
        "Philadelphia",
        "60",
        "5"
    ],
    [
        "google",
        "Johnstown",
        "21",
        "1"
    ],
    [
        "google",
        "Progress",
        "7",
        "1"
    ]
],

v4

"rows": [
    {
        "dimensions": [
            "google",
            "Philadelphia"
        ],
        "metrics": [
            {
                "values": [
                    "60",
                    "5"
                ]
            }
        ]
    },
    {
        "dimensions": [
            "google",
            "Johnstown"
        ],
        "metrics": [
            {
                "values": [
                    "21",
                    "1"
                ]
            }
        ]
    },
    {
        "dimensions": [
            "google",
            "Progress"
        ],
        "metrics": [
            {
                "values": [
                    "7",
                    "1"
                ]
            }
        ]
    }
],

নমুনা তথ্য

ফলাফল নমুনা করা হলে Core Reporting API v3 প্রদান করে বুলিয়ান ফিল্ডে রয়েছে containsSampledData , যা true সেট করা আছে।

বিশ্লেষণ রিপোর্টিং API v4 একটি বুলিয়ান প্রদান করে না যদি ডেটা নমুনা করা হয়; বরং এপিআই samplesReadCounts এবং samplingSpaceSizes ক্ষেত্রগুলি প্রদান করে। ফলাফল নমুনা না হলে এই ক্ষেত্রগুলি সংজ্ঞায়িত করা হবে না। নিম্নলিখিত পাইথন উদাহরণটি দেখায় যে কীভাবে একটি প্রতিবেদনে নমুনাযুক্ত ডেটা থাকে তা গণনা করতে হয়:

def ContainsSampledData(report):
  """Determines if the report contains sampled data.

   Args:
       report (Report): An Analytics Reporting API v4 response report.

  Returns:
      bool: True if the report contains sampled data.
  """
  report_data = report.get('data', {})
  sample_sizes = report_data.get('samplesReadCounts', [])
  sample_spaces = report_data.get('samplingSpaceSizes', [])
  if sample_sizes and sample_spaces:
    return True
  else:
    return False

নীচে একটি উদাহরণ প্রতিক্রিয়া যা দুটি তারিখ ব্যাপ্তি সহ একটি অনুরোধ থেকে নমুনাযুক্ত ডেটা রয়েছে৷ ফলাফলগুলি প্রায় 15 মিলিয়ন সেশনের একটি নমুনা স্থান আকারের প্রায় 500k নমুনা থেকে গণনা করা হয়েছিল:

{
  "reports":
  [
    {
      "columnHeader": {
        ...
      },
      "data": {
        ...
        "samplesReadCounts": [ "499630","499630"],
        "samplingSpaceSizes": ["15328013","15328013"],
      }
    }
  ]
}

v4 প্রতিক্রিয়া পার্সিং

নিম্নলিখিত নমুনা কোড বিশ্লেষণ রিপোর্টিং API v4 প্রতিক্রিয়া পার্স এবং প্রিন্ট করে:

পাইথন

def printResponse(self, response):
  """Parses and prints the Analytics Reporting API v4 response"""

  for report in response.get('reports', []):
    columnHeader = report.get('columnHeader', {})
    dimensionHeaders = columnHeader.get('dimensions', [])
    metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])
    rows = report.get('data', {}).get('rows', [])

    for row in rows:
      dimensions = row.get('dimensions', [])
      dateRangeValues = row.get('metrics', [])

      for header, dimension in zip(dimensionHeaders, dimensions):
        print header + ': ' + dimension

      for i, values in enumerate(dateRangeValues):
        print 'Date range (' + str(i) + ')'
        for metricHeader, value in zip(metricHeaders, values.get('values')):
          print metricHeader.get('name') + ': ' + value

জাভা

public static void printResponse(GetReportsResponse response) {

  for (Report report: response.getReports()) {
    ColumnHeader header = report.getColumnHeader();
    List<String> dimensionHeaders = header.getDimensions();
    List<MetricHeaderEntry> metricHeaders = header.getMetricHeader().getMetricHeaderEntries();
    List<ReportRow> rows = report.getData().getRows();

    for (ReportRow row: rows) {
      List<String> dimensions = row.getDimensions();
      List<DateRangeValues> metrics = row.getMetrics();
      for (int i = 0; i < dimensionHeaders.size() && i < dimensions.size(); i++) {
        System.out.println(dimensionHeaders.get(i) + ": " + dimensions.get(i));
      }

      for (int j = 0; j < metrics.size(); j++) {
        System.out.print("Date Range (" + j + "): ");
        DateRangeValues values = metrics.get(j);
        for (int k = 0; k < values.size() && k < metricHeaders.size(); k++) {
          System.out.println(metricHeaders.get(k).getName() + ": " + values.get(k));
        }
      }
    }
  }
}

ত্রুটি পরিচালনা

যেহেতু v4 এর ত্রুটি প্রতিক্রিয়া বিন্যাসটি v3 এর থেকে ভিন্ন, তাই v4 ত্রুটির প্রতিক্রিয়াগুলি পরিচালনা করতে আপনার কোড আপডেট করুন৷

নিম্নলিখিত উদাহরণগুলি v3 তে একটি ত্রুটি প্রতিক্রিয়া এবং v4 এর সমতুল্য ত্রুটি প্রতিক্রিয়ার তুলনা করে:

v3

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "insufficientPermissions",
    "message": "User does not have sufficient permissions for this profile.",

   }
  ],
  "code": 403,
  "message": "User does not have sufficient permissions for this profile."
 }
}

v4

{
 "error": {
  "code": 403,
  "message": "User does not have sufficient permissions for this profile.",
  "status": "PERMISSION_DENIED",
  "details": [
   {
    "@type": "type.googleapis.com/google.rpc.DebugInfo",
    "detail": "[ORIGINAL ERROR] generic::permission_denied: User does not have sufficient permissions for this profile. [google.rpc.error_details_ext] { message: \"User does not have sufficient permissions for this profile.\" }"
   }
  ]
 }
}
,

এই নির্দেশিকা কোর রিপোর্টিং API v3-কে Analytics রিপোর্টিং API v4-এ স্থানান্তরিত করার নির্দেশিকা প্রদান করে।

ভূমিকা

Analytics রিপোর্টিং API v4-এ প্রবর্তিত নতুন বৈশিষ্ট্যগুলির সুবিধা নিতে, API ব্যবহার করতে আপনার কোড স্থানান্তর করুন৷ এই নির্দেশিকাটি আপনার স্থানান্তরকে সহজ করার জন্য কোর রিপোর্টিং API v3 এবং Analytics রিপোর্টিং API v4-এর সমতুল্য অনুরোধগুলি দেখায়৷

পাইথন মাইগ্রেশন

আপনি যদি পাইথন ডেভেলপার হন, Google Analytics কোর রিপোর্টিং API v3 অনুরোধগুলিকে Analytics রিপোর্টিং API v4 অনুরোধে রূপান্তর করতে GitHub-এ GAV4 সহায়ক লাইব্রেরি ব্যবহার করুন

শেষবিন্দু

কোর রিপোর্টিং এপিআই v3 এবং অ্যানালিটিক্স রিপোর্টিং এপিআই v4 এর বিভিন্ন এন্ডপয়েন্ট এবং HTTP পদ্ধতি রয়েছে:

v3 এন্ডপয়েন্ট

GET https://www.googleapis.com/analytics/v3/data/ga

v4 এন্ডপয়েন্ট

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet

নিম্নলিখিত উদাহরণগুলি v3-তে একটি অনুরোধ এবং v4-এর সমতুল্য অনুরোধের তুলনা করে:

v3

v3 রেফারেন্স ডকুমেন্টেশন

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
    &start-date=2015-11-01&end-date=2015-11-06 \
    &metrics=ga:users&dimensions=ga:pagePath

v4

v4 রেফারেন্স ডকুমেন্টেশন

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    "viewId":"XXXX",
    "dateRanges":[
    {
      "startDate":"2015-11-01",
      "endDate":"2015-11-06"
    }],
    "metrics":[
    {
      "expression":"ga:users"
    }],
    "dimensions": [
    {
      "name":"ga:pagePath"
    }]
  }]
}

ক্লায়েন্ট লাইব্রেরি এবং আবিষ্কার পরিষেবা

আপনি যদি পাইথন, জাভাস্ক্রিপ্ট বা অন্যান্য ক্লায়েন্ট লাইব্রেরি ব্যবহার করেন যা Google আবিষ্কার পরিষেবার উপর নির্ভর করে, তাহলে আপনাকে রিপোর্টিং API v4-এর জন্য আবিষ্কার নথির অবস্থান প্রদান করতে হবে।

পাইথন

from apiclient import discovery

...

# Build the Analytics Reporting API v4 authorized service object.
analyticsReporting = discovery.build(
  'analyticsreporting',
  'v4',
  http=http,
  discoveryServiceUrl='https://analyticsreporting.googleapis.com/$discovery/rest')

জাভাস্ক্রিপ্ট

gapi.client.load(
  'https://analyticsreporting.googleapis.com/$discovery/rest',
  'v4'
).then(...)

জাভা এবং পিএইচপি ক্লায়েন্ট লাইব্রেরিগুলি পূর্ব-নির্মিত, তবে আপনি সেগুলি তৈরি করতে আবিষ্কার পরিষেবা এবং Google API জেনারেটর ব্যবহার করতে পারেন।

অনুরোধ

API v4 রেফারেন্স অনুরোধের বডির গঠন বিস্তারিতভাবে বর্ণনা করে। নিম্নলিখিত বিভাগগুলি v3 অনুরোধের পরামিতিগুলিকে v4 অনুরোধের পরামিতিতে স্থানান্তরিত করে।

আইডি দেখুন

v3-তে, একটি ids প্যারামিটার, যা একটি "টেবিল আইডি" গ্রহণ করে, এটি ga:XXXX ফর্ম্যাটে থাকে, যেখানে XXXX হল ভিউ (প্রোফাইল) আইডি। v4-এ, অনুরোধের বডিতে viewId ক্ষেত্রে একটি ভিউ (প্রোফাইল) আইডি নির্দিষ্ট করা আছে।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে ids প্যারামিটার এবং একটি v4 অনুরোধে viewId ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    "viewId":"XXXX",
    ...
  }]
}

তারিখ পরিসীমা

Analytics রিপোর্টিং API v4 আপনাকে একটি অনুরোধে একাধিক তারিখের সীমা নির্দিষ্ট করতে দেয়। dateRanges ক্ষেত্রটি DateRange অবজেক্টের একটি তালিকা নেয়। v3 তে, আপনি একটি অনুরোধে একটি তারিখ পরিসীমা নির্দিষ্ট করতে start-date এবং end-date প্যারামিটার ব্যবহার করেন।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে start-date এবং end-date পরামিতি এবং একটি v4 অনুরোধে dateRanges ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
    &start-date=2015-11-01&end-date=2015-11-06 \
    ...

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    "viewId":"XXXX",
    "dateRanges":[
    {
      "startDate":"2015-11-01",
      "endDate":"2015-11-06"
    }],
    ....
  }]
}

মেট্রিক্স

v3 metrics প্যারামিটার v4 metrics ক্ষেত্রের সাথে মিলে যায় যা মেট্রিক অবজেক্টের একটি তালিকা নেয়।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধের metrics প্যারামিটার এবং একটি v4 অনুরোধের metrics ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
    &start-date=2015-11-01&end-date=2015-11-06 \
    &metrics=ga:users,ga:sessions \
    ...

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    "viewId":"XXXX",
    "dateRanges":[
    {
      "startDate":"2015-11-01",
      "endDate":"2015-11-06"
    }],
    "metrics":[
    {
      "expression":"ga:users"
    },{
      "expression":"ga:sessions"
    }],
    ...
  }]
}

মাত্রা

v3 dimensions প্যারামিটার v4 dimensions ক্ষেত্রের সাথে মিলে যায় যা মাত্রা বস্তুর একটি তালিকা নেয়।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে dimensions পরামিতি এবং একটি v4 অনুরোধে dimensions ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
  &dimensions=ga:country,ga:browser&... \

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    ...
    "dimensions": [
    {
      "name":"ga:country"
    },{
      "name":"ga:browser"
    }],
    ...
  }]
}

শ্রেণীবিভাজন

v3 sort প্যারামিটারটি v4 orderBys ক্ষেত্রের সমতুল্য যা OrderBy অবজেক্টের একটি তালিকা নেয়।

v4-এ, একটি মাত্রা বা মেট্রিক মান অনুসারে ফলাফলগুলি সাজাতে:

  • fieldName ক্ষেত্রের মাধ্যমে এর নাম বা উপনাম সরবরাহ করুন।
  • sortOrder ক্ষেত্রের মাধ্যমে সাজানোর ক্রম ( ASCENDING বা DESCENDING ) উল্লেখ করুন।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে sort পরামিতি এবং একটি v4 অনুরোধে orderBy ক্ষেত্রের তুলনা করে; তারা উভয়ই ব্যবহারকারীদের ক্রমানুসারে এবং উৎসগুলিকে বর্ণানুক্রমিকভাবে সাজায়:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
  &sort=-ga:users,ga:source

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    ...
    "orderBys": [
    {
      "fieldName": "ga:users",
      "sortOrder": "DESCENDING"
    },{
      "fieldName": "ga:source"
    }],
  }]
}

স্যাম্পলিং লেভেল

v3 samplingLevel প্যারামিটার v4 samplingLevel ক্ষেত্রের সাথে মিলে যায়। v3 তে, গৃহীত samplingLevel মানগুলি হল FASTER , HIGHER_PRECISION , এবং DEFAULT ; এবং v4-এ, গৃহীত samplingLevel মানগুলি হল SMALL , LARGE , এবং DEFAULT ৷ মনে রাখবেন যে v3-তে FASTER পরিবর্তিত হয়েছে v4-এ SMALL , HIGHER_PRECISION LARGE এ।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে samplingLevel প্যারামিটার এবং একটি v4 অনুরোধে samplingLevel ক্ষেত্রের তুলনা করে:

v3

https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX ...\
samplingLevel=HIGHER_PRECISION

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    ...
    "samplingLevel": "LARGE"
  }]
}

সেগমেন্ট

v3 segment প্যারামিটার v4 segments ক্ষেত্রের সাথে মিলে যায় যা সেগমেন্ট অবজেক্টের একটি তালিকা নেয়।

সেগমেন্ট আইডি

v4-এ, সেগমেন্ট আইডি দ্বারা একটি সেগমেন্টের অনুরোধ করতে, একটি সেগমেন্ট অবজেক্ট তৈরি করুন এবং সেগমেন্ট আইডি ক্ষেত্রের মাধ্যমে তার আইডি সরবরাহ করুন।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে segment প্যারামিটার এবং একটি v4 অনুরোধে segments ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
&segment=gaid::-11

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [{
    ...
    "viewId": "XXXX",
    "segments": [{
      "segmentId": "gaid::-11"
    }]
  }]
}

ডাইনামিক সেগমেন্ট

v4-এ, আরও জটিল সেগমেন্টের সংজ্ঞা প্রকাশ করতে, segments ক্ষেত্রটি ব্যবহার করুন যাতে একটি DynamicSegment অবজেক্ট রয়েছে।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধের segment প্যারামিটার এবং একটি v4 অনুরোধে একটি DynamicSegment অবজেক্ট ধারণকারী segments ক্ষেত্রের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
&segment=sessions::condition::ga:medium==referral

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [{
    ...
    "segments": [{
      "dynamicSegment": {
        "name": "segment_name",
        "sessionSegment": {
          "segmentFilters": [{
            "simpleSegment": {
              "orFiltersForSegment": [{
                "segmentFilterClauses": [{
                  "dimensionFilter": {
                    "dimensionName": "ga:medium",
                    "operator": "EXACT",
                    "expressions": [ "referral" ]
                  }
                }]
              }]
            }
          }]
        }
      }
    }]
  }]
}

আপনি একটি বিভাগে শর্ত এবং ক্রম একত্রিত করতে পারেন:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
&segment=users::condition::ga:revenue>10;sequence::ga:deviceCategory==desktop->>ga:deviceCategory==mobile

v4

  "reportRequests": [{
      "dateRanges": [
            { "endDate": "2014-11-30", "startDate": "2014-11-01" }
      ],
      "metrics": [
          {"expression": "ga:pageviews"},
          {"expression": "ga:sessions"}
      ],
      "viewId": "XXXX",
      "dimensions":[{"name":"ga:medium"}, {"name":"ga:segment"}],
      "segments": [{
        "dynamicSegment": {
        "name": "segment_name",
        "userSegment": {
          "segmentFilters": [{
            "simpleSegment": {
              "orFiltersForSegment": [{
                "segmentFilterClauses": [{
                  "metricFilter": {
                    "metricName": "ga:sessions",
                    "operator": "GREATER_THAN",
                    "comparisonValue": "10"
                  }
                }]
              }]
            }
          },
          {
            "sequenceSegment": {
              "segmentSequenceSteps": [{
                "orFiltersForSegment": [{
                  "segmentFilterClauses": [{
                    "dimensionFilter": {
                      "dimensionName": "ga:deviceCategory",
                      "operator": "EXACT",
                      "expressions": ["desktop"]
                    }
                  }]
                }],
                "matchType": "PRECEDES"
              },{
                "orFiltersForSegment": [{
                  "segmentFilterClauses": [{
                    "dimensionFilter": {
                      "dimensionName": "ga:deviceCategory",
                      "operator": "EXACT",
                      "expressions": ["mobile"]
                    }
                  }]
                }]
              }]
            }
          }]
        }
      }
    }]
  }]

v3 v4-এ সেগমেন্ট সিনট্যাক্স

v4 API-এর segmentId ক্ষেত্র v3 API-এ সেগমেন্ট সিনট্যাক্স সমর্থন করে।

নিম্নলিখিত উদাহরণগুলি দেখায় যে কীভাবে একটি v3 অনুরোধের segment প্যারামিটার v4-এর সমতুল্য অনুরোধের segmentId ক্ষেত্রের দ্বারা সমর্থিত হয়:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
&segment=sessions::condition::ga:medium==referral

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [{
    ...
    "viewId": "XXXX",
    "segments": [{
      "segmentId": "sessions::condition::ga:medium==referral"
    }]
  }]
}

ফিল্টার

v4 মাত্রা ফিল্টার করতে dimensionFilterClauses এবং মেট্রিক্স ফিল্টার করতে metricFilterClauses ব্যবহার করে। একটি dimensionFilterClausesDimensionFilter অবজেক্টের একটি তালিকা রয়েছে; এবং একটি metricFilterClausesMetricFilter অবজেক্টের একটি তালিকা রয়েছে।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধে filters প্যারামিটার এবং একটি v4 অনুরোধে dimensionFilterClauses ফিল্ডের তুলনা করে:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXX \
  &start-date=2015-06-01&end-date=2015-07-31&metrics=ga:users& \
  dimensions=ga:browser&filters=ga:browser==Firefox

v4

  "reportRequests": [{
      "dateRanges": [
            { "endDate": "2014-11-30", "startDate": "2014-11-01" }
      ],
      "metrics": [
          {"expression": "ga:pageviews"},
          {"expression": "ga:sessions"}
      ],
      "viewId": "XXXX",
      "dimensions":[{"name":"ga:browser"}, {"name":"ga:country"}],
      "dimensionFilterClauses": [{
           "filters": [{
                "dimension_name": "ga:browser",
                "operator": "EXACT",
                "expressions": ["Firefox"]
            }]
      }]
  }]

v4 এ v3 ফিল্টার সিনট্যাক্স

যদিও v4-এ filtersExpression ক্ষেত্র v3-এ filters সিনট্যাক্স সমর্থন করে, মাত্রা এবং মেট্রিক্স ফিল্টার করতে dimensionFilterClauses এবং metricFilterClauses ব্যবহার করুন।

নিম্নলিখিত উদাহরণগুলি দেখায় যে কীভাবে একটি v3 অনুরোধের filters প্যারামিটারটি v4 এর সমতুল্য অনুরোধের filtersExpression ক্ষেত্রের দ্বারা সমর্থিত হয়:

v3

GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga%XXXX \
&filters=ga:browser==Firefox

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [{
    ...
    "filtersExpression": "ga:browser==Firefox"
  }]
}

খালি সারি

v3 include-empty-rows প্যারামিটার v4-এর includeEmptyRows ক্ষেত্রের সাথে মিলে যায়। v3 প্যারামিটার সত্যে ডিফল্ট হয়, যখন v4 ক্ষেত্রটি মিথ্যাতে ডিফল্ট হয়। আপনার যদি v3 তে মান সেট না থাকে তবে আপনাকে v4-এ মানটিকে সত্যে সেট করতে হবে।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধের include-empty-rows প্যারামিটারটিকে একটি v4 অনুরোধের includeEmptyRows ক্ষেত্রের সাথে তুলনা করে:

v3

https://www.googleapis.com/analytics/v3/data/ga? ...\
    &include-empty-rows=true

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    ...
    "includeEmptyRows": "true",
  }]
}

পৃষ্ঠা সংখ্যা

v4 pageToken এবং pageSize ফিল্ড ব্যবহার করে অনেক সংখ্যক ফলাফলের মাধ্যমে পেজিনেট করতে। pageToken একটি প্রতিক্রিয়া বস্তুর nextPageToken সম্পত্তি থেকে প্রাপ্ত হয়।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধের start-index এবং max-results পরামিতিগুলিকে একটি v4 অনুরোধে pageToken এবং pageSize ক্ষেত্রের সাথে তুলনা করে:

v3

https://www.googleapis.com/analytics/v3/data/ga? ...\
    &start-index=10001&max-results=10000

v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":[
  {
    ...
    # Taken from `nextPageToken` of a previous response.
    "pageToken": "10000",
    "pageSize": "10000",
  }]
}

স্ট্যান্ডার্ড প্যারামিটার

userIp এবং callback প্যারামিটার ব্যতীত অ্যানালিটিক্স রিপোর্টিং API v4 v3 API-এর বেশিরভাগ স্ট্যান্ডার্ড কোয়েরি প্যারামিটার সমর্থন করে।

নিম্নলিখিত উদাহরণগুলি একটি v3 অনুরোধের quotaUser প্যারামিটারটিকে একটি v4 অনুরোধের সাথে তুলনা করে:

v3 এন্ডপয়েন্ট

GET https://www.googleapis.com/analytics/v3/data/ga?quotaUser=1X3F2F2

v4 এন্ডপয়েন্ট

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet?quotaUser=1X3F2F2

প্রতিক্রিয়া

যেহেতু v4 আপনাকে একক HTTP অনুরোধে একাধিক ReportRequest অবজেক্ট জমা দেওয়ার অনুমতি দেয়, আপনি প্রতিক্রিয়াতে রিপোর্ট অবজেক্টের একটি অ্যারে পাবেন। প্রতিটি জমা দেওয়া ReportRequest এর জন্য, আপনি প্রতিক্রিয়াতে একটি সংশ্লিষ্ট রিপোর্ট পাবেন।

রিপোর্ট

একটি v4 রিপোর্টে তিনটি শীর্ষ-স্তরের ক্ষেত্র রয়েছে: columnHeader , data , এবং nextPageToken

যেহেতু v4 প্রতিক্রিয়া বডিতে সমস্ত ক্যোয়ারী প্যারামিটারের প্রতিক্রিয়া অন্তর্ভুক্ত করা হয় না যেমন v3 প্রতিক্রিয়া করে, একটি নির্দিষ্ট ক্যোয়ারী প্যারামিটারের প্রতিক্রিয়া পেতে, ক্লায়েন্ট অ্যাপ্লিকেশনটিকে সেই প্যারামিটারটি ReportRequest- এ যোগ করতে হবে।

আমরা ইতিমধ্যেই পেজিনেশন বিভাগে nextPageToken সম্বোধন করেছি, তাই প্রথমে columnHeader অবজেক্টটি দেখি।

কলাম হেডার

কলাম হেডারে নামযুক্ত মাত্রার একটি তালিকা এবং একটি MetricHeader অবজেক্ট রয়েছে, যার মধ্যে MetricHeaderEntry অবজেক্টের একটি তালিকা রয়েছে। প্রতিটি MetricHeaderEntry অবজেক্ট মেট্রিক name এবং এর type (মুদ্রা, শতাংশ, ইত্যাদি) নির্দিষ্ট করে, যা আপনাকে আউটপুট ফর্ম্যাট করতে সহায়তা করে।

নিম্নলিখিত উদাহরণগুলি একটি v3 প্রতিক্রিয়াতে columnHeaders ক্ষেত্রটিকে একটি v4 প্রতিক্রিয়াতে columnHeader ক্ষেত্রের সাথে তুলনা করে:

v3

"columnHeaders": [
    {
        "name":"ga:source",
        "columnType":"DIMENSION",
        "dataType":"STRING"
    },{
        "name":"ga:city",
        "columnType":"DIMENSION",
        "dataType":"STRING"
    },{
        "name":"ga:sessions",
        "columnType":"METRIC",
        "dataType":"INTEGER"
    },{
        "name":"ga:pageviews",
        "columnType":
        "METRIC",
        "dataType":"INTEGER"
    }
]

v4

"columnHeader": {
    "dimensions": [
        "ga:source",
        "ga:city"
    ],
    "metricHeader": {
        "metricHeaderEntries": [
            {
                "name": "ga:pageviews",
                "type": "INTEGER"
            },
            {
                "name": "ga:sessions",
                "type": "INTEGER"
            }
        ]
    }
},

রিপোর্ট সারি

কোর রিপোর্টিং API v3 সারি অ্যারেতে রিপোর্ট ডেটা প্রদান করে, যাতে অনুরোধ করা মাত্রা এবং মেট্রিক্স থাকে।

অ্যানালিটিক্স রিপোর্টিং API v4 একটি ReportRow অবজেক্টে রিপোর্ট ডেটা প্রদান করে, যেটিতে মাত্রার একটি অ্যারে এবং DateRangeValues ​​অবজেক্টের একটি অ্যারে রয়েছে, যার প্রতিটিতে এক বা দুটি তারিখের ব্যাপ্তি রয়েছে, যেমনটি নিম্নলিখিত চিত্রটি চিত্রিত করে:

Report Rows

সারি

v3

"rows": [
    [
        "google",
        "Philadelphia",
        "60",
        "5"
    ],
    [
        "google",
        "Johnstown",
        "21",
        "1"
    ],
    [
        "google",
        "Progress",
        "7",
        "1"
    ]
],

v4

"rows": [
    {
        "dimensions": [
            "google",
            "Philadelphia"
        ],
        "metrics": [
            {
                "values": [
                    "60",
                    "5"
                ]
            }
        ]
    },
    {
        "dimensions": [
            "google",
            "Johnstown"
        ],
        "metrics": [
            {
                "values": [
                    "21",
                    "1"
                ]
            }
        ]
    },
    {
        "dimensions": [
            "google",
            "Progress"
        ],
        "metrics": [
            {
                "values": [
                    "7",
                    "1"
                ]
            }
        ]
    }
],

নমুনা তথ্য

ফলাফল নমুনা করা হলে Core Reporting API v3 প্রদান করে বুলিয়ান ফিল্ডে রয়েছে containsSampledData , যা true সেট করা আছে।

বিশ্লেষণ রিপোর্টিং API v4 একটি বুলিয়ান প্রদান করে না যদি ডেটা নমুনা করা হয়; বরং এপিআই samplesReadCounts এবং samplingSpaceSizes ক্ষেত্রগুলি প্রদান করে। ফলাফল নমুনা না হলে এই ক্ষেত্রগুলি সংজ্ঞায়িত করা হবে না। নিম্নলিখিত পাইথন উদাহরণটি দেখায় যে কীভাবে একটি প্রতিবেদনে নমুনাযুক্ত ডেটা থাকে তা গণনা করতে হয়:

def ContainsSampledData(report):
  """Determines if the report contains sampled data.

   Args:
       report (Report): An Analytics Reporting API v4 response report.

  Returns:
      bool: True if the report contains sampled data.
  """
  report_data = report.get('data', {})
  sample_sizes = report_data.get('samplesReadCounts', [])
  sample_spaces = report_data.get('samplingSpaceSizes', [])
  if sample_sizes and sample_spaces:
    return True
  else:
    return False

নীচে একটি উদাহরণ প্রতিক্রিয়া যা দুটি তারিখ ব্যাপ্তি সহ একটি অনুরোধ থেকে নমুনাযুক্ত ডেটা রয়েছে৷ ফলাফলগুলি প্রায় 15 মিলিয়ন সেশনের একটি নমুনা স্থান আকারের প্রায় 500k নমুনা থেকে গণনা করা হয়েছিল:

{
  "reports":
  [
    {
      "columnHeader": {
        ...
      },
      "data": {
        ...
        "samplesReadCounts": [ "499630","499630"],
        "samplingSpaceSizes": ["15328013","15328013"],
      }
    }
  ]
}

v4 প্রতিক্রিয়া পার্সিং

নিম্নলিখিত নমুনা কোড বিশ্লেষণ রিপোর্টিং API v4 প্রতিক্রিয়া পার্স এবং প্রিন্ট করে:

পাইথন

def printResponse(self, response):
  """Parses and prints the Analytics Reporting API v4 response"""

  for report in response.get('reports', []):
    columnHeader = report.get('columnHeader', {})
    dimensionHeaders = columnHeader.get('dimensions', [])
    metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])
    rows = report.get('data', {}).get('rows', [])

    for row in rows:
      dimensions = row.get('dimensions', [])
      dateRangeValues = row.get('metrics', [])

      for header, dimension in zip(dimensionHeaders, dimensions):
        print header + ': ' + dimension

      for i, values in enumerate(dateRangeValues):
        print 'Date range (' + str(i) + ')'
        for metricHeader, value in zip(metricHeaders, values.get('values')):
          print metricHeader.get('name') + ': ' + value

জাভা

public static void printResponse(GetReportsResponse response) {

  for (Report report: response.getReports()) {
    ColumnHeader header = report.getColumnHeader();
    List<String> dimensionHeaders = header.getDimensions();
    List<MetricHeaderEntry> metricHeaders = header.getMetricHeader().getMetricHeaderEntries();
    List<ReportRow> rows = report.getData().getRows();

    for (ReportRow row: rows) {
      List<String> dimensions = row.getDimensions();
      List<DateRangeValues> metrics = row.getMetrics();
      for (int i = 0; i < dimensionHeaders.size() && i < dimensions.size(); i++) {
        System.out.println(dimensionHeaders.get(i) + ": " + dimensions.get(i));
      }

      for (int j = 0; j < metrics.size(); j++) {
        System.out.print("Date Range (" + j + "): ");
        DateRangeValues values = metrics.get(j);
        for (int k = 0; k < values.size() && k < metricHeaders.size(); k++) {
          System.out.println(metricHeaders.get(k).getName() + ": " + values.get(k));
        }
      }
    }
  }
}

ত্রুটি পরিচালনা

যেহেতু v4 এর ত্রুটি প্রতিক্রিয়া বিন্যাসটি v3 এর থেকে ভিন্ন, তাই v4 ত্রুটির প্রতিক্রিয়াগুলি পরিচালনা করতে আপনার কোড আপডেট করুন৷

নিম্নলিখিত উদাহরণগুলি v3 তে একটি ত্রুটি প্রতিক্রিয়া এবং v4 এর সমতুল্য ত্রুটি প্রতিক্রিয়ার তুলনা করে:

v3

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "insufficientPermissions",
    "message": "User does not have sufficient permissions for this profile.",

   }
  ],
  "code": 403,
  "message": "User does not have sufficient permissions for this profile."
 }
}

v4

{
 "error": {
  "code": 403,
  "message": "User does not have sufficient permissions for this profile.",
  "status": "PERMISSION_DENIED",
  "details": [
   {
    "@type": "type.googleapis.com/google.rpc.DebugInfo",
    "detail": "[ORIGINAL ERROR] generic::permission_denied: User does not have sufficient permissions for this profile. [google.rpc.error_details_ext] { message: \"User does not have sufficient permissions for this profile.\" }"
   }
  ]
 }
}