다채널 유입경로 Reporting API - 개발자 가이드

이 문서에서는 다채널 유입경로 Reporting API를 사용하여 다채널 유입경로 데이터에 액세스하는 방법을 설명합니다.

소개

다채널 유입경로 Reporting API를 사용하면 다채널 유입경로 표준 및 맞춤 보고서의 표 형식 데이터에 액세스할 수 있습니다. 데이터에 액세스하려면 보기 (프로필), 시작일과 종료일, 표의 열 헤더를 구성하는 측정기준과 측정항목을 지정하는 쿼리를 만들어야 합니다. 이 쿼리는 다채널 유입경로 Reporting API로 전송되며 다채널 유입경로 Reporting API는 모든 데이터를 테이블 형식으로 반환합니다.

API를 처음 사용하는 경우 다채널 유입경로 Reporting API 개요를 읽고 다채널 유입경로 Reporting API의 목적과 이 API가 제공하는 데이터를 소개합니다.

시작하기 전에

이 가이드에서는 자바 클라이언트 라이브러리를 사용하여 다채널 유입경로 Reporting API에 액세스합니다. 각 클라이언트 라이브러리는 다중 채널 유입경로 Reporting API를 호출하여 데이터를 가져오는 단일 애널리틱스 서비스 객체를 제공합니다. 클라이언트 라이브러리를 사용하여 API에 액세스하지 않는 경우 다채널 유입경로 Reporting API - 참조 가이드를 읽어보세요.

애널리틱스 서비스 객체를 만드는 방법은 다음과 같습니다.

  1. Google API 콘솔에 애플리케이션을 등록합니다.
  2. Google 애널리틱스 데이터에 대한 액세스를 승인합니다.
  3. 애널리틱스 서비스 객체를 만드는 코드를 작성합니다.

이 단계를 완료하지 않았다면 Google 애널리틱스 API 애플리케이션을 빌드하는 초기 단계를 안내하는 Hello Analytics API 튜토리얼을 중지하고 읽어보세요. 가이드를 완료한 후에는 다음 가이드를 계속 읽어보세요.

예를 들어 다음 코드는 승인된 애널리틱스 서비스 객체를 만듭니다.

Java

Analytics analytics = initializeAnalytics();

애널리틱스 서비스 객체 analytics를 사용하여 다채널 유입경로 Reporting API를 호출합니다.

개요

다채널 유입경로 Reporting API를 사용하여 데이터를 검색하려면 다음 작업에 애플리케이션을 작성하세요.

  1. 다채널 유입경로 Reporting API를 쿼리합니다.
  2. API에서 반환된 결과를 사용합니다.

다채널 유입경로 Reporting API 쿼리

다채널 유입경로 Reporting API에서 데이터를 요청하려면 다음 단계를 따르세요.

  1. 다채널 유입경로 Reporting API 쿼리 객체를 빌드합니다.
  2. 쿼리 객체를 사용하여 다채널 유입경로 서버에 데이터를 요청합니다.

다채널 유입경로 Reporting API 쿼리 작성

다채널 유입경로 Reporting API 쿼리 객체를 만들려면 다음 메서드를 호출하세요.

analytics.data.mcf.get()    // analytics is the Analytics service object

이 메서드에 제공되는 첫 번째 매개변수는 ga:XXXX 형식의 고유한 테이블 ID입니다. 여기서 XXXX는 요청된 데이터가 포함된 애널리틱스 보기 (프로필)의 ID입니다. 쿼리 객체를 사용하여 쿼리 매개변수(예: setDimensions). 예를 들면 다음과 같습니다.

Java

Get apiQuery = analytics.data().mcf()
    .get(tableId,
        "2012-01-01",              // Start date
        "2012-03-31",              // End date
        "mcf:totalConversions")    // Metrics
    .setDimensions("mcf:sourcePath")
    .setSort("-mcf:totalConversions")
    .setMaxResults(25);

모든 쿼리 매개변수 목록은 쿼리 매개변수 요약을 참조하세요. 측정항목 및 측정기준 매개변수를 사용하면 다중 채널 유입경로에서 가져올 데이터를 지정할 수 있습니다. 측정기준과 측정항목의 전체 목록은 측정기준 및 측정항목 참조를 참고하세요.

다채널 유입경로 Reporting API 데이터 요청

쿼리 객체를 만든 후 객체의 execute 메서드를 호출하여 다채널 유입경로 서버에 데이터를 요청합니다. 예를 들면 다음과 같습니다.

Java

try {
  apiQuery.execute();
  // Success. Do something cool!

} catch (GoogleJsonResponseException e) {
  // Catch API specific errors.
  handleApiError(e);

} catch (IOException e) {
  // Catch general parsing network errors.
  e.printStackTrace();
}

