Membuat Laporan

Ini adalah panduan developer untuk Analytics Reporting API v4. Untuk referensi API yang mendetail, lihat Referensi API.

Laporan

Analytics Reporting API v4 menyediakan metode batchGet untuk mengakses resource Laporan. Bagian berikut menjelaskan struktur isi permintaan untuk batchGet dan struktur isi respons dari batchGet.

Isi Permintaan

Untuk menggunakan Analytics Reporting API v4 untuk meminta data, Anda harus membuat objek ReportRequest, yang memiliki persyaratan minimum berikut:

  • ID tampilan yang valid untuk kolom viewId.
  • Setidaknya satu entri yang valid di kolom dateRanges.
  • Setidaknya satu entri yang valid di kolom metrics.

Untuk menemukan ID tampilan, kueri metode ringkasan akun atau gunakan Account Explorer. Jika rentang tanggal tidak ditentukan, rentang tanggal default-nya adalah: {"startDate": "7daysAgo", "endDate": "yesterday"}.

Berikut adalah contoh permintaan dengan kolom minimum yang wajib diisi:

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

Metode batchGet menerima maksimum lima objek ReportRequest. Semua permintaan harus memiliki dateRange, viewId, segments, samplingLevel, dan cohortGroup yang sama.

Isi Respons

Isi respons permintaan API adalah array objek Laporan. Struktur laporan ditentukan dalam objek ColumnHeader yang mendeskripsikan dimensi dan metrik serta jenis datanya dalam laporan. Nilai dimensi dan metrik ditentukan dalam kolom data.

Berikut adalah contoh respons untuk contoh permintaan di atas:

{
    "reports": [
        {
            "columnHeader": {
                "metricHeader": {
                    "metricHeaderEntries": [
                        {
                            "name": "ga:users",
                            "type": "INTEGER"
                        }
                    ]
                }
            },
            "data": {
                "isDataGolden": true,
                "maximums": [
                    {
                        "values": [
                            "98"
                        ]
                    }
                ],
                "minimums": [
                    {
                        "values": [
                            "98"
                        ]
                    }
                ],
                "rowCount": 1,
                "rows": [
                    {
                        "metrics": [
                            {
                                "values": [
                                    "98"
                                ]
                            }
                        ]
                    }
                ],
                "totals": [
                    {
                        "values": [
                            "98"
                        ]
                    }
                ]
            }
        }
    ]
}

Metrik

Metrik adalah pengukuran kuantitatif; setiap permintaan memerlukan setidaknya satu objek Metrik.

Pada contoh berikut, metrik Sessions diberikan ke metode batchGet untuk mendapatkan jumlah total sesi dalam rentang tanggal yang ditentukan:

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

Anda dapat menggunakan penjelajah dimensi dan metrik atau Metadata API untuk mendapatkan daftar dimensi dan metrik yang tersedia.

Pemfilteran

Saat mengirimkan permintaan batchGet, Anda dapat memintanya untuk hanya menampilkan metrik yang memenuhi kriteria tertentu. Untuk memfilter metrik, di isi permintaan, tentukan satu atau beberapa MetricFilterClauses dan di setiap MetricFilterClause, tentukan satu atau beberapa MetricFilters. Di setiap MetricFilter, tentukan nilai untuk hal berikut:

  • metricName
  • not
  • operator
  • comparisonValue

Izinkan {metricName} mewakili metrik, {operator} operator, dan {comparisonValue} comparisonValue. Kemudian filternya berfungsi sebagai berikut:

if {metricName} {operator} {comparisonValue}
   return the metric

Jika Anda menentukan true untuk not, maka filter akan berfungsi seperti berikut:

if {metricName} {operator} {comparisonValue}
   do not return the metric

