এই নির্দেশিকা কোর রিপোর্টিং 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
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
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
ব্যবহার করে। একটি dimensionFilterClauses
এ DimensionFilter অবজেক্টের একটি তালিকা রয়েছে; এবং একটি metricFilterClauses
এ MetricFilter অবজেক্টের একটি তালিকা রয়েছে।
নিম্নলিখিত উদাহরণগুলি একটি 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 অবজেক্টের একটি অ্যারে রয়েছে, যার প্রতিটিতে এক বা দুটি তারিখের ব্যাপ্তি রয়েছে, যেমনটি নিম্নলিখিত চিত্রটি চিত্রিত করে:
সারি
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
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
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
ব্যবহার করে। একটি dimensionFilterClauses
এ DimensionFilter অবজেক্টের একটি তালিকা রয়েছে; এবং একটি metricFilterClauses
এ MetricFilter অবজেক্টের একটি তালিকা রয়েছে।
নিম্নলিখিত উদাহরণগুলি একটি 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 অবজেক্টের একটি অ্যারে রয়েছে, যার প্রতিটিতে এক বা দুটি তারিখের ব্যাপ্তি রয়েছে, যেমনটি নিম্নলিখিত চিত্রটি চিত্রিত করে:
সারি
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
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
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
ব্যবহার করে। একটি dimensionFilterClauses
এ DimensionFilter অবজেক্টের একটি তালিকা রয়েছে; এবং একটি metricFilterClauses
এ MetricFilter অবজেক্টের একটি তালিকা রয়েছে।
নিম্নলিখিত উদাহরণগুলি একটি 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 অবজেক্টের একটি অ্যারে রয়েছে, যার প্রতিটিতে এক বা দুটি তারিখের ব্যাপ্তি রয়েছে, যেমনটি নিম্নলিখিত চিত্রটি চিত্রিত করে:
সারি
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.\" }"
}
]
}
}