Google 판매자 센터 전송

Google 판매자 센터용 BigQuery Data Transfer Service를 사용하여 Google 판매자 센터 보고 데이터의 반복 로드 작업을 자동으로 예약하고 관리할 수 있습니다.

지원되는 보고서

Google 판매자 센터용 BigQuery Data Transfer Service는 현재 다음과 같은 데이터를 지원합니다.

제품 및 제품 문제

  • 여기에는 피드 또는 Content API for Shopping을 통해 판매자 센터에 제공되는 제품 데이터가 포함됩니다. 또한 Google이 제품에서 감지한 항목 수준의 문제도 포함됩니다. 이 데이터는 Google 판매자 센터에서 보거나 Content API for Shopping을 쿼리하여 확인할 수 있습니다.

  • 이 데이터가 BigQuery에 로드되는 방법에 대한 정보는 Google 판매자 센터 제품 테이블 스키마를 참조하세요.

리전별 인벤토리

  • 해당 제품에 대한 여기에는 리전별 재고 및 가격 책정 재정의에 대한 추가 제품 데이터가 포함됩니다.

  • 이 데이터가 BigQuery에 로드되는 방법에 대한 자세한 내용은 Google 판매자 센터 리전별 인벤토리 테이블 스키마를 참조하세요.

로컬 인벤토리

  • 여기에는 해당 제품의 로컬 인벤토리에 대한 추가 제품 데이터가 포함됩니다. 로컬 가격 책정, 재고, 수량, 수령, 매장 내 제품 위치에 대한 데이터를 포함합니다.

  • 이 데이터가 BigQuery에 로드되는 방법에 대한 자세한 내용은 Google 판매자 센터 로컬 인벤토리 테이블 스키마를 참조하세요.

가격 벤치마크

  • 여기에는 제품 수준 가격 벤치마크 데이터가 포함되며 Google 판매자 센터를 통해 제공되는 가격 경쟁력 보고서와 동일한 정의를 기반으로 합니다.

  • 이 데이터가 BigQuery에 로드되는 방법에 대한 정보는 Google 판매자 센터 가격 벤치마크 테이블 스키마를 참조하세요.

베스트셀러

  • 여기에는 쇼핑 광고 및 무료 목록에서 가장 인기 있는 제품과 브랜드에 대한 데이터와 인벤토리에 재고가 있는지 여부가 포함됩니다.

  • Google 판매자 센터를 통해 제공되는 베스트셀러 보고서를 기반으로 합니다.

  • 베스트셀러 보고서는 다음 표로 구성됩니다.

    1. BestSellers_TopProducts_는 국가별 상위 제품 및 Google 상품 카테고리 순위를 나열한 목록입니다. 이 테이블은 쇼핑 광고 및 무료 목록의 모든 판매자 데이터를 나타냅니다.
    2. BestSellers_TopProducts_Inventory_는 인기 제품과 인벤토리 간의 매핑 테이블입니다.
    3. BestSellers_TopBrands_는 국가 및 Google 제품 카테고리별로 계산된 상위 브랜드의 순위 목록입니다. 이는 쇼핑 광고와 무료 목록에 있는 모든 판매자의 데이터를 나타냅니다.
  • 베스트셀러 데이터가 BigQuery에 로드되는 방식에 대한 자세한 내용은 Google 판매자 센터 최고 제품, 제품 인벤토리, 인기 브랜드 테이블 스키마를 참조하세요.

현재 Google 판매자 센터용 BigQuery Data Transfer Service는 다음과 같은 보고 옵션을 지원합니다.

보고 옵션 지원
일정

일별, 주별, 월별 또는 커스텀으로 설정할 수 있습니다. 기본적으로 전송이 생성될 때 일별로 설정됩니다. 전송 사이의 최소 간격은 6시간입니다.

제한사항

모든 판매자 센터 전송에는 다음 제한이 적용됩니다.

  • 판매자 ID에 대한 전송을 생성한 후 판매자 계정 데이터를 준비하고 전송하기 전에 최대 1일까지 기다려야 할 수 있습니다.
  • 최대 백필 기간은 구성할 수 없습니다. 이전 데이터 백필은 현재 지원되지 않습니다. 현재 데이터에 대한 백필만 설정할 수 있습니다.