Pada contoh berikut, batchGet hanya menampilkan kunjungan halaman yang nilainya lebih besar dari 2:

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":
  [
    {
      "viewId": "XXXX",
      "metrics": [
        {"expression": "ga:pageviews"},
        {"expression": "ga:sessions"}
      ],
      "metricFilterClauses": [{
          "filters": [{
              "metricName": "ga:pageviews",
              "operator": "GREATER_THAN",
              "comparisonValue": "2"
          }]
      }]
  }]
}

Ekspresi

Ekspresi metrik adalah ekspresi matematika yang Anda tentukan pada metrik yang ada; operasi ini beroperasi seperti metrik yang dihitung dinamis. Anda dapat menentukan alias untuk mewakili ekspresi metrik, misalnya:

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":
  [
    {
      "viewId": "XXXX",
      "metrics":
      [
        {
          "expression": "ga:goal1completions/ga:users",
          "alias": "completions per user"
        }
      ]
    }
  ]
}

Pengurutan

Untuk mengurutkan hasil menurut nilai metrik:

  • Berikan nama atau aliasnya melalui kolom fieldName.
  • Tentukan tata urutan (ASCENDING atau DESCENDING) melalui kolom sortOrder.

Pada contoh berikut, batchGet menampilkan metrik yang diurutkan terlebih dahulu berdasarkan sesi, lalu menurut kunjungan halaman dalam urutan menurun:

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":
  [
    {
      "viewId": "XXXX",
      "metrics":
      [
        {"expression": "ga:pageviews"},
        {"expression": "ga:sessions"}
      ],
      "orderBys":
      [
        {"fieldName": "ga:sessions", "sortOrder": "DESCENDING"},
        {"fieldName": "ga:pageviews", "sortOrder": "DESCENDING"}
      ]
    }
  ]
}

Dimensi

Dimensi menggambarkan karakteristik pengguna, serta sesi dan tindakan mereka. Dimensi Kota, misalnya, menjelaskan karakteristik sesi dan menunjukkan kota ("Paris" atau "New York") tempat setiap sesi berasal. Dalam permintaan batchGet, Anda dapat menentukan nol atau beberapa objek dimensi, misalnya:

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

Pemfilteran

Saat mengirimkan permintaan batchGet, Anda dapat memintanya untuk hanya menampilkan dimensi yang memenuhi kriteria tertentu. Untuk memfilter dimensi, di isi permintaan, tentukan satu atau beberapa DimensionFilterClauses dan di setiap DimensionsFilterClause, tentukan satu atau beberapa DimensionFilters. Di setiap DimensionsFilters, tentukan nilai untuk hal berikut:

  • dimensionName
  • not
  • operator
  • expressions
  • caseSensitive

Izinkan {dimensionName} mewakili dimensi, {operator} operator, dan {expressions} expressions. Kemudian filternya berfungsi sebagai berikut:

if {dimensionName} {operator} {expressions}
    return the dimension

Jika Anda menentukan true untuk not, maka filter akan berfungsi seperti berikut:

if {dimensionName} {operator} {expressions}
    do not return the dimension

Dalam contoh berikut, batchGet menampilkan kunjungan halaman dan sesi di browser Chrome:

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":
  [
    {
      "viewId": "XXXX",
      "dateRanges": [
        {"endDate": "2014-11-30", "startDate": "2014-11-01"}
      ],
      "metrics": [
        {"expression": "ga:pageviews"},
        {"expression": "ga:sessions"}
      ],
      "dimensions": [{"name": "ga:browser"}, {"name": "ga:country"}],
      "dimensionFilterClauses": [
        {
          "filters": [
            {
              "dimensionName": "ga:browser",
              "operator": "EXACT",
              "expressions": ["Chrome"]
            }
          ]
        }
      ]
    }
  ]
}

Pengurutan

Untuk mengurutkan hasil menurut nilai dimensi:

  • Berikan namanya melalui kolom fieldName.
  • Tentukan tata urutan (ASCENDING atau DESCENDING) melalui kolom sortOrder.