대신 원시 API 응답에 액세스하려면 쿼리 객체에서 executeUnparsed() 메서드를 호출합니다.

HttpResponse response = apiQuery.executeUnparsed();

쿼리가 성공하면 요청된 데이터가 반환됩니다. 오류가 발생하면 execute 메서드에서 오류의 상태 코드와 오류 설명이 포함된 예외가 발생합니다. 애플리케이션은 예외를 포착하고 처리해야 합니다.

API 결과 사용

다채널 유입경로 Reporting API 쿼리가 성공하면 데이터에 대한 보고 데이터와 정보가 반환됩니다.

다채널 유입경로 보고 데이터

쿼리는 다음과 같은 표 형식의 보고 데이터를 반환합니다.

  • 열 헤더 데이터
  • 행 데이터

열 헤더 데이터

쿼리 응답에 테이블 헤더 정보가 포함된 열 헤더 필드가 있습니다. 필드는 ColumnHeaders 객체의 목록 (또는 배열)이며 각 객체에는 열 이름, 열 유형, 열 데이터 유형이 포함됩니다. 열 순서는 측정기준 열 다음에 원래 쿼리에서 지정한 것과 동일한 순서로 측정항목 열이 이어집니다. 예를 들어 다음 메서드는 열 헤더를 출력합니다.

Java

private static void printColumnHeaders(McfData mcfData) {
  System.out.println("Column Headers:");

  for (ColumnHeaders header : mcfData.getColumnHeaders()) {
    System.out.println("Column Name: " + header.getName());
    System.out.println("Column Type: " + header.getColumnType());
    System.out.println("Column Data Type: " + header.getDataType());
  }
}

행 데이터

API에서 반환된 기본 데이터는 McfData.Rows의 2차원 List로 반환됩니다. 각 McfData.RowsString 유형의 기본 값이거나 McfData.Rows.ConversionPathValue 유형의 전환 경로 값인 단일 셀을 나타냅니다. 행의 셀 순서는 위에서 설명한 열 헤더 객체의 필드와 동일합니다.

각 셀의 데이터는 문자열 또는 다채널 유입경로 시퀀스 유형으로 반환되므로 각 열 헤더 객체의 DataType 필드는 값을 적절한 유형으로 파싱하는 데 특히 유용합니다. 가능한 모든 데이터 유형은 참조 가이드를 확인하세요.

예를 들어 다음 메서드는 테이블 헤더와 행을 출력합니다.

Java

private static void printDataTable(McfData mcfData) {
  System.out.println("Data Table:");
  if (mcfData.getTotalResults() > 0) {
    // Print the column names.
    List<ColumnHeaders> headers = mcfData.getColumnHeaders();
    for (ColumnHeaders header : headers) {
      System.out.print(header.getName());
    }
    System.out.println();

    // Print the rows of data.
    for (List<McfData.Rows> row : mcfData.getRows()) {
      for (int columnIndex = 0; columnIndex < row.size(); ++columnIndex) {
        ColumnHeaders header = headers.get(columnIndex);
        McfData.Rows cell = row.get(columnIndex);
        if (header.getDataType().equals("MCF_SEQUENCE")) {
          System.out.print(getStringFromMcfSequence(cell.getConversionPathValue()));
        } else {
          System.out.print(cell.getPrimitiveValue());
        }
      }
      System.out.println();
    }
  } else {
    System.out.println("No rows found");
  }
}

다음 예에서는 다채널 유입경로 시퀀스 유형 객체를 파싱하여 문자열로 변환하는 방법을 보여줍니다.

Java

private static String getStringFromMcfSequence(List<McfData.Rows.ConversionPathValue> path) {
  StringBuilder stringBuilder = new StringBuilder();
  for (McfData.Rows.ConversionPathValue pathElement : path) {
    if (stringBuilder.length() > 0)
      stringBuilder.append(" > ");
    stringBuilder.append(pathElement.getNodeValue());
  }
  return stringBuilder.toString();
}

신고 정보

보고 데이터 외에도 쿼리는 데이터에 대한 정보(예: 보고서 ID)를 반환합니다. 예를 들어 다음 메서드는 보고서 정보를 출력합니다.

Java

private static void printReportInfo(McfData mcfData) {
  System.out.println("Report Info:");
  System.out.println("ID:" + mcfData.getId());
  System.out.println("Self link: " + mcfData.getSelfLink());
  System.out.println("Kind: " + mcfData.getKind());
  System.out.println("Contains Sampled Data: " + mcfData.getContainsSampledData());
}

