이 문서에서는 다채널 유입경로 Reporting API를 사용하여 다중 채널 유입경로 데이터에 액세스하는 방법을 설명합니다.
소개
다채널 유입경로 Reporting API는 다채널 유입경로 표준 및 맞춤 보고서에서 테이블 형식의 데이터에 대한 액세스를 제공합니다. 데이터에 액세스하려면 뷰 (프로필), 시작일과 종료일, 테이블의 열 헤더를 구성하는 측정기준과 측정항목을 지정하는 쿼리를 만듭니다. 이 쿼리는 다중 채널 유입경로 Reporting API로 전송되고 다채널 유입경로 Reporting API는 모든 데이터를 테이블 형태로 반환합니다.
API를 처음 사용한다면 다채널 유입경로 Reporting API 개요에서 다채널 유입경로 Reporting API와 API에서 제공하는 데이터에 관한 소개를 읽어보세요.
시작하기 전에
이 가이드에서는 자바 클라이언트 라이브러리를 사용하여 다중 채널 유입경로 Reporting API에 액세스합니다. 각 클라이언트 라이브러리는 다채널 유입경로 Reporting API를 호출하여 데이터를 가져오는 단일 애널리틱스 서비스 객체를 제공합니다. 클라이언트 라이브러리를 사용하지 않고 API에 액세스하는 경우 다채널 유입경로 Reporting API - 참조 가이드를 읽어보세요.
애널리틱스 서비스 객체를 만들려면 다음 안내를 따르세요.
- Google API 콘솔에 애플리케이션을 등록합니다.
- Google 애널리틱스 데이터에 대한 액세스를 승인합니다.
- 코드를 작성하여 애널리틱스 서비스 객체를 만듭니다.
이 단계를 완료하지 않았으면 Google 애널리틱스 API 애플리케이션을 빌드하는 초기 단계를 안내하는 Hello Analytics API 튜토리얼을 중단하고 읽어보세요. 튜토리얼을 완료한 후 계속해서 다음 가이드를 읽어보세요.
예를 들어 다음 코드는 승인된 애널리틱스 서비스 객체를 만듭니다.
자바
Analytics analytics = initializeAnalytics();
다채널 유입경로 Reporting API를 호출하려면 애널리틱스 서비스 객체 analytics
를 사용하세요.
개요
다채널 유입경로 Reporting API를 사용해 데이터를 검색하려면 애플리케이션을 작성하세요.
- 다채널 유입경로 Reporting API를 쿼리합니다.
- API에서 반환된 결과를 사용합니다.
다채널 유입경로 Reporting API 쿼리하기
다채널 유입경로 Reporting API에 데이터를 요청하려면 다음 단계를 따르세요.
- 다채널 유입경로 Reporting API 쿼리 객체를 빌드합니다.
- 쿼리 객체를 사용하여 다중 채널 유입경로 서버에서 데이터를 요청합니다.
다채널 유입경로 Reporting API 쿼리 작성
다채널 유입경로 Reporting API 쿼리 객체를 만들려면 다음 메서드를 호출합니다.
analytics.data.mcf.get() // analytics is the Analytics service object
메서드에 제공되는 첫 번째 매개변수는 ga:XXXX
형식의 고유한 테이블 ID입니다. 여기서 XXXX
는 요청된 데이터를 포함하는 애널리틱스 보기 (프로필)의 ID입니다.
쿼리 객체를 사용하여 쿼리 매개변수(예: setDimensions
). 예를 들면 다음과 같습니다.
자바
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
메서드를 호출하여 다중 채널 유입경로 서버에 데이터를 요청합니다. 예를 들면 다음과 같습니다.
자바
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
객체의 목록 (또는 배열)이며 각 객체에는 열 이름, 열 유형, 열 데이터 유형이 포함됩니다. 열 순서는 측정기준 열 다음에 측정항목 열이 나오며, 원래 쿼리에 지정된 순서와 같습니다. 예를 들어 다음 메서드는 열 헤더를 출력합니다.
자바
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.Rows
은 String
유형의 프리미티브 값 또는 McfData.Rows.ConversionPathValue
유형의 전환 경로 값인 단일 셀을 나타냅니다. 행의 셀 순서는 위에 설명된 열 헤더 객체의 필드와 동일합니다.
각 셀의 데이터는 문자열이나 다중 채널 유입경로 시퀀스 유형으로 반환되므로 각 열 헤더 객체의 DataType
필드는 값을 적절한 유형으로 파싱하는 데 특히 유용합니다.
가능한 모든 데이터 유형은 참조 가이드를 참고하세요.
예를 들어 다음 메서드는 테이블 헤더와 행을 출력합니다.
자바
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"); } }
다음 예는 다채널 유입경로 시퀀스 유형을 파싱하여 문자열로 변환하는 방법을 보여줍니다.
자바
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)를 반환합니다. 예를 들어 다음 메서드는 보고서 정보를 출력합니다.
자바
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가 포함됩니다. 예를 들어 다음 메서드는 터미널에 출력합니다 (표준 출력).
자바
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
객체가 포함됩니다. 예를 들어 다음 메서드는 이러한 매개변수의 값을 출력합니다.
자바
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는 지정된 시간에 데이터의 단일 페이지라고 하는 하위 집합만 반환합니다. 모든 데이터 페이지를 검색하려면 페이지로 나누기 필드를 사용하세요. 다음 메서드는 페이지로 나누기 정보를 출력합니다.
자바
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()
메서드를 호출합니다. 합계를 사용해 평균을 계산합니다.
자바
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()); } }
작업 샘플
자바
Google API 자바 클라이언트 라이브러리 다채널 유입경로 Reporting API 샘플