Misalnya, batchGet berikut akan menampilkan dimensi yang diurutkan berdasarkan negara, kemudian berdasarkan browser:

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":
  [
    {
      "viewId": "XXXX",
      "metrics": [{"expression": "ga:sessions"}],
      "dimensions": [{"name": "ga:country"},{"name": "ga:browser"}],
      "orderBys": [
        {"fieldName": "ga:country"},
        {"fieldName": "ga:browser"}
      ]
    }
  ]
}

Bucket histogram

Untuk dimensi dengan nilai bilangan bulat, lebih mudah untuk memahami karakteristiknya dengan mengelompokkan nilainya ke dalam rentang. Gunakan kolom histogramBuckets untuk menentukan rentang bucket yang dihasilkan dan menentukan HISTOGRAM_BUCKET sebagai jenis pesanan, misalnya:

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":
  [
    {
      "viewId": "XXXX",
      "metrics": [{"expression": "ga:sessions"}],
      "dimensions": [
        {
          "name": "ga:sessionCount",
          "histogramBuckets": ["1","10","100","200","400"]
        }
      ],
      "orderBys": [
        {
          "fieldName": "ga:sessionCount",
          "orderType": "HISTOGRAM_BUCKET"
        }
      ]
    }
  ]
}

Beberapa Rentang Tanggal

Google Analytics Reporting API v4 memungkinkan Anda mendapatkan data dalam beberapa rentang tanggal dalam satu permintaan. Baik permintaan Anda menentukan satu atau dua rentang tanggal, data akan ditampilkan dalam objek dateRangeValue, misalnya:

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":
  [
    {
      "viewId": "XXXX",
      "dateRanges": [
        {"startDate": "2014-11-01", "endDate": "2014-11-30"},
        {"startDate": "2014-10-01", "endDate": "2014-10-30"}
      ],
      "metrics": [
        {"expression": "ga:pageviews"},
        {"expression": "ga:sessions"}
      ],
      "dimensions": [{"name": "ga:pageTitle"}]
    }
  ]
}

Pengurutan delta

Saat meminta nilai metrik dalam dua rentang tanggal, Anda dapat mengurutkan hasil menurut perbedaan antara nilai metrik dalam rentang tanggal, misalnya:

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":
  [
    {
      "viewId": "XXXX",
      "dateRanges": [
        {"startDate": "2014-11-01", "endDate": "2014-11-30"},
        {"startDate": "2014-10-01", "endDate": "2014-10-30"}
      ],
      "metrics": [
        {"expression": "ga:pageviews"},
        {"expression": "ga:sessions"}
      ],
      "dimensions": [{"name": "ga:pageTitle"}],
      "orderBys": [
        {
          "fieldName": "ga:sessions",
          "orderType": "DELTA"
        }
      ]
    }
  ]
}

Perilaku dimensi tanggal

Jika Anda meminta dimensi terkait tanggal atau waktu, objek DateRangeValue hanya akan menyimpan nilai untuk tanggal yang berada dalam rentang terkait; semua nilai lainnya yang tidak berada dalam rentang tanggal yang ditentukan adalah 0.

Misalnya, pertimbangkan permintaan untuk dimensi ga:date dan metrik ga:sessions dalam dua rentang tanggal: Januari dan Februari. Dalam respons untuk data yang diminta pada bulan Januari, nilai pada bulan Februari adalah 0; dan sebagai respons untuk data yang diminta pada bulan Februari, nilai pada bulan Januari adalah 0.

Laporan Januari

{
    "dimensions": [
        "20140101" # `ga:date` dimension value for January 1, 2014.
    ],
    "metrics": [
        {
            "values": [ # January DateRangeValue.
                "8"
            ]
        },
        {
            "values": [ # February DateRangeValue.
                "0"
            ]
        }
    ]
},
...

Laporan Februari

{
    "dimensions": [
        "20140201"  # `ga:date` dimension value for February 1, 2014.
    ],
    "metrics": [
        {
            "values": [ # January DateRangeValue.
                "0"
            ]
        },
        {
            "values": [ # February DateRangeValue.
                "7"
            ]
        }
    ]
},
...