제품 및 제품 문제

  • BigQuery의 제품 및 제품 문제 데이터는 판매자 계정의 실시간 보기를 나타내지 않습니다. 데이터의 타임라인을 보려면 스키마의 product_data_timestamp 필드를 참조하세요.

가격 벤치마크

  • 가격 벤치마크 데이터는 가격 벤치마크의 실시간 보기가 아닙니다. 데이터 타임라인을 보려면 가격 벤치마크 스키마의 price_benchmark_timestamp 필드를 참조하세요.
  • 모든 제품에 가격 벤치마크가 있는 것은 아닙니다.

베스트셀러

  • 모든 국가가 순위 데이터를 포함하는 것은 아닙니다. 보고서에 포함된 국가(ISO 3166-1 alpha-2 사용): AT, AU, BE, BR, CA, CH, CZ, DE, DK, ES, FI, FR, GB, HU, IE, IN, IT, JP, MX, NL, NO, NZ, PL, PT, RO, RU, SE, SK, TR, UA, US
  • 베스트셀러 데이터는 브랜드 순위의 실시간 보기가 아닙니다. 데이터의 타임라인을 보려면 BestSellers_TopProducts_BestSellers_TopBrands_ 스키마의 rank_timestamp 필드를 참조하세요.
  • 쇼핑 광고 및 무료 목록에서 가장 인기있는 상품만 BestSellers_TopProducts_ 테이블에 포함됩니다.
  • 쇼핑 광고 및 무료 목록에서 가장 인기있는 브랜드만 BestSellers_TopBrands_ 테이블에 포함됩니다. BestSellers_TopBrands_ 테이블의 브랜드에 매핑되지 않는 google_brand_id가 있는 Products_ 테이블에 행이 있을 수 있습니다.
  • google_brand_id 필드의 브랜드 ID는 비즈니스 및 브랜드의 변화 특성을 반영하기 위해 시간 경과에 따라 변경될 수 있습니다. 따라서 장기간에 걸친 브랜드 집합 추적은 보장되지 않습니다.
  • 여러 카테고리에서 브랜드 순위가 결정되지만 Products_ 테이블의 모든 제품은 리프 카테고리에 속합니다. 비리프 카테고리에서 브랜드와 제품을 조인하려면 베스트셀러 샘플 쿼리에 표시된 대로 google_product_category_ids 필드를 사용합니다.

멀티 클라이언트 계정(MCA) 지원

여러 판매자 ID를 가진 기존 고객은 상위 멀티 클라이언트 계정(MCA)을 구성하는 것이 좋습니다. MCA를 구성하면 모든 판매자 ID의 단일 전송을 만들 수 있습니다.

Google 판매자 센터 MCA를 사용하면 개별 판매자 ID를 사용할 때보다 여러 가지 이점이 있습니다.

  • 여러 판매자 ID의 보고 데이터를 전송할 때 더 이상 여러 전송을 관리할 필요가 없습니다.
  • 여러 판매자 ID가 포함된 쿼리는 모든 판매자 ID 데이터가 동일한 테이블에 저장되므로 훨씬 더 쉽게 작성할 수 있습니다.
  • MCA를 사용하면 모든 판매자 ID 데이터가 동일한 작업으로 로드되므로 잠재적인 BigQuery 로드 작업 할당량 문제가 완화됩니다.

MCA를 사용할 경우의 한 가지 단점은 후속 쿼리 비용이 높아질 수 있다는 점입니다. 모든 데이터가 동일한 테이블에 저장되므로 개별 판매자 ID의 데이터를 검색하는 쿼리가 여전히 전체 테이블을 검색해야 합니다.

MCA를 사용하는 경우 aggregator_id 아래에 MCA ID가 나열되고 merchant_id 아래에 개별 하위 계정이 나열됩니다. MCA를 사용하지 않는 계정의 경우 aggregator_idnull로 설정됩니다.

시작하기 전에

Google 판매자 센터 전송을 만들기 전에 다음을 수행하세요.

필수 권한

