고급 사용 사례

이 문서에서는 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 참조를 참고하세요.

동질 집단 보고서 만들기

다음은 샘플 사용자 집단 보고서입니다.

  • 동질 집단은 firstSessionDate2020-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% 개선되었음을 보여줍니다.

이 보고서를 만들려면 세 개의 사용자 집단을 지정합니다. 첫 번째 사용자 집단의 firstSessionDate2020-11-02이고, 두 번째 사용자 집단의 firstSessionDate2020-11-09이며, 세 번째 사용자 집단의 firstSessionDate2020-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-16firstSessionDate가 있는 후반 사용자 집단의 유지율이 2020-11-02firstSessionDate가 있는 이전 사용자 집단의 유지율을 초과합니다.

여러 사용자 집단 유지율 차트

주간 사용자 집단 및 다른 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"
        }
      ]
    },

    ...

  ],

...

}