BigQuery Export 쿼리 예시

이 페이지에서는 BigQuery 데이터 세트로 채널 서비스 데이터 내보내기를 쿼리하는 예시를 제공합니다.

채널 서비스 데이터 내보내기에 대한 자세한 내용은 BigQuery로 채널 서비스 데이터 내보내기 설정 방법을 참고하세요. 추가 문제 해결 도움말은 BigQuery Export 문제 해결을 참고하세요.

BigQuery 테이블 식별 및 액세스

채널 서비스 내보내기는 Partner Sales Console을 사용하여 설정합니다.

테이블 이름은 PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1 형식을 사용합니다.

다른 사용자가 채널 서비스 내보내기를 볼 수 있도록 하려면 올바른 권한을 적용해야 합니다. 예를 들어 프로젝트, 데이터 세트 또는 테이블 자체의 사용자 인증 정보에 bigquery.dataViewer 역할을 할당할 수 있습니다.

검색어 예

다음 예에는 샘플 쿼리와 결과를 해석하는 방법에 대한 기본 설명이 포함되어 있습니다. 결과에는 Partner Sales Console에서 구성된 모든 고객 또는 채널 파트너의 Google Cloud 사용 비용이 포함됩니다.

결제 계정별 파트너 비용 합계

이 쿼리를 사용하여 Google에서 수신한 인보이스를 확인할 수 있습니다. costcredit.amount 값은 모든 행의 합계입니다. 여기에는 사용 비용, 세금, 조정, 반올림 오류가 포함됩니다.

SELECT
  payer_billing_account_id,
  currency,
  invoice.month,
  SUM(cost)
    + SUM(
      IFNULL(
        (SELECT SUM(c.amount) FROM UNNEST(credits) AS c), 0))
    AS total
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
  export_time BETWEEN TIMESTAMP(START_DATE)
    AND TIMESTAMP(END_DATE)
GROUP BY
  payer_billing_account_id,
  currency,
  invoice.month
ORDER BY
  payer_billing_account_id,
  currency,
  invoice.month;

Cloud Billing 하위 계정별 고객 비용 합계

이 쿼리를 사용하여 각 고객에 대한 청구 가능 사용량을 요약할 수 있습니다. customer_costcredit.customer_amount 값은 사용량 비용을 나타내는 모든 행의 합계를 표시합니다. 세금, 조정, 반올림을 나타내는 행에 null 값이 표시됩니다.

type이(가) RESELLER_MARGIN으로 설정된 크레딧의 경우 고객 결제에서 마진이 표시되지 않도록 customer_amount이(가) 0으로 설정됩니다.

customer_costcredit.customer_amount 값은 가격 재조정 설정을 보여줍니다. 예를 들어 특정 고객의 Google Cloud 사용 권한에 대한 RebillingBasis이(가) Direct Customer Cost minus 5%(으)로 설정된 경우 customer_cost 값은 0.95에 cost을(를) 곱합니다. 여기에는 리셀러 비용에서 구성된 할인이 반영됩니다.

이 쿼리의 결과에는 각 Cloud Billing 하위 계정, 연결된 파트너 판매 고객 리소스 이름, 인보이스 발행 월, 총 청구 가능 사용량이 포함됩니다.

SELECT
  customer_name,
  billing_account_id,
  payer_billing_account_id,
  currency,
  invoice.month,
  SUM(customer_cost)
    + SUM(
      IFNULL(
        (SELECT SUM(c.customer_amount) FROM UNNEST(credits) AS c), 0))
    AS total
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
  export_time BETWEEN TIMESTAMP(START_DATE)
    AND TIMESTAMP(END_DATE)
GROUP BY
  customer_name,
  billing_account_id,
  payer_billing_account_id,
  currency,
  invoice.month
ORDER BY
  customer_name,
  billing_account_id,
  payer_billing_account_id,
  currency,
  invoice.month;

하위 계정 소유자에게 표시되는 Cloud Billing 하위 계정별 고객 비용 합계

이 쿼리는 데이터 비용 수치가 리셀러 고객(또는 파트너)이 해당 하위 계정으로 Google Cloud 콘솔을 열면 보이는 항목과 어떻게 연결되는지 보여줍니다.

  1. type이(가) RESELLER_MARGIN으로 설정된 크레딧의 경우 SBA 뷰에서 숨겨져 있습니다.
  2. cost_type이(가) 세금인 비용의 경우 SBA 뷰에서 숨겨져 있습니다. 리셀러는 리셀러 고객의 인보이스에 별도로 적용되는 세금을 추가해야 합니다.

일부 레코드의 경우 cost_at_list이(가) null이 되어 이 결과가 Google Cloud 콘솔에 표시되는 것과 다를 수 있습니다. 이 경우 대신 IFNULL(cost_at_list, cost)을(를) 사용하세요. 자세한 내용은 정가 없는 요금을 참고하세요.

SELECT
  customer_name,
  currency,
  SUM(cost_at_list) AS list_cost,
  SUM(cost - cost_at_list) AS negotiated_savings,
  SUM(cost)
    + SUM(
      IFNULL(
        (
          SELECT
            SUM(c.amount)
          FROM
            UNNEST(credits) AS c
          WHERE
            c.type != 'RESELLER_MARGIN'
        ),
        0)) AS total
FROM
  `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
  cost_type != 'tax'
  AND billing_account_id = 'BILLING_SUBACCOUNT_ID'
  AND invoice.month = 'YYYYMM'
GROUP BY
  customer_name,
  currency
ORDER BY
  customer_name,
  currency;

결제 계정별 채널 파트너 비용 합계

유통업체의 경우에는 이 쿼리를 사용하여 각 채널 파트너의 청구 가능 사용량을 요약할 수 있습니다. channel_partner_costcredit.channel_partner_amount 값은 사용 비용을 나타내는 모든 행의 합계를 표시합니다. 세금, 조정, 반올림을 나타내는 행에 null 값이 표시됩니다.

type이(가) RESELLER_MARGIN으로 설정된 크레딧의 경우 채널 파트너 결제에서 마진이 표시되지 않도록 channel_partner_amount이(가) 0으로 설정됩니다.

channel_partner_costcredit.channel_partner_amount 값은 가격 재조정 설정을 보여줍니다. 예를 들어 특정 채널 파트너의 RebillingBasis이(가) Direct Customer Cost minus 5%(으)로 설정된 경우 channel_partner_cost 값은 0.95에 cost을(를) 곱합니다. 여기에는 리셀러 비용에서 구성된 할인이 반영됩니다.

이 쿼리의 결과에는 각 결제 계정, 해당 결제 계정의 고객에게 연결된 채널 파트너 resource_name, 인보이스 발행 월, 총 청구 가능 사용량이 포함됩니다.

SELECT
  channel_partner_name,
  payer_billing_account_id,
  currency,
  invoice.month,
  SUM(channel_partner_cost)
    + SUM(
      IFNULL(
        (SELECT SUM(c.channel_partner_amount) FROM UNNEST(credits) AS c), 0))
    AS total
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
  export_time BETWEEN TIMESTAMP(START_DATE)
    AND TIMESTAMP(END_DATE)
GROUP BY
  channel_partner_name,
  payer_billing_account_id,
  currency,
  invoice.month
ORDER BY
  channel_partner_name,
  payer_billing_account_id,
  currency,
  invoice.month;

고객에게 할당되지 않은 비용의 합계

이 쿼리를 사용하여 채널 서비스 고객에게 연결되어 있지 않지만 다른 고객에게 청구 가능한 사용량을 나타낼 수 있는 비용을 요약할 수 있습니다. costcredit.amount 값은 billing_account_id과(와) payer_billing_account_id이(가) 다른 모든 행의 합계를 표시합니다. billing_account_id은(는) Cloud Billing 하위 계정을 나타냅니다.

type이(가) RESELLER_MARGIN으로 설정된 크레딧의 경우 이 쿼리는 크레딧 금액을 제외합니다. 크레딧 금액은 리셀러에게 할당되는 것으로 고객 비용으로 간주되지 않습니다. RESELLER_MARGIN 금액은 리셀러 비용에 포함되며 Google에서 보낸 인보이스에 반영됩니다.

SELECT
  billing_account_id,
  payer_billing_account_id,
  currency,
  invoice.month,
  SUM(cost)
    + SUM(
      IFNULL(
        (SELECT SUM(c.amount) FROM UNNEST(credits) AS c WHERE c.type != 'RESELLER_MARGIN'), 0))
    AS total
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
  export_time BETWEEN TIMESTAMP(START_DATE)
    AND TIMESTAMP(END_DATE)
  AND customer_name IS NULL
GROUP BY
  billing_account_id,
  payer_billing_account_id,
  currency,
  invoice.month
ORDER BY
  billing_account_id,
  payer_billing_account_id,
  currency,
  invoice.month;

인보이스 CSV와 유사한 Google Workspace 데이터 뷰

Google Workspace 리셀러인 경우 인보이스 CSV 파일과 유사한 열이 있는 Google Workspace 결제 데이터를 볼 수 있습니다.

SELECT
  (
    SELECT
      ws_labels.value
    FROM
      UNNEST(system_labels) AS ws_labels
    WHERE
      ws_labels.key = 'workspace.googleapis.com/domain_name'
  ) AS domain_name,
  billing_account_id AS customer_id,
  sku.description AS sku_name,
  sku.id AS sku_id,
  (
    SELECT
      ws_labels.value
    FROM
      UNNEST(system_labels) AS ws_labels
    WHERE
      ws_labels.key = 'workspace.googleapis.com/usage_type'
  ) AS description,
  (
    SELECT
      ws_labels.value
    FROM
      UNNEST(system_labels) AS ws_labels
    WHERE
      ws_labels.key = 'workspace.googleapis.com/order_id'
  ) AS order_name,
  FORMAT_TIMESTAMP('%b %d', usage_start_time, 'America/Los_Angeles')
    AS start_date,
  FORMAT_TIMESTAMP(
    '%b %d',
    TIMESTAMP_SUB(usage_end_time, INTERVAL 1 MINUTE),
    'America/Los_Angeles')
    AS end_date,
  SUM(usage.amount_in_pricing_unit) AS quantity,
  (
    SELECT ws_labels.value
    FROM UNNEST(system_labels) AS ws_labels
    WHERE ws_labels.key = 'workspace.googleapis.com/purchase_order_id'
  ) AS po_number,
  SUM(cost) AS amount,
  SUM(cost_at_list) AS list_amount,
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1`
WHERE
  export_time BETWEEN TIMESTAMP(START_DATE)
    AND TIMESTAMP(END_DATE)
  AND payer_billing_account_id = 'EXTERNAL_BILLING_ACCOUNT_ID'
  AND invoice.month = 'INVOICE_MONTH'
GROUP BY
  domain_name,
  customer_id,
  sku_name,
  sku_id,
  description,
  order_name,
  start_date,
  end_date,
  po_number
HAVING amount != 0
ORDER BY
  domain_name,
  order_name,
  start_date,
  end_date;

SELECTGROUP BY 절에 추가할 다른 관심 열:

  • billing_account_id: 고객 Cloud ID를 나타냅니다.
  • customer_name: API 호출에 사용할 수 있는 고객 리소스를 나타냅니다.
  • channel_partner_name: (배급자용) 채널 파트너를 나타냅니다.
  • entitlement_name: 채널 서비스에서 사용 권한이 있는 리소스 이름입니다.
  • customer_correlation_id: 고객에 대해 정의할 수 있는 고객 관계 관리 (CRM) ID입니다.
  • usage.amount: Google Workspace 사용 가능 라이선스 수 기반 사용의 경우 유료 라이선스 수를 나타냅니다. 예를 들어 약정 구매한 사용 가능 라이선스 수 또는 탄력 요금제용으로 할당된 사용 가능 라이선스 수입니다.

쿼리 결과는 다음과 같은 점에서 CSV 인보이스와 다릅니다.

  • CSV '설명' 열은 사람이 읽을 수 있는 문자열을 사용하는 반면 BigQuery Export는 열거형 값을 사용합니다.
  • CSV '시작일/종료일' 열은 0으로 채워지지 않는 반면 (예: 5월 1일) BigQuery 쿼리는 0을 채운 값 (예: 5월 01일)을 사용합니다. 타임스탬프 값을 직접 사용할 수도 있습니다. usage_start_time은(는) 포함되지만 usage_end_time은(는) 제외됩니다.
  • CSV에는 '세금' 행이 마지막에 한 개 있는 반면 BigQuery Export에는 CSV '세금' 행과 같은 금액에 이르기까지 합산되는 구독 수준의 세금 행이 있습니다.

인보이스 PDF와 유사한 오프라인 주문 결제 데이터 보기 (미리보기)

오프라인 주문 (Partner Sales Console을 사용하지 않고 주문하는 주문)도 처리하는 리셀러인 경우 인보이스 CSV 파일과 유사한 열이 있는 결제 데이터를 볼 수 있습니다.

SELECT
  billing_account_id AS customer_name,
  service.description AS sku_name,
  sku.id AS sku_id,
  FORMAT_TIMESTAMP('%b %d', usage_start_time, 'America/Los_Angeles')
    AS start_date,
  FORMAT_TIMESTAMP('%b %d', usage_end_time, 'America/Los_Angeles')
    AS end_date,
  SUM(usage.amount_in_pricing_unit) AS quantity,
  SUM(cost) AS amount,
FROM `PROJECT_ID.DATASET_NAME.reseller_billing_offline_orders_detailed_export_v0`
WHERE
  export_time BETWEEN TIMESTAMP(START_DATE)
    AND TIMESTAMP(END_DATE)
  AND payer_billing_account_id = 'EXTERNAL_BILLING_ACCOUNT_ID'
  AND invoice.month = 'INVOICE_MONTH'
GROUP BY
  customer_name,
  sku_name,
  sku_id,
  start_date,
  end_date
HAVING amount != 0
ORDER BY
  customer_name,
  start_date,
  end_date,
  sku_id;

쿼리 결과는 다음과 같은 점에서 PDF 인보이스와 다릅니다.

  • 'America/Los_Angeles' 시간대에서 타임스탬프 값을 날짜 값으로 변환할 수 있습니다. usage_start_timeusage_end_time는 모두 배타적입니다.
  • PDF에는 현지 판매세와 주 판매세의 세금 세부 내역이 포함되어 있으며, BigQuery 내보내기에는 정기 결제 수준의 세금 항목이 포함되어 있으며, 이 항목의 합계가 전체 정기 결제의 세금 금액입니다.