전송을 만드는 사람에게 다음과 같은 필수 권한이 있는지 확인합니다.

  • BigQuery:

    • 전송을 만들 bigquery.transfers.update 권한
    • 대상 데이터 세트에 대한 bigquery.datasets.getbigquery.datasets.update 권한

    사전 정의된 IAM 역할 bigquery.admin에는 bigquery.transfers.update, bigquery.datasets.update, bigquery.datasets.get 권한이 있습니다. BigQuery Data Transfer Service의 IAM 역할에 대한 자세한 내용은 액세스 제어 참조를 확인하세요.

  • Google 판매자 센터

    • 전송 구성에 사용되는 Google 판매자 센터 계정에 액세스하세요. Google 판매자 센터 UI에서 사용자 섹션을 클릭하여 액세스 권한을 확인할 수 있습니다.

    • 가격 경쟁력 및 베스트셀러 데이터에 액세스하려면 먼저 시장 분석 프로그램을 사용하도록 설정해야 합니다.

Google 판매자 센터 전송 설정

Google 판매자 센터 보고를 위한 데이터 전송을 설정하려면 다음이 필요합니다.

Google 판매자 센터 보고용 데이터 전송을 만들려면 다음 안내를 따르세요.

Console

  1. Cloud Console에서 BigQuery 페이지로 이동합니다.

    BigQuery 페이지로 이동

  2. 전송을 클릭합니다.

  3. 전송 만들기를 클릭합니다.

  4. 전송 만들기 페이지에서 다음을 수행합니다.

    • 소스 유형 섹션에서 소스Google 판매자 센터를 선택합니다.

    • 전송 구성 이름 섹션의 표시 이름에 전송 이름(예: My Transfer)을 입력합니다. 전송 이름은 나중에 수정해야 할 경우에 대비해 전송을 식별할 수 있는 값이면 됩니다.

      전송 이름

    • 일정 옵션 섹션의 일정에서 설정 시간에 시작을 클릭합니다.

      • 반복 빈도에서 전송을 실행할 빈도 옵션을 선택합니다.

        • 매일(기본값)
        • 매주
        • 매월
        • 커스텀
        • 주문형
      • 시작일 및 실행 시간에 전송을 시작할 날짜 및 시간을 입력합니다. 이 값은 현재 UTC 시간에서 24시간 이상 경과한 시간이어야 합니다. 지금 시작을 선택하면 이 옵션은 사용 중지됩니다.

        전송 일정

        일정 옵션을 지금 시작으로 설정한 상태로 두면 첫 번째 전송 실행이 즉시 시작되고, 오류 메시지(No data to transfer found for the Merchant account. If you have just created this transfer, you may need to wait for up to a day before the data of your Merchant account are prepared and available for the transfer.)와 함께 실패합니다. 다음 예약된 실행은 성공적으로 실행됩니다. 판매자 계정의 데이터가 동일한 날짜(UTC 시간)에 준비되었으면 오늘 실행에 대해 백필을 설정할 수 있습니다.

    • 대상 설정 섹션의 대상 데이터 세트에서 데이터를 저장하기 위해 만든 데이터 세트를 선택합니다.

      전송 데이터 세트

    • 데이터 소스 세부정보 섹션에서 판매자 ID에 판매자 ID 또는 MCA ID를 입력합니다.

      전송할 보고서를 선택하세요. 자세한 내용은 지원되는 보고서를 참조하세요.

      Google 판매자 센터는 데이터를 전송합니다.

    • (선택사항) 알림 옵션 섹션에서 다음을 수행합니다.

      • 전환을 클릭해서 이메일 알림을 사용 설정합니다. 이 옵션을 사용 설정하면 전송 실행이 실패할 때 전송 관리자에게 이메일 알림이 발송됩니다.
      • Pub/Sub 주제 선택에서 주제 이름을 선택하거나 주제 만들기를 클릭합니다. 이 옵션은 전송에 대한 Pub/Sub 실행 알림을 구성합니다.
  5. 저장을 클릭합니다.

bq

bq mk 명령어를 입력하고 전송 생성 플래그 --transfer_config를 지정합니다. 다음 플래그도 필요합니다.

  • --data_source
  • --target_dataset
  • --display_name
  • --params

또한 --project_id 플래그를 입력하여 특정 프로젝트를 지정할 수도 있습니다. --project_id를 지정하지 않으면 기본 프로젝트가 사용됩니다.

bq mk \
--transfer_config \
--project_id=project_id \
--target_dataset=dataset \
--display_name=name \
--params='parameters' \
--data_source=data_source

각 항목의 의미는 다음과 같습니다.

  • project_id는 프로젝트 ID입니다.
  • dataset는 전송 구성 대상 데이터 세트입니다.
  • name은 전송 구성의 표시 이름입니다. 전송 이름은 나중에 수정해야 할 경우에 전송을 식별할 수 있는 값이면 됩니다.
  • parameters에는 JSON 형식으로 생성된 전송 구성의 매개변수가 있습니다. 예를 들면 --params='{"param":"param_value"}'입니다.
    • Google 판매자 센터에서 merchant_id 매개변수를 지정합니다.
    • export_products 매개변수는 제품 및 제품 문제 데이터를 전송할지 여부를 지정합니다. 이 매개변수는 export_products 매개변수를 지정하지 않은 경우에도 기본적으로 포함됩니다. 이 매개변수를 명시적으로 포함하고 'true'로 설정하는 것이 좋습니다.
    • export_regional_inventories 매개변수는 리전별 인벤토리 데이터를 전송할지 여부를 지정합니다.
    • export_local_inventories 매개변수는 로컬 인벤토리 데이터를 전송할지 여부를 지정합니다.
    • export_price_benchmarks 매개변수는 가격 벤치마킹 데이터를 전송할지 여부를 지정합니다.
    • export_best_sellers 매개변수는 베스트셀러 데이터를 전송할지 여부를 지정합니다.
  • data_source는 데이터 소스(merchant_center)입니다.

예를 들어 다음 명령어는 판매자 ID 1234 및 대상 데이터 세트 mydataset를 사용하여 My Transfer라는 Google 판매자 센터 전송을 만듭니다. 기본 프로젝트에 전송이 생성됩니다.

bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"merchant_id":"1234","export_products":"true","export_regional_inventories":"true","export_local_inventories":"true","export_price_benchmarks":"true","export_best_sellers":"true"}' \
--data_source=merchant_center

명령어를 처음 실행할 때 다음과 같은 메시지를 받게 됩니다.

[URL omitted] Please copy and paste the above URL into your web browser and follow the instructions to retrieve an authentication code.

메시지 안내를 따라 명령줄에 인증 코드를 붙여넣습니다.

이 전송을 만들고 최대 1일 동안 기다려야만 판매자 계정의 데이터가 준비되고 전송 가능한 상태가 됩니다. 다음 예약된 실행은 성공적으로 실행됩니다. 판매자 계정의 데이터가 동일한 날짜(UTC 시간)에 준비되었으면 오늘 실행에 대해 백필을 설정할 수 있습니다.

API

projects.locations.transferConfigs.create 메서드를 사용하고 TransferConfig 리소스의 인스턴스를 지정합니다.

Google 판매자 센터 전송 설정 문제 해결

전송을 설정하는 데 문제가 발생하면 BigQuery Data Transfer Service 전송 설정 문제 해결에서 Google 판매자 센터 전송 문제를 참조하세요.

데이터 쿼리

BigQuery로 전송되는 데이터는 내부 데이터화 시간별로 파티션을 나눈 테이블에 기록됩니다. 자세한 내용은 파티션을 나눈 테이블 소개를 참조하세요.

Google 판매자 센터 테이블을 쿼리할 때는 _PARTITIONTIME 또는 _PARTITIONDATE 유사 열을 쿼리에 사용해야 합니다. 자세한 내용은 파티션을 나눈 테이블 쿼리를 참조하세요.

Products_ 테이블에는 중첩 및 반복 필드가 포함됩니다. 중첩 및 반복 데이터 처리에 대한 자세한 내용은 표준 SQL 문서의 반복 필드 처리의 차이점을 참조하세요.

Google 판매자 센터 샘플 쿼리

다음과 같은 Google 판매자 센터 샘플 쿼리를 사용하여 전송된 데이터를 분석할 수 있습니다. 또한 Google 데이터 스튜디오와 같은 시각화 도구에서 쿼리를 사용할 수 있습니다.

다음 각 쿼리에서 dataset를 해당 데이터 세트 이름으로 바꿉니다. merchant_id를 판매자 ID로 바꿉니다. MCA를 사용 중인 경우에는 merchant_id를 MCA ID로 바꿉니다.

제품 및 제품 문제 샘플 쿼리

제품 및 제품 문제 통계

다음 샘플 쿼리는 제품 수, 문제가 있는 제품, 일별 문제를 제공합니다.

Console

SELECT
  _PARTITIONDATE AS date,
  COUNT(*) AS num_products,
  COUNTIF(ARRAY_LENGTH(issues) > 0) AS num_products_with_issues,
  SUM(ARRAY_LENGTH(issues)) AS num_issues
FROM
  dataset.Products_merchant_id
WHERE
  _PARTITIONDATE >= 'YYYY-MM-DD'
GROUP BY
  date
ORDER BY
  date DESC

bq

bq query --use_legacy_sql=false '
SELECT
  _PARTITIONDATE AS date,
  COUNT(*) AS num_products,
  COUNTIF(ARRAY_LENGTH(issues) > 0) AS num_products_with_issues,
  SUM(ARRAY_LENGTH(issues)) AS num_issues
FROM
  dataset.Products_merchant_id
WHERE
  _PARTITIONDATE >= 'YYYY-MM-DD'
GROUP BY
  date
ORDER BY
  date DESC'

쇼핑 광고에 승인되지 않은 제품

다음 샘플 쿼리는 국가별로 구분된 쇼핑 광고에 표시하도록 승인되지 않은 제품 수를 제공합니다. 미승인은 제외된 대상 또는 제품 관련 문제로 인해 발생할 수 있습니다.

Console

SELECT
  _PARTITIONDATE AS date,
  disapproved_country,
  COUNT(*) AS num_products
FROM
  dataset.Products_merchant_id,
  UNNEST(destinations) AS destination,
  UNNEST(disapproved_countries) AS disapproved_country
WHERE
  _PARTITIONDATE >= 'YYYY-MM-DD'
GROUP BY
  date, disapproved_country
ORDER BY
  date DESC

bq

bq query --use_legacy_sql=false '
SELECT
  _PARTITIONDATE AS date,
  disapproved_country,
  COUNT(*) AS num_products
FROM
  dataset.Products_merchant_id,
  UNNEST(destinations) AS destination,
  UNNEST(disapproved_countries) AS disapproved_country
WHERE
  _PARTITIONDATE >= 'YYYY-MM-DD'
GROUP BY
  date, disapproved_country
ORDER BY
  date DESC'

승인되지 않은 문제가 있는 제품

다음 샘플 쿼리는 승인되지 않은 문제가 있는 제품 수를 국가별로 구분하여 가져옵니다.

Console

SELECT
  _PARTITIONDATE AS date,
  applicable_country,
  COUNT(DISTINCT CONCAT(CAST(merchant_id AS STRING), ':', product_id))
      AS num_distinct_products
FROM
  dataset.Products_merchant_id,
  UNNEST(issues) AS issue,
  UNNEST(issue.applicable_countries) as applicable_country
WHERE
  _PARTITIONDATE >= 'YYYY-MM-DD' AND
  issue.servability = 'disapproved'
GROUP BY
  date, applicable_country
ORDER BY
  date DESC

bq

bq query --use_legacy_sql=false '
SELECT
  _PARTITIONDATE AS date,
  applicable_country,
  COUNT(DISTINCT CONCAT(CAST(merchant_id AS STRING), ':', product_id))
      AS num_distinct_products
FROM
  dataset.Products_merchant_id,
  UNNEST(issues) AS issue,
  UNNEST(issue.applicable_countries) as applicable_country
WHERE
  _PARTITIONDATE >= 'YYYY-MM-DD' AND
  issue.servability = 'disapproved'
GROUP BY
  date, applicable_country
ORDER BY
  date DESC'

가격 벤치마크 샘플 쿼리

제품 가격을 벤치마크와 비교

다음 쿼리는 ProductsPrice Benchmarks 데이터를 결합하여 제품 목록 및 관련 벤치마크를 반환합니다.

Console

WITH products AS
(
  SELECT
    _PARTITIONDATE AS date,
    *
  FROM
    dataset.Products_merchant_id
  WHERE
   _PARTITIONDATE >= 'YYYY-MM-DD'
),
benchmarks AS
(
  SELECT
    _PARTITIONDATE AS date,
    *
  FROM
    dataset.Products_PriceBenchmarks_merchant_id
  WHERE
    _PARTITIONDATE >= 'YYYY-MM-DD'
)
SELECT
  products.date,
  products.product_id,
  products.merchant_id,
  products.aggregator_id,
  products.price,
  products.sale_price,
  benchmarks.price_benchmark_value,
  benchmarks.price_benchmark_currency,
  benchmarks.country_of_sale
FROM
  products
INNER JOIN
  benchmarks
ON products.product_id = benchmarks.product_id AND
   products.merchant_id = benchmarks.merchant_id AND
   products.date = benchmarks.date

bq

bq query --use_legacy_sql=false '
WITH products AS
(
  SELECT
    _PARTITIONDATE AS date,
    *
  FROM
    `dataset.Products_merchant_id`
  WHERE
   _PARTITIONDATE >= 'YYYY-MM-DD'
),
benchmarks AS
(
  SELECT
    _PARTITIONDATE AS date,
    *
  FROM
    `dataset.Products_PriceBenchmarks_merchant_id`
  WHERE
   _PARTITIONDATE >= 'YYYY-MM-DD'
)
SELECT
  products.date,
  products.product_id,
  products.merchant_id,
  products.aggregator_id,
  products.price,
  products.sale_price,
  benchmarks.price_benchmark_value,
  benchmarks.price_benchmark_currency,
  benchmarks.country_of_sale
FROM
  products
INNER JOIN
  benchmarks
ON products.product_id = benchmarks.product_id AND
   products.merchant_id = benchmarks.merchant_id AND
   products.date = benchmarks.date'

베스트셀러 샘플 쿼리

지정된 카테고리 및 국가의 최고 제품

다음 쿼리는 미국의 스마트폰 카테고리에 대한 최상위 제품을 반환합니다.

Console

SELECT
  rank,
  previous_rank,
  relative_demand.bucket,
  (SELECT name FROM top_products.product_title WHERE locale = 'en-US') AS product_title,
  brand,
  price_range
FROM
  dataset.BestSellers_TopProducts_merchant_id AS top_products
WHERE
  _PARTITIONDATE = 'YYYY-MM-DD' AND
  ranking_category = 267 /*Smartphones*/ AND
  ranking_country = 'US'
ORDER BY
  rank

bq

bq query --use_legacy_sql=false '
SELECT
  rank,
  previous_rank,
  relative_demand.bucket,
  (SELECT name FROM top_products.product_title WHERE locale = 'en-US') AS product_title,
  brand,
  price_range
FROM
  dataset.BestSellers_TopProducts_merchant_id AS top_products
WHERE
  _PARTITIONDATE = 'YYYY-MM-DD' AND
  ranking_category = 267 /*Smartphones*/ AND
  ranking_country = 'US'
ORDER BY
  rank'

내 인벤토리의 인기 제품

다음 쿼리는 BestSellers_TopProducts_Inventory_BestSellers_TopProducts_ 데이터를 결합하여 현재 인벤토리에 있는 최고 제품 목록을 반환합니다.

Console

WITH latest_top_products AS
(
  SELECT
    *
  FROM
    dataset.BestSellers_TopProducts_merchant_id
  WHERE
    _PARTITIONDATE = 'YYYY-MM-DD'
),
latest_top_products_inventory AS
(
  SELECT
    *
  FROM
    dataset.BestSellers_TopProducts_Inventory_merchant_id
  WHERE
    _PARTITIONDATE = 'YYYY-MM-DD'
)
SELECT
  top_products.rank,
  inventory.product_id,
  (SELECT ANY_VALUE(name) FROM top_products.product_title) AS product_title,
  top_products.brand,
  top_products.gtins
FROM
  latest_top_products AS top_products
INNER JOIN
  latest_top_products_inventory AS inventory
USING (rank_id)

bq

bq query --use_legacy_sql=false '
WITH latest_top_products AS
(
  SELECT
    *
  FROM
    dataset.BestSellers_TopProducts_merchant_id
  WHERE
    _PARTITIONDATE = 'YYYY-MM-DD'
),
latest_top_products_inventory AS
(
  SELECT
    *
  FROM
    dataset.BestSellers_TopProducts_Inventory_merchant_id
  WHERE
    _PARTITIONDATE = 'YYYY-MM-DD'
)
SELECT
  top_products.rank,
  inventory.product_id,
  (SELECT ANY_VALUE(name) FROM top_products.product_title) AS product_title,
  top_products.brand,
  top_products.gtins
FROM
  latest_top_products AS top_products
INNER JOIN
  latest_top_products_inventory AS inventory
USING (rank_id)'

지정된 카테고리 및 국가의 최고 브랜드

다음 쿼리는 미국에서 스마트폰 카테고리의 최고 브랜드를 반환합니다.

Console

SELECT
  rank,
  previous_rank,
  brand
FROM
  dataset.BestSellers_TopBrands_merchant_id
WHERE
  _PARTITIONDATE = 'YYYY-MM-DD' AND
  ranking_category = 267 /*Smartphones*/ AND
  ranking_country = 'US'
ORDER BY
  rank

bq

  bq query --use_legacy_sql=false '
    SELECT
      rank,
      previous_rank,
      brand
    FROM
      dataset.BestSellers_TopBrands_merchant_id
    WHERE
      _PARTITIONDATE = 'YYYY-MM-DD' AND
      ranking_category = 267 /*Smartphones*/ AND
      ranking_country = 'US'
    ORDER BY
      rank'

인벤토리의 최고 브랜드 제품

다음 쿼리는 인벤토리에 있는 최고 브랜드의 제품 목록을 카테고리 및 국가별로 나열하여 반환합니다.

Console

  WITH latest_top_brands AS
  (
    SELECT
      *
    FROM
      dataset.BestSellers_TopBrands_merchant_id
    WHERE
      _PARTITIONDATE = 'YYYY-MM-DD'
  ),
  latest_products AS
  (
    SELECT
      product.*,
      product_category_id
    FROM
      dataset.Products_merchant_id AS product,
      UNNEST(product.google_product_category_ids) AS product_category_id,
      UNNEST(destinations) AS destination,
      UNNEST(destination.approved_countries) AS approved_country
    WHERE
      _PARTITIONDATE = 'YYYY-MM-DD'
  )
  SELECT
    top_brands.brand,
    (SELECT name FROM top_brands.ranking_category_path
    WHERE locale = 'en-US') AS ranking_category,
    top_brands.ranking_country,
    top_brands.rank,
    products.product_id,
    products.title
  FROM
    latest_top_brands AS top_brands
  INNER JOIN
    latest_products AS products
  ON top_brands.google_brand_id = products.google_brand_id AND
     top_brands.ranking_category = product_category_id AND
     top_brands.ranking_country = products.approved_country

bq

bq query --use_legacy_sql=false '
  WITH latest_top_brands AS
  (
    SELECT
      *
    FROM
      dataset.BestSellers_TopBrands_merchant_id
    WHERE
      _PARTITIONDATE = 'YYYY-MM-DD'
  ),
  latest_products AS
  (
    SELECT
      product.*,
      product_category_id
    FROM
      dataset.Products_merchant_id AS product,
      UNNEST(product.google_product_category_ids) AS product_category_id,
      UNNEST(destinations) AS destination,
      UNNEST(destination.approved_countries) AS approved_country
    WHERE
      _PARTITIONDATE = 'YYYY-MM-DD'
      destination.name = 'Shopping'
  )
  SELECT
    top_brands.brand,
    (SELECT name FROM top_brands.ranking_category_path
    WHERE locale = 'en-US') AS ranking_category,
    top_brands.ranking_country,
    top_brands.rank,
    products.product_id,
    products.title
  FROM
    latest_top_brands AS top_brands
  INNER JOIN
    latest_products AS products
  ON top_brands.google_brand_id = products.google_brand_id AND
     top_brands.ranking_category = product_category_id AND
     top_brands.ranking_country = products.approved_country'