containsSampledData 필드는 쿼리 응답이 샘플링되었는지 여부를 알려줍니다. 샘플링은 쿼리 결과에 영향을 미칠 수 있으므로 쿼리 (API)에서 반환된 샘플링된 값은 웹 인터페이스에 표시되는 값과 일치하지 않습니다. 자세한 내용은 샘플링을 참고하세요.

(프로필) 정보 보기

쿼리 응답에는 웹 속성 ID, 보기 (프로필) 이름 및 ID, 보기가 포함된 애널리틱스 계정 (프로필)의 ID가 포함됩니다. 예를 들어 다음 메서드는 터미널에 출력합니다 (표준 출력).

Java

private static void printProfileInfo(McfData mcfData) {
  ProfileInfo profileInfo = mcfData.getProfileInfo();

  System.out.println("View (Profile) Info:");
  System.out.println("Account ID: " + profileInfo.getAccountId());
  System.out.println("Web Property ID: " + profileInfo.getWebPropertyId());
  System.out.println("Internal Web Property ID: " + profileInfo.getInternalWebPropertyId());
  System.out.println("View (Profile) ID: " + profileInfo.getProfileId());
  System.out.println("View (Profile) Name: " + profileInfo.getProfileName());
  System.out.println("Table ID: " + profileInfo.getTableId());
}

쿼리 정보

쿼리 응답에는 모든 데이터 요청 쿼리 매개변수의 값이 포함된 Query 객체가 포함됩니다. 예를 들어 다음 메서드는 이러한 매개변수의 값을 출력합니다.

Java

private static void printQueryInfo(McfData mcfData) {
  Query query = mcfData.getQuery();

  System.out.println("Query Info:");
  System.out.println("Ids: " + query.getIds());
  System.out.println("Start Date: " + query.getStartDate());
  System.out.println("End Date: " + query.getEndDate());
  System.out.println("Metrics: " + query.getMetrics());       // List of Analytics metrics
  System.out.println("Dimensions: " + query.getDimensions()); // List of Analytics dimensions
  System.out.println("Sort: " + query.getSort());             // List of sorte metrics or dimensions
  System.out.println("Segment: " + query.getSegment());
  System.out.println("Filters: " + query.getFilters());
  System.out.println("Start Index: " + query.getStartIndex());
  System.out.println("Max Results: " + query.getMaxResults());
}

query.getMetrics(), query.getDimensions(), query.getSort() 이외의 메서드는 String를 반환합니다. 예를 들어 query.getStartDate()는 보고서의 시작일 (String)을 반환합니다.

페이지로 나누기 정보

모든 다중 채널 유입경로 Reporting API 요청은 다중 채널 유입경로 데이터의 수십만 행과 일치할 수 있습니다. 다채널 유입경로 Reporting API는 특정 시점에 데이터의 단일 페이지라고 하는 하위 집합만 반환합니다. 데이터의 모든 페이지를 검색하려면 페이지로 나누기 필드를 사용합니다. 다음 메서드는 페이지로 나누기 정보를 출력합니다.

Java

private static void printPaginationInfo(McfData mcfData) {
  System.out.println("Pagination Info:");
  System.out.println("Previous Link: " + mcfData.getPreviousLink());
  System.out.println("Next Link: " + mcfData.getNextLink());
  System.out.println("Items Per Page: " + mcfData.getItemsPerPage());
  System.out.println("Total Results: " + mcfData.getTotalResults());
}

mcfData.getTotalResults() 메서드 호출은 쿼리의 총 행 수를 반환하며 이는 쿼리에서 반환하는 총 행 수보다 클 수 있습니다. 또한 mcfData.getItemsPerPage() 메서드 호출은 쿼리 응답에 포함할 수 있는 최대 행 수를 반환합니다.

mcfData.getPreviousLink() 메서드 호출은 이전 페이지 링크를 반환하고 mcfData.getNextLink()는 다음 페이지 링크를 반환합니다.

모든 결과의 총계

쿼리 응답에서 반환된 결과뿐만 아니라 모든 결과에서 요청된 측정항목의 총계를 가져오려면 쿼리 응답에서 McfData 객체인 getTotalsForAllResults() 메서드를 호출합니다. 총값을 사용하여 평균을 계산합니다.

Java

private static void printTotalsForAllResults(McfData mcfData) {
  System.out.println("Metric totals over all results:");
  Map<String, String> totalsMap = mcfData.getTotalsForAllResults();
  for (Map.Entry<String, String> entry : totalsMap.entrySet()) {
    System.out.println(entry.getKey() + " : " + entry.getValue());
  }
}

작업 샘플

Java

Google API 자바 클라이언트 라이브러리 다채널 유입경로 Reporting API 샘플