Segmen

Untuk meminta subkumpulan data Analytics Anda, gunakan segmen. Misalnya, Anda dapat menentukan pengguna dari negara atau kota tertentu di satu segmen, dan pengguna yang mengunjungi bagian tertentu situs Anda di segmen lainnya. Filter hanya menampilkan baris yang memenuhi kondisi, sedangkan segmen menampilkan subkumpulan pengguna, sesi, atau peristiwa yang memenuhi kondisi yang berisi segmen.

Saat membuat permintaan dengan segmen, pastikan bahwa:

  • Setiap ReportRequest dalam metode batchGet harus berisi definisi segmen yang identik.
  • Anda menambahkan ga:segment ke daftar dimensi.

Contoh:

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "XXXX",
      "dimensions": [{"name": "ga:segment"}, {"name": "ga:browser"}],
      "metrics": [{"expression": "ga:sessions"}],
      "segments": [
        {
          "dynamicSegment":
          {
            "name": "Sessions with Safari browser",
            "userSegment":
            {
              "segmentFilters": [
                {
                  "simpleSegment":
                  {
                    "orFiltersForSegment": [
                      {
                        "segmentFilterClauses": [
                          {
                            "dimensionFilter":
                            {
                              "dimensionName": "ga:browser",
                              "operator": "EXACT",
                              "expressions": ["Safari"]
                            }
                        }]
                    }]
                  }
              }]
            }
          }
      }]
  }]
}

Lihat Contoh untuk contoh permintaan lainnya dengan segmen.

ID segmen

Gunakan kolom segmentId untuk meminta segmen. Anda tidak dapat menggunakan segmentId dan dynamicSegment untuk meminta segmen.

Contoh:

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":
  [
    {
      "viewId": "XXXX",
      "dimensions": [{"name": "ga:medium"}, {"name": "ga:segment"}],
      "metrics": [{"expression": "ga:users"}],
      "segments":  [{"segmentId": "gaid::-3"}]
    }
  ]
}

Pengambilan sampel

Pengambilan sampel dapat memengaruhi hasil data Anda dan merupakan alasan umum mengapa nilai yang ditampilkan API tidak cocok dengan antarmuka web. Gunakan kolom samplingLevel untuk menetapkan ukuran sampel yang diinginkan.

  • Setel nilai ke SMALL untuk respons cepat dengan ukuran pengambilan sampel yang lebih kecil.
  • setel nilai ke LARGE untuk mendapatkan respons yang lebih akurat, tetapi lebih lambat.
  • setel nilai ke DEFAULT untuk respons yang menyeimbangkan kecepatan dan akurasi.

Contoh:

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests":
  [
    {
      "viewId": "XXXX",
      "dimensions": [{"name": "ga:medium"}],
      "metrics": [{"expression": "ga:sessions"}],
      "samplingLevel":  "LARGE"
    }
  ]
}

jika laporan berisi data sampel Analytics Analytics API v4 menampilkan kolom samplesReadCounts dan samplingSpaceSizes. Jika hasilnya tidak diambil sampelnya, kolom ini tidak akan ditentukan.

Berikut adalah contoh respons yang berisi sampel data dari permintaan dengan dua rentang tanggal. Hasilnya dihitung dari hampir 500 ribu sampel ukuran ruang pengambilan sampel sekitar 15 juta sesi:

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

Penomoran halaman

Analytics Reporting API v4 menggunakan kolom pageToken dan pageSize untuk penomoran halaman melalui hasil respons yang mencakup beberapa halaman. Anda mendapatkan pageToken dari parameter nextPageToken sebagai respons terhadap permintaan reports.batchGet:

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

Langkah berikutnya

Setelah membahas dasar-dasar pembuatan laporan, lihat fitur lanjutan API v4'