이 문서에서는 Google Analytics Data API v1의 몇 가지 고급 기능을 설명합니다. API에 관한 자세한 참조는 API 참조를 확인하세요.
맞춤 정의 표시 및 보고서 만들기
Data API는 등록된 맞춤 측정기준 및 맞춤 측정항목에 관한 보고서를 만들 수 있습니다. Metadata API 메서드를 사용하여 속성의 등록된 맞춤 정의의 API 이름을 나열할 수 있습니다. 이러한 API 이름은 예를 들어 runReport 메서드에 대한 보고서 요청에 사용할 수 있습니다.
다음 섹션에서는 각 유형의 맞춤 정의에 대한 예시를 보여줍니다. 이 예시에서 GA_PROPERTY_ID
를 숙박 시설 ID로 바꿉니다.
이벤트 범위 맞춤 측정기준
1단계: 속성 ID를 사용하여 메타데이터 API 메서드를 쿼리합니다.
GET https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID/metadata
2단계: 응답에서 보고서를 만들고자 하는 이벤트 범위 맞춤 측정기준을 찾습니다. 측정기준이 없는 경우 측정기준을 등록해야 합니다.
"dimensions": [
...
{
"apiName": "customEvent:achievement_id",
"uiName": "Achievement ID",
"description": "An event scoped custom dimension for your Analytics property."
},
...
],
3단계: 보고서 요청에 맞춤 측정기준을 포함합니다. 다음은 runReport 메서드에 대한 샘플 요청입니다.
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dateRanges": [{ "startDate": "2020-09-01", "endDate": "2020-09-15" }],
"dimensions": [{ "name": "customEvent:achievement_id" }],
"metrics": [{ "name": "eventCount" }]
}
사용자 범위 맞춤 측정기준
1단계: 속성 ID를 사용하여 메타데이터 API 메서드를 쿼리합니다.
GET https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID/metadata
2단계: 응답에서 보고서를 만들고자 하는 사용자 범위 맞춤 측정기준을 찾습니다. 측정기준이 없는 경우 측정기준을 등록해야 합니다.
"dimensions": [
...
{
"apiName": "customUser:last_level",
"uiName": "Last level",
"description": "A user property for your Analytics property."
},
...
],
3단계: 보고서 요청에 맞춤 측정기준을 포함합니다. 다음은 runReport 메서드에 대한 샘플 요청입니다.
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"entity": { "propertyId": "GA_PROPERTY_ID" },
"dateRanges": [{ "startDate": "7daysAgo", "endDate": "yesterday" }],
"dimensions": [{ "name": "customUser:last_level" }],
"metrics": [{ "name": "activeUsers" }]
}
이벤트 범위 맞춤 측정항목
1단계: 속성 ID를 사용하여 메타데이터 API 메서드를 쿼리합니다.
GET https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID/metadata
2단계: 응답에서 보고서를 만들고자 하는 이벤트 범위 맞춤 측정항목을 찾습니다. 측정항목이 없으면 측정항목을 등록해야 합니다.
"metrics": [
...
{
"apiName": "customEvent:credits_spent",
"uiName": "Credits Spent",
"description": "An event scoped custom metric for your Analytics property.",
"type": "TYPE_STANDARD"
},
...
],
3단계: 보고서 요청에 맞춤 측정항목을 포함합니다. 다음은 runReport 메서드에 대한 샘플 요청입니다.
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dateRanges": [{ "startDate": "30daysAgo", "endDate": "yesterday" }],
"dimensions": [{ "name": "eventName" }],
"metrics": [{ "name": "customEvent:credits_spent" }]
}
키 이벤트 1개의 키 이벤트 비율 측정항목
1단계: 속성 ID를 사용하여 Metadata API 메서드를 쿼리합니다.
GET https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID/metadata
2단계: 응답에서 보고서를 작성할 주요 이벤트 하나의 주요 이벤트 비율 측정항목을 찾습니다. 주요 이벤트가 없는 경우 주요 이벤트를 설정해야 합니다.
"metrics": [
...
{
"apiName": "sessionKeyEventRate:add_to_cart",
"uiName": "Session key event rate for add_to_cart",
"description": "The percentage of sessions in which a specific key event was triggered",
},
...
],
3단계: 보고서 요청에 주요 이벤트 비율 측정항목을 포함합니다. 다음은 runReport 메서드에 대한 샘플 요청입니다.
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dateRanges": [{ "startDate": "30daysAgo", "endDate": "yesterday" }],
"dimensions": [{ "name": "eventName" }],
"metrics": [{ "name": "sessionKeyEventRate:add_to_cart" }]
}
이벤트 범위 맞춤 측정항목 평균
1단계: 속성 ID를 사용하여 메타데이터 API 메서드를 쿼리합니다.
GET https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID/metadata
2단계: 응답에서 보고서를 만들고자 하는 이벤트 범위 맞춤 측정항목 평균을 찾습니다. 측정항목이 없으면 측정항목을 등록해야 합니다.
"metrics": [
...
{
"apiName": "averageCustomEvent:credits_spent",
"uiName": "Average Credits Spent",
"description": "The average of an event scoped custom metric for your Analytics property.",
"type": "TYPE_STANDARD"
},
...
],
3단계: 보고서 요청에 맞춤 측정항목 평균을 포함합니다. 다음은 runReport 메서드에 대한 샘플 요청입니다.
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dateRanges": [{ "startDate": "2020-11-01", "endDate": "2020-11-10" }],
"dimensions": [{ "name": "eventName" }],
"metrics": [{ "name": "averageCustomEvent:credits_spent" }]
}
동질 집단 보고서 예시
동질 집단 보고서는 동질 집단의 사용자 유지율 시계열을 만듭니다. 각 API 필드에 관한 자세한 문서는 CohortSpec의 REST 참조를 참고하세요.
동질 집단 보고서 만들기
다음은 샘플 사용자 집단 보고서입니다.
- 동질 집단은
firstSessionDate
이2020-12-01
인 사용자입니다. 이는cohorts
객체에 의해 구성됩니다. 보고서 응답의 측정기준 및 측정항목은 동질 집단의 사용자만을 기반으로 합니다. - 사용자 집단 보고서에는 세 개의 열이 표시됩니다. 이는 측정기준 및 측정항목 객체에 의해 구성됩니다.
- 측정기준
cohort
은 동질 집단의 이름입니다. cohortNthDay
측정기준은2020-12-01
이후 경과 일수입니다.- 측정항목
cohortActiveUsers
는 아직 활성 상태인 사용자 수입니다.
- 측정기준
cohortsRange
객체는 보고서에 이 사용자 집단의2020-12-01
부터2020-12-06
까지의 이벤트 데이터가 포함되어야 한다고 지정합니다.DAILY
의 세부사항이 사용되는 경우 일관성을 위해 측정기준cohortNthDay
을 사용하는 것이 좋습니다.
동질 집단의 보고서 요청은 다음과 같습니다.
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dimensions": [{ "name": "cohort" }, { "name": "cohortNthDay" }],
"metrics": [{ "name": "cohortActiveUsers" }],
"cohortSpec": {
"cohorts": [
{
"dimension": "firstSessionDate",
"dateRange": { "startDate": "2020-12-01", "endDate": "2020-12-01" }
}
],
"cohortsRange": {
"endOffset": 5,
"granularity": "DAILY"
}
},
}
이 요청의 보고서 응답 예시는 다음과 같습니다.
{
"dimensionHeaders": [
{ "name": "cohort" }, { "name": "cohortNthDay" }
],
"metricHeaders": [
{ "name": "cohortActiveUsers", "type": "TYPE_INTEGER" }
],
"rows": [
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0000" }],
"metricValues": [{ "value": "293" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0001" }],
"metricValues": [{ "value": "143" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0002" }],
"metricValues": [{ "value": "123" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0003" }],
"metricValues": [{ "value": "92" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0005" }],
"metricValues": [{ "value": "86" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0004" }],
"metricValues": [{ "value": "83" }]
}
],
"metadata": {},
"rowCount": 6
}
이 보고서 응답에서 이 동질 집단 보고서의 차트가 나옵니다. 이 보고서에서 알 수 있는 정보는 이 동질 집단의 활성 사용자 수가 가장 많이 감소한 시점이 1일과 2일 사이라는 점입니다.
여러 사용자 집단 및 사용자 유지율 분율
사용자 획득 및 유지는 웹사이트 또는 앱을 성장시키는 방법입니다. 집단 보고서는 사용자 유지에 중점을 둡니다. 이 예시에서 보고서는 이 숙박 시설의 4일 사용자 유지율이 2주 동안 10% 개선되었음을 보여줍니다.
이 보고서를 만들려면 세 개의 사용자 집단을 지정합니다. 첫 번째 사용자 집단의 firstSessionDate
는 2020-11-02
이고, 두 번째 사용자 집단의 firstSessionDate
는 2020-11-09
이며, 세 번째 사용자 집단의 firstSessionDate
는 2020-11-16
입니다. 이 3일 동안 속성의 사용자 수가 다르므로 직접 cohortActiveUsers
측정항목을 사용하는 대신 사용자 집단의 사용자 유지율 분수 측정항목인 cohortActiveUsers/cohortTotalUsers
를 비교합니다.
이러한 사용자 집단에 대한 보고서 요청은 다음과 같습니다.
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dimensions": [{ "name": "cohort" },{ "name": "cohortNthDay" }],
"metrics": [
{
"name": "cohortRetentionFraction",
"expression": "cohortActiveUsers/cohortTotalUsers"
}
],
"cohortSpec": {
"cohorts": [
{
"dimension": "firstSessionDate",
"dateRange": { "startDate": "2020-11-02", "endDate": "2020-11-02" }
},
{
"dimension": "firstSessionDate",
"dateRange": { "startDate": "2020-11-09", "endDate": "2020-11-09" }
},
{
"dimension": "firstSessionDate",
"dateRange": { "startDate": "2020-11-16", "endDate": "2020-11-16" }
}
],
"cohortsRange": {
"endOffset": 4,
"granularity": "DAILY"
}
},
}
이 요청의 보고서 응답 예는 다음과 같습니다.
{
"dimensionHeaders": [{ "name": "cohort" },{ "name": "cohortNthDay" }],
"metricHeaders": [{
"name": "cohortRetentionFraction",
"type": "TYPE_FLOAT"
}
],
"rows": [
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0000" }],
"metricValues": [{ "value": "1" }]
},
{
"dimensionValues": [{ "value": "cohort_1" },{ "value": "0000" }],
"metricValues": [{ "value": "1" }]
},
{
"dimensionValues": [{ "value": "cohort_2" },{ "value": "0000" }],
"metricValues": [{ "value": "1" }]
},
{
"dimensionValues": [{ "value": "cohort_2" },{ "value": "0001" }],
"metricValues": [{ "value": "0.308" }]
},
{
"dimensionValues": [{ "value": "cohort_1" },{ "value": "0001" }],
"metricValues": [{ "value": "0.272" }]
},
{
"dimensionValues": [{ "value": "cohort_2" },{ "value": "0002" }],
"metricValues": [{ "value": "0.257" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0001" }],
"metricValues": [{ "value": "0.248" }]
},
{
"dimensionValues": [{ "value": "cohort_2" },{ "value": "0003" }],
"metricValues": [{ "value": "0.235" }]
},
{
"dimensionValues": [{ "value": "cohort_2" },{ "value": "0004" }],
"metricValues": [{ "value": "0.211" }]
},
{
"dimensionValues": [{ "value": "cohort_1" },{ "value": "0002" }],
"metricValues": [{ "value": "0.198" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0002" }],
"metricValues": [{ "value": "0.172" }]
},
{
"dimensionValues": [{ "value": "cohort_1" },{ "value": "0003" }],
"metricValues": [{ "value": "0.167" }]
},
{
"dimensionValues": [{ "value": "cohort_1" },{ "value": "0004" }],
"metricValues": [{ "value": "0.155" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0003" }],
"metricValues": [{ "value": "0.141" }]
},
{
"dimensionValues": [{ "value": "cohort_0" },{ "value": "0004" }],
"metricValues": [{ "value": "0.118" }]
}
],
"metadata": {},
"rowCount": 15
}
이 보고서 응답에서 이 동질 집단 보고서의 차트가 나옵니다. 이 보고서에서 얻은 통계는 4일 차 사용자 유지율이 2주 동안 10% 증가했다는 것입니다. 2020-11-16
의 firstSessionDate
가 있는 후반 사용자 집단의 유지율이 2020-11-02
의 firstSessionDate
가 있는 이전 사용자 집단의 유지율을 초과합니다.
주간 사용자 집단 및 다른 API 기능과 함께 사용자 집단 사용
사용자 행동의 일일 변동을 제거하려면 주간 동질 집단을 사용하세요. 주간 동질 집단 보고서에서는 동일한 주에 firstSessionDate
가 있는 모든 사용자가 동질 집단을 형성합니다. 주는 일요일부터 시작하여 토요일에 끝납니다. 또한 이 보고서에서는 동질 집단을 슬라이스하여 러시아에서 활동한 사용자와 멕시코에서 활동한 사용자를 비교합니다. 이 슬라이싱은 country
측정기준과 dimensionFilter
를 사용하여 두 국가만 고려합니다.
이러한 사용자 집단에 대한 보고서 요청은 다음과 같습니다.
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"dimensions": [
{ "name": "cohort" },
{ "name": "cohortNthWeek" },
{ "name": "country" }
],
"metrics": [{ "name": "cohortActiveUsers" }],
"dimensionFilter": {
"filter": {
"fieldName": "country",
"inListFilter": {
"values": [ "Russia", "Mexico" ]
}
}
},
"cohortSpec": {
"cohorts": [
{
"dimension": "firstSessionDate",
"dateRange": {
"startDate": "2020-10-04",
"endDate": "2020-10-10"
}
}
],
"cohortsRange": {
"endOffset": 5,
"granularity": "WEEKLY"
}
},
}
이 요청의 보고서 응답 예시는 다음과 같습니다.
{
"dimensionHeaders": [
{ "name": "cohort" },
{ "name": "cohortNthWeek" },
{ "name": "country" }
],
"metricHeaders": [
{ "name": "cohortActiveUsers", "type": "TYPE_INTEGER" }
],
"rows": [
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0000" },{ "value": "Russia" }
],
"metricValues": [{ "value": "105" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0000" },{ "value": "Mexico" }
],
"metricValues": [{ "value": "98" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0001" },{ "value": "Mexico" }
],
"metricValues": [{ "value": "35" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0002" },{ "value": "Mexico" }
],
"metricValues": [{ "value": "24" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0001" },{ "value": "Russia" }
],
"metricValues": [{ "value": "23" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0004" },{ "value": "Mexico" }
],
"metricValues": [{ "value": "17" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0003" },{ "value": "Mexico" }
],
"metricValues": [{ "value": "15" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0005" },{ "value": "Mexico" }
],
"metricValues": [{ "value": "15" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0002" },{ "value": "Russia" }
],
"metricValues": [{ "value": "3" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0003" },{ "value": "Russia" }
],
"metricValues": [{ "value": "1" }]
},
{
"dimensionValues": [
{ "value": "cohort_0" },{ "value": "0004" },{ "value": "Russia" }
],
"metricValues": [{ "value": "1" }]
}
],
"metadata": {},
"rowCount": 11
}
이 보고서 응답에서 이 동질 집단 보고서의 차트가 이어집니다. 이 보고서에 따르면 이 숙박 시설은 멕시코에서 활동하는 사용자보다 러시아에서 활동하는 사용자를 더 잘 유지하고 있습니다.
비교
비교를 통해 데이터의 하위 집합을 나란히 평가할 수 있습니다. 보고서 정의에서 comparisons
필드를 지정하여 비교를 정의할 수 있습니다. Data API의 비교 기능은 Google 애널리틱스 프런트엔드의 비교와 유사합니다.
각 API 필드에 관한 자세한 문서는 비교를 위한 REST 참조를 참고하세요.
비교 만들기
비교하려는 각 데이터 세트별로 비교 항목을 각각 만들 수 있습니다. 예를 들어 앱 데이터와 웹 데이터를 비교하려면 Android 및 iOS 데이터로 비교 항목을 하나 만들고 웹 데이터로 비교 항목을 하나 더 만들면 됩니다.
다음은 두 가지 비교를 정의하고 국가별로 활성 사용자를 반환하는 샘플 보고서입니다.
'앱 트래픽'이라는 첫 번째 비교에서는 inListFilter
를 사용하여 platform
측정기준을 'iOS' 및 'Android' 값과 일치시킵니다. '웹 트래픽'이라는 두 번째 비교는 stringFilter
를 사용하여 platform
측정기준을 '웹'과 일치시킵니다.
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
"comparisons": [
{
"name": "App traffic",
"dimensionFilter": {
"filter": {
"fieldName": "platform",
"inListFilter": {
"values": [
"iOS",
"Android"
]
}
}
}
},
{
"name": "Web traffic",
"dimensionFilter": {
"filter": {
"fieldName": "platform",
"stringFilter": {
"matchType": "EXACT",
"value": "web"
}
}
}
}
],
"dateRanges": [
{
"startDate": "2024-05-01",
"endDate": "2024-05-15"
}
],
"dimensions": [
{
"name": "country"
}
],
"metrics": [
{
"name": "activeUsers"
}
]
}
비교 기능을 사용하는 모든 요청의 경우 comparison
필드가 생성된 보고서에 자동으로 추가됩니다. 이 필드에는 요청에 제공된 비교의 이름이 포함됩니다.
다음은 비교가 포함된 응답의 샘플 스니펫입니다.
{
"dimensionHeaders": [
{
"name": "comparison"
},
{
"name": "country"
}
],
"metricHeaders": [
{
"name": "activeUsers",
"type": "TYPE_INTEGER"
}
],
"rows": [
{
"dimensionValues": [
{
"value": "Web traffic"
},
{
"value": "United States"
}
],
"metricValues": [
{
"value": "638572"
}
]
},
{
"dimensionValues": [
{
"value": "Web traffic"
},
{
"value": "Japan"
}
],
"metricValues": [
{
"value": "376578"
}
]
},
{
"dimensionValues": [
{
"value": "App traffic"
},
{
"value": "United States"
}
],
"metricValues": [
{
"value": "79527"
}
]
},
...
],
...
}