Contoh kueri BigQuery Export

Halaman ini memberikan contoh cara membuat kueri data Layanan Saluran yang diekspor ke set data BigQuery.

Untuk mengetahui informasi selengkapnya tentang ekspor data Layanan Saluran, lihat cara menyiapkan ekspor data Layanan Saluran ke BigQuery. Untuk tips pemecahan masalah tambahan, lihat Memecahkan masalah terkait ekspor BigQuery.

Mengidentifikasi dan mengakses tabel BigQuery

Ekspor Layanan Saluran disiapkan menggunakan Partner Sales Console.

Nama tabel menggunakan format: PROJECT_ID.DATASET_NAME.reseller_billing_detailed_export_v1

Agar pengguna lain dapat melihat ekspor Layanan Channel, Anda harus menerapkan izin yang benar. Misalnya, Anda dapat menetapkan peran bigquery.dataViewer ke kredensial Anda di project, set data, atau tabel itu sendiri.

Contoh kueri

Contoh berikut menyertakan contoh kueri dan penjelasan dasar tentang cara menafsirkan hasilnya. Hasilnya berisi biaya penggunaan Google Cloud untuk setiap Pelanggan atau partner saluran yang dikonfigurasi di Partner Sales Console.

Jumlah biaya partner berdasarkan akun penagihan

Anda dapat menggunakan kueri ini untuk memverifikasi invoice yang Anda terima dari Google. Nilai cost dan credit.amount adalah jumlah untuk semua baris. Hal ini mencakup biaya penggunaan, pajak, penyesuaian, dan error pembulatan.

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;

Jumlah biaya pelanggan berdasarkan sub-akun Penagihan Cloud

Anda dapat menggunakan kueri ini untuk meringkas penggunaan yang dapat ditagih untuk setiap pelanggan. Nilai customer_cost dan credit.customer_amount menampilkan jumlah semua baris yang mewakili biaya penggunaan. Baris yang mewakili pajak, penyesuaian, dan pembulatan menampilkan nilai null.

Untuk kredit dengan type ditetapkan ke RESELLER_MARGIN, customer_amount-nya ditetapkan ke nol untuk memastikan margin tidak terlihat dalam penagihan pelanggan.

Nilai customer_cost dan credit.customer_amount menampilkan konfigurasi Penetapan harga ulang Anda. Misalnya, jika RebillingBasis untuk hak pelanggan tertentu diGoogle Cloud ditetapkan ke Direct Customer Cost minus 5%, nilai customer_cost adalah 0,95 dikalikan dengan cost. Hal ini mencerminkan pengurangan yang dikonfigurasi dari biaya Anda.

Hasil kueri ini berisi setiap sub-akun Penagihan Cloud, nama resource pelanggan Partner Sales terkait, bulan invoice, dan total penggunaan yang dapat ditagih.

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;

Jumlah biaya pelanggan menurut sub-akun Penagihan Cloud, seperti yang ditampilkan kepada pemilik sub-akun

Kueri ini menunjukkan cara angka biaya data dipetakan dengan yang dilihat pelanggan yang menjual kembali (atau Anda sebagai partner) saat mereka membuka konsol Google Cloud untuk sub-akun mereka.

  1. Untuk kredit dengan type ditetapkan ke RESELLER_MARGIN, kredit ini akan disembunyikan di tampilan SBA.
  2. Untuk biaya dengan cost_type pajak, biaya ini akan disembunyikan di tampilan SBA. Reseller harus menambahkan Pajak yang berlaku secara terpisah ke invoice Penjualan Kembali mereka.

Terkadang, cost_at_list dapat berupa null untuk beberapa kumpulan data, sehingga hasil ini berbeda dengan yang Anda lihat di konsol Google Cloud . Jika hal ini terjadi, gunakan IFNULL(cost_at_list, cost) sebagai gantinya. Untuk mengetahui informasi selengkapnya, lihat Tagihan tanpa biaya listingan.

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;

Jumlah biaya partner saluran berdasarkan akun penagihan

Jika Anda adalah distributor, Anda dapat menggunakan kueri ini untuk meringkas penggunaan yang dapat ditagih untuk setiap partner saluran. Nilai channel_partner_cost dan credit.channel_partner_amount menampilkan jumlah semua baris yang mewakili biaya penggunaan. Baris yang mewakili pajak, penyesuaian, dan pembulatan menampilkan nilai null.

Untuk kredit dengan type ditetapkan ke RESELLER_MARGIN, channel_partner_amount-nya ditetapkan ke nol untuk memastikan margin tidak terlihat di penagihan partner saluran.

Nilai channel_partner_cost dan credit.channel_partner_amount menampilkan konfigurasi Penetapan ulang harga. Misalnya, jika RebillingBasis untuk partner saluran tertentu ditetapkan ke Direct Customer Cost minus 5%, nilai channel_partner_cost adalah 0,95 dikalikan dengan cost. Hal ini mencerminkan pengurangan yang dikonfigurasi dari biaya Anda.

Hasil kueri ini berisi setiap akun penagihan, partner saluran resource_name yang terlampir ke pelanggan dalam akun penagihan tersebut, bulan invoice, dan total penggunaan yang dapat ditagih.

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;

Jumlah biaya yang tidak ditetapkan ke pelanggan

Anda dapat menggunakan kueri ini untuk meringkas biaya yang tidak ditautkan ke pelanggan Layanan Saluran, tetapi mungkin mewakili penggunaan yang dapat ditagih kepada pelanggan lain. Nilai cost dan credit.amount menunjukkan jumlah semua baris dengan billing_account_id dan payer_billing_account_id yang berbeda. billing_account_id mewakili sub-akun Penagihan Cloud.

Untuk kredit dengan type ditetapkan ke RESELLER_MARGIN, kueri ini mengecualikan jumlah kredit. Jumlah kredit ditujukan untuk alokasi Anda dan tidak dianggap sebagai biaya pelanggan. Jumlah RESELLER_MARGIN disertakan dalam biaya Anda dan ditampilkan di invoice yang dikirim oleh 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;

Tampilan data Google Workspace mirip dengan CSV invoice

Jika Anda adalah reseller Google Workspace, Anda mungkin mendapatkan tampilan data penagihan Google Workspace dengan kolom yang serupa dengan file CSV invoice.

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;

Kolom menarik lainnya yang akan ditambahkan ke klausa SELECT dan GROUP BY:

  • billing_account_id: Merepresentasikan ID Identitas Cloud Pelanggan.
  • customer_name: Merepresentasikan resource pelanggan yang dapat digunakan dalam panggilan API.
  • channel_partner_name: (Untuk distributor) Mewakili partner channel.
  • entitlement_name: Nama resource Hak di Layanan Saluran.
  • customer_correlation_id: ID Pengelolaan Hubungan Pelanggan (CRM) yang dapat Anda tentukan untuk pelanggan.
  • usage.amount: Untuk penggunaan berbasis kursi Google Workspace, ini menunjukkan kursi berbayar. Misalnya, slot yang dibeli untuk komitmen atau jumlah slot yang ditetapkan untuk langganan fleksibel.

Hasil kueri berbeda dengan invoice CSV dengan cara berikut:

  • Kolom "Deskripsi" CSV menggunakan string yang dapat dibaca manusia, sedangkan ekspor BigQuery menggunakan nilai enum.
  • Kolom "Tanggal mulai/Akhir" CSV tidak diisi dengan nol (misalnya, 1 Mei), sedangkan kueri BigQuery menggunakan nilai yang diisi (misalnya, 01 Mei). Anda juga dapat menggunakan nilai stempel waktu secara langsung. usage_start_time bersifat inklusif, tetapi usage_end_time bersifat eksklusif.
  • CSV memiliki satu baris "Pajak" di bagian akhir, sedangkan ekspor BigQuery memiliki baris pajak di tingkat langganan yang jumlahnya sama dengan baris "Pajak" CSV.

Tampilan data penagihan pesanan offline yang mirip dengan PDF invoice (pratinjau)

Jika Anda adalah reseller yang juga melakukan pemesanan offline (pesanan yang tidak Anda lakukan menggunakan Partner Sales Console), Anda bisa mendapatkan tampilan data penagihan dengan kolom yang mirip dengan file CSV invoice.

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;

Hasil kueri berbeda dengan invoice PDF dalam hal berikut:

  • Anda dapat mengonversi nilai stempel waktu menjadi nilai tanggal di zona waktu "America/Los_Angeles". usage_start_time dan usage_end_time bersifat eksklusif.
  • PDF ini memiliki perincian pajak yang mendetail tentang pajak penjualan lokal versus negara bagian, dengan ekspor BigQuery memiliki baris pajak di tingkat langganan yang jumlahnya sama dengan jumlah pajak untuk seluruh langganan.