Injeksi derau

Penyisipan derau adalah teknik yang digunakan untuk melindungi privasi pengguna saat membuat kueri database. Fitur ini berfungsi dengan menambahkan derau acak ke klausa SELECT penggabungan kueri. Derau ini melindungi privasi pengguna sekaligus memberikan hasil yang cukup akurat, sehingga tidak perlu melakukan pemeriksaan perbedaan, dan mengurangi nilai minimum agregasi yang diperlukan untuk output. Sebagian besar kueri yang ada dapat dieksekusi dalam mode derau, dengan beberapa batasan.

Mempelajari manfaat penggunaan injeksi derau

Pemeriksaan perbedaan tidak berlaku: Saat menjalankan kueri dengan penyisipan derau, Ads Data Hub tidak memfilter baris karena kemiripannya dengan set hasil sebelumnya. Artinya, Anda tetap bisa mendapatkan gambaran menyeluruh tentang data sekaligus melindungi privasi pengguna.

Pemecahan masalah lebih sederhana: Baris hanya dihilangkan karena persyaratan agregasi, sehingga pemecahan masalah dan penyesuaian kueri lebih sederhana.

Tidak ada sintaksis baru yang perlu dipelajari: Anda tidak perlu mempelajari sintaksis kueri baru atau memahami konsep privasi untuk menggunakan derau, bukan pemeriksaan perbedaan.

Akurasi hasil jelas: Tugas yang berhasil menunjukkan total persentase data dengan jumlah derau yang diharapkan.

Mempelajari pengaruh derau terhadap persyaratan privasi

Pemeriksaan perbedaan: Penyisipan derau tidak bergantung pada pemeriksaan perbedaan yang ada di Ads Data Hub. Saat Anda menggunakan injeksi derau, pemeriksaan perbedaan dinonaktifkan.

Persyaratan agregasi: Penyisipan derau menghasilkan data tayangan iklan yang diwakili oleh sekitar 20 pengguna unik atau lebih, dan data klik atau konversi yang diwakili oleh sekitar 10 pengguna unik atau lebih.

Pemeriksaan statis: Tidak ada dampak.

Anggaran dan batas kueri: Kueri yang dijalankan menggunakan derau berbagi anggaran akses data yang digunakan dengan pemeriksaan perbedaan. Seperti pemeriksaan perbedaan, jika Anda menjalankan kueri yang sama pada set data yang sama berkali-kali, Anda mungkin kehilangan akses ke tanggal yang sering dikueri dalam set data. Hal ini dapat terjadi jika Anda menjalankan kueri jendela geser, atau jika Anda membuat permintaan yang sama beberapa kali.

Mode derau menerapkan batas tambahan yang lebih ketat pada penghitungan ulang hasil gabungan yang sama dalam atau di seluruh kueri. Seperti halnya anggaran akses data, Anda dapat kehilangan akses ke tanggal yang sering dikueri dalam set data; tetapi batasan karena penghitungan ulang hasil gabungan yang sama hanya akan membatasi kueri dalam mode derau, bukan kueri dalam mode pemeriksaan perbedaan. Untuk mengetahui informasi selengkapnya, lihat Hasil berulang.

Pelajari lebih lanjut pemeriksaan privasi.

Memahami pengaruh penyisipan derau terhadap hasil

Ads Data Hub menyisipkan derau untuk mengurangi risiko pengungkapan—risiko bahwa seseorang dapat mempelajari informasi tentang pengguna perorangan. Teknologi ini menyeimbangkan privasi dengan utilitas.

Penyisipan derau di Ads Data Hub mengubah hasil kueri sebagai berikut:

  • Fitur ini membatasi kontribusi pengguna pencilan dalam hasil gabungan. Layanan ini menjumlahkan kontribusi setiap pengguna dalam setiap agregasi, lalu membatasi setiap kontribusi dengan batas penjepitan minimum dan maksimum.
  • Menggabungkan kontribusi per pengguna yang dijepit.
  • Fungsi ini menambahkan derau ke setiap hasil agregat—hasil setiap panggilan fungsi agregasi di setiap baris. Skala derau acak ini sebanding dengan batas yang dijepit.
  • Fungsi ini menghitung jumlah pengguna berderau untuk setiap baris dan menghilangkan baris dengan jumlah pengguna yang terlalu sedikit. Hal ini mirip dengan k-anonimitas dalam mode pemeriksaan perbedaan, tetapi karena noise, tugas yang berjalan pada set data yang sama dapat menghilangkan baris yang berbeda. Selain itu, mode derau menghilangkan lebih sedikit baris karena persyaratan agregasi lebih rendah (sekitar 20 versus tepat 50).

Hasil akhirnya adalah set data di mana setiap baris memiliki hasil agregat berderau dan kelompok kecil telah dieliminasi. Hal ini menyamarkan pengaruh masing-masing pengguna terhadap hasil yang ditampilkan.

Tentang pembatasan agregasi

Penyisipan derau di Ads Data Hub menggunakan pembatasan agregasi implisit atau eksplisit untuk membatasi kontribusi pencilan. Anda dapat memilih jenis penjepitan yang akan digunakan, bergantung pada kasus penggunaan Anda.

Penjepitan implisit

Dalam pembatasan implisit, batas ditentukan secara otomatis. Anda tidak memerlukan sintaksis SQL khusus untuk menggunakan pembatasan implisit. Jika satu baris memiliki rentang nilai yang lebih luas daripada baris lainnya, pembatasan implisit akan menemukan batas yang berbeda untuk baris ini. Hal ini biasanya memberikan margin error yang lebih rendah untuk setiap hasil. Di sisi lain, setiap agregasi mendapatkan batas pembatasan dan tingkat derau yang berbeda, sehingga sulit untuk dibandingkan.

Pengekangan implisit dapat gagal saat agregasi mendapatkan data dari terlalu sedikit pengguna—misalnya, panggilan COUNTIF() dengan kondisi yang jarang terjadi. Kasus ini menampilkan hasil NULL. Perhatikan juga bahwa COUNT(DISTINCT user_id) otomatis menggunakan penjepitan eksplisit dengan batas 0 dan 1.

Pembatasan eksplisit

Penjepitan eksplisit menjepit total kontribusi dari setiap pengguna ke rentang yang ditentukan. Batas eksplisit diterapkan secara seragam ke semua baris dan harus berupa nilai literal. Meskipun beberapa baris memiliki rentang kontribusi per pengguna yang lebih luas daripada yang lain, batas yang sama diterapkan pada semuanya. Hal ini membuat hasil dari baris yang berbeda lebih dapat dibandingkan, meskipun beberapa baris mendapatkan lebih banyak noise daripada yang mungkin terjadi dengan pembatasan implisit.

Pembatasan eksplisit menggunakan setengah dari jumlah derau pembatasan implisit, untuk sekumpulan batas pembatasan tertentu. Oleh karena itu, jika Anda dapat memperkirakan batas yang wajar, Anda akan mendapatkan hasil yang lebih baik dengan menyetelnya secara eksplisit.

Untuk menggunakan pembatasan eksplisit, tetapkan batas untuk setiap fungsi agregat yang didukung dengan menambahkan bilangan bulat yang merepresentasikan batas bawah dan batas atas. Contoh:

SELECT
campaign_name,
-- Set lower and upper bounds to 0 and 1, respectively
ADH.ANON_COUNT(*, contribution_bounds_per_group => (0,1))
FROM data
GROUP BY 1

Menjalankan kueri menggunakan penyisipan derau

  1. Buka laporan.
  2. Klik tombol Setelan derau privasi ke posisi Gunakan derau.
  3. Jalankan kueri.
  4. Tinjau dampak derau yang ditambahkan.
  5. Opsional: Sesuaikan kueri untuk mengurangi dampak derau.

Meninjau dampak kebisingan

Setelah tugas berhasil diselesaikan, Ads Data Hub akan menampilkan keandalan hasil dalam ringkasan privasi. Keandalan didasarkan pada persentase sel dalam output yang sangat terpengaruh oleh derau. Nilai dalam tabel hasil dianggap sangat terpengaruh jika skala derau yang ditambahkan lebih besar dari 5% hasil dalam sel.

Untuk set data output yang terpengaruh, ringkasan privasi mencantumkan sepuluh kolom paling berisik dari dampak tertinggi hingga terendah dan kontribusinya terhadap noise. Berikut perincian jumlah derau yang diharapkan.

Hasil dengan derau >5% Warna indikator Dampak
<5% Hijau Berdampak rendah
5%-15% Kuning Dampak sedang
15%-25% Orange Berdampak tinggi
>25% Merah Dampak sangat tinggi

Anda juga dapat melihat pratinjau ringkasan privasi untuk tugas laporan terbaru di halaman Beranda. Untuk melihat pratinjau privasi pekerjaan tertentu, tahan pointer di atas ikon tips privasi privacy_tip di kartu pekerjaan di bagian Aktivitas terbaru.

Menyesuaikan kueri

Hasil gabungan lebih cenderung memiliki jumlah derau yang tidak terduga jika hanya sedikit pengguna yang berkontribusi pada hasil tersebut. Hal ini dapat terjadi saat baris memiliki sedikit pengguna atau saat beberapa pengguna tidak memengaruhi hasil—misalnya, saat menggunakan fungsi COUNTIF. Berdasarkan detail derau, Anda mungkin perlu menyesuaikan kueri untuk meningkatkan persentase data dengan jumlah derau yang diharapkan.

Berikut adalah panduan umum:

  • Perluas rentang tanggal.
  • Tulis ulang kueri untuk mengurangi perincian data, seperti dengan mengelompokkan menurut lebih sedikit parameter atau mengganti COUNTIF dengan COUNT.
  • Hapus kolom yang tidak relevan.
  • Gunakan pembatasan eksplisit.

Fungsi agregat yang didukung

Fungsi agregat berikut didukung dengan derau:

  • SUM(...)
  • COUNT(*)
  • COUNT(...)
  • COUNTIF(...)
  • COUNT(DISTINCT user_id)
  • APPROX_COUNT_DISTINCT(user_id)
  • AVG(...)

Kata kunci DISTINCT hanya didukung dengan fungsi COUNT, dan hanya jika digunakan dengan referensi langsung ke kolom user_id dari tabel Ads Data Hub atau ekspresi yang menampilkan user_id atau NULL, seperti COUNT(DISTINCT IF(..., user_id, NULL)).

Tentang hasil bilangan bulat

Meskipun Ads Data Hub akan otomatis menyisipkan derau untuk fungsi agregasi ini, tanda tangan fungsi tidak berubah. Karena fungsi seperti COUNT atau SUM dari INT64 menampilkan INT64, setiap bagian desimal dari hasil yang telah diberi derau akan dibulatkan. Hal ini biasanya dapat diabaikan dibandingkan dengan ukuran hasil dan derau.

Jika Anda memerlukan perincian desimal dalam hasil, hindari penulisan fungsi yang menampilkan INT64–misalnya, dengan menggunakan SUM dengan inputnya yang di-cast ke FLOAT64.

Tentang hasil negatif

Pada prinsipnya, derau dengan nilai yang sangat kecil dapat menghasilkan angka negatif, meskipun secara semantik hal ini tidak mungkin terjadi untuk kueri. Untuk mempertahankan perilaku yang diharapkan, semua bentuk COUNT dan COUNTIF otomatis dibatasi pada nol, sehingga tidak pernah memberikan hasil negatif. Jika Anda menginginkan perilaku yang sama dengan fungsi lain, seperti SUM, Anda dapat membatasi hasil secara manual menggunakan GREATEST(0, SUM(...)).

Perubahan ini biasanya dapat diabaikan, tetapi akan menimbulkan sedikit bias positif pada hasil keseluruhan. Jika Anda perlu menghindarinya, sebaiknya gunakan ADH.ANON_COUNT, bukan COUNT, atau gunakan GROUP BY ROLLUP untuk menghitung total jumlah di seluruh baris.


Pola kueri yang didukung

Penting: Sebagian besar praktik terbaik standar Ads Data Hub masih berlaku untuk kueri yang menggunakan penyisipan derau. Secara khusus, sebaiknya Anda meninjau panduan tentang kueri berulang kali pada data yang sama.

Bagian ini menjelaskan pola kueri yang didukung saat menjalankan kueri menggunakan injeksi derau.

Agregat tingkat pengguna

Agregat tingkat pengguna yang tidak dibatasi didukung dengan cara yang sama seperti pada mode pemeriksaan perbedaan. Derau hanya disisipkan dalam agregasi yang menggabungkan data dari beberapa pengguna. Agregasi yang secara eksplisit dikelompokkan menurut user_id, atau fungsi analisis yang dipartisi menurut user_id, tidak menerima derau apa pun dan fungsi apa pun diizinkan. Agregasi tingkat pengguna yang tidak secara eksplisit dikelompokkan menurut user_id–misalnya, GROUP BY impression_id, diperlakukan sebagai agregasi lintas pengguna, sehingga noise ditambahkan.

Pengelompokan menurut external_cookie saja tidak cukup. Meskipun external_cookie dapat digunakan untuk menggabungkan tabel *_match dengan tabel milik pelanggan, setiap agregasi pengguna tunggal harus dikelompokkan secara eksplisit menurut kolom user_id, bukan hanya kolom external_cookie.

Contoh fungsi agregat:

WITH user_paths AS (
  # Grouping by user_id, no noise needed, all functions allowed
  SELECT user_id, STRING_AGG(campaign_id, ">" ORDER BY query_id.time_usec) AS path
  FROM adh.google_ads_impressions
  GROUP BY 1
)
# Noise applied here to num_users
SELECT path, COUNT(*) AS num_users
FROM user_paths
GROUP BY 1;

Contoh fungsi analisis:

WITH events AS (
  # Partitioning by user_id, no noise needed, all functions allowed
  SELECT
    campaign_id,
    ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY query_id.time_usec) AS index
  FROM adh.google_ads_impressions
)
# Noise applied here to first_impressions
SELECT campaign_id, COUNT(*) AS first_impressions
FROM events
WHERE index = 1
GROUP BY 1;

Agregat paralel

Setiap agregasi lintas pengguna menerima derau secara independen. Anda dapat menjalankan beberapa agregasi tersebut dalam satu pernyataan, menggabungkan hasil ke dalam satu tabel menggunakan JOIN atau UNION.

Contoh:

WITH result_1 AS (
  # Noise applied here to num_impressions
  SELECT campaign_id, COUNT(*) AS num_impressions
  FROM adh.google_ads_impressions
  GROUP BY 1
), result_2 AS (
  # Noise applied here to num_clicks
  SELECT campaign_id, COUNT(*) AS num_clicks
  FROM adh.google_ads_clicks
  GROUP BY 1
)
SELECT * FROM result_1 JOIN result_2 USING(campaign_id)

Perhatikan bahwa ini akan didukung, tetapi harus dihindari dalam mode pemeriksaan perbedaan. Praktik ini tidak menimbulkan masalah dengan derau, karena setiap agregat paralel diberi derau dan difilter secara independen.

Data gabungan yang digabungkan dengan data yang tidak digabungkan

Karena Ads Data Hub hanya mendukung jendela analisis yang dipartisi menurut user_id, solusi umum untuk menggabungkan hasil ini secara terpisah dan menggabungkannya sendiri sebelum menggabungkan lagi. Kueri ini didukung dalam mode derau, dan sering kali berperforma lebih baik daripada dalam mode pemeriksaan perbedaan karena persyaratan privasi diselesaikan lebih awal.

Contoh:

WITH campaign_totals AS (
  # Noise applied here to campaign_imps
  SELECT campaign_id, COUNT(*) AS campaign_imps
  FROM adh.google_ads_impressions
  GROUP BY 1
)
# Noise applied here to imps
SELECT campaign_id, demographics, campaign_imps, COUNT(*) AS imps
FROM adh.google_ads_impressions JOIN campaign_totals USING(campaign_id)
GROUP BY 1,2,3

Mode derau mencegah penggabungan ulang hasil gabungan, seperti AVG(campaign_imps).


Pola kueri yang tidak didukung

Bagian ini menjelaskan pola kueri yang tidak didukung saat menjalankan kueri menggunakan injeksi derau.

Kueri yang mencakup hari ini

Kueri mode derau tidak mendukung kueri data hari ini. (Hal ini tidak disarankan dalam mode pemeriksaan perbedaan.) Tanggal saat ini tidak dapat dipilih untuk kueri yang menggunakan penyisipan derau.

Hasil berulang

Dalam mode derau, Ads Data Hub membatasi seberapa sering Anda dapat mengulangi agregasi yang sama. Jika Anda mencapai batas ini, kueri mode derau Anda akan kehilangan akses ke tanggal yang sering dikueri dalam set data. Berikut adalah contoh bagaimana hal ini dapat terjadi.

Pengulangan kueri terjadi saat kueri yang sama dijalankan beberapa kali dengan parameter yang sama atau parameter yang sangat mirip, seperti rentang tanggal yang tumpang-tindih. Anda dapat menghindarinya dengan menggunakan data yang sudah diekspor ke project BigQuery Anda.

Perhatikan bahwa jika dua tugas mengkueri rentang tanggal yang tumpang-tindih, tugas tersebut mungkin menghasilkan pengulangan jika melakukan komputasi yang sama pada pengguna yang sama. Misalnya, kueri berikut, yang dijalankan pada rentang tanggal yang tumpang-tindih, membuat pengulangan karena melakukan partisi menurut tanggal:

SELECT DATE(TIMESTAMP_MICROS(event.event_time)) AS date,
COUNT(*) AS cnt
FROM adh.cm_dt_clicks
GROUP BY 1

Dalam hal ini, Anda harus menjalankan kueri pada segmen tanggal yang tidak berurutan.

Contoh pengulangan lainnya terjadi saat data agak independen dari tanggal. Kueri berikut menghasilkan pengulangan saat dieksekusi pada tanggal yang tumpang-tindih, dengan kedua tugas mencakup seluruh masa aktif kampanye:

SELECT campaign_id, COUNT(*) AS cnt
FROM adh.google_ads_impressions
GROUP BY 1

Dalam hal ini, Anda hanya perlu menjalankan kueri ini satu kali karena hasilnya tidak berubah.

Pengulangan agregasi terjadi saat agregasi yang sama diulang beberapa kali dalam kueri:

SELECT COUNT(*) AS cnt1, COUNT(*) AS cnt2
FROM table

Dalam hal ini, Anda harus menghapus salah satu pengulangan.

Perhatikan bahwa meskipun agregasi berbeda secara sintaksis, tetapi menghitung nilai yang sama, hal ini akan dihitung sebagai pengulangan. Dengan kata lain, jika nilai condition1 dan condition2 sama untuk semua pengguna dengan beberapa nilai key, kueri berikut akan memiliki pengulangan:

SELECT key, COUNTIF(condition1) AS cnt1, COUNTIF(condition2) AS cnt2
FROM table
GROUP BY key

Jika Anda memiliki kondisi yang sangat mirip untuk beberapa grup pengguna, Anda dapat mempertimbangkan untuk menulis ulang kueri agar hanya memiliki satu COUNT.

Duplikasi baris terjadi saat tabel Ads Data Hub digabungkan dengan tabel BigQuery sedemikian rupa sehingga setiap baris dari tabel Ads Data Hub cocok dengan beberapa baris di tabel BigQuery. Misalnya, kueri berikut menghasilkan pengulangan jika ada beberapa baris dengan ID kampanye yang sama di bq_table:

SELECT r.campaign_id, COUNT(*) AS cnt
FROM adh_table
INNER JOIN bq_table ON l.campaign_id = r.campaign_id

Dalam hal ini, Anda harus menyusun ulang kueri sehingga bq_table hanya memiliki satu baris per nilai kunci gabungan (campaign_id, dalam hal ini).

Perhatikan bahwa memisahkan array dari tabel Ads Data Hub dapat menghasilkan efek yang sama jika sebagian besar pengguna memiliki array nilai yang sama:

SELECT in_market_id, COUNT(*)
FROM adh.dv360_youtube_impressions,
UNNEST(in_market) AS in_market_id
GROUP BY 1

Pelajari praktik terbaik kueri lainnya.

Reagregasi langsung

Derau diterapkan pada lapisan pertama agregasi lintas pengguna dalam kueri. Kueri dengan beberapa lapisan agregasi akan menggabungkan hasil yang bising, sehingga agregat akhir mungkin memiliki derau yang jauh lebih tinggi. Kueri ini menerima peringatan saat validasi:

WITH layer_1 AS (
  # Noise applied here to partial_result
  SELECT campaign_id, demographics, location, COUNT(*) AS partial_result
  FROM adh.google_ads_impressions
  GROUP BY 1,2,3
  HAVING partial_result > 5
)
# Reaggregation of partial_result with no user-level data, will be rejected
SELECT campaign_id, SUM(partial_result) AS final_result
FROM layer_1
GROUP BY 1

Untuk mendapatkan hasil terbaik dari derau, hitung semua operasi lintas pengguna dalam satu agregasi. Misalnya, ambil SUM peristiwa, bukan SUM jumlah perantara.

Jika agregasi multi-layer tidak dapat dihindari, Anda dapat menyelesaikan peringatan dengan mengekspor hasil langsung dari lapisan pertama. Untuk melakukannya dalam satu tugas tanpa mengubah hasil skrip, buat tabel sementara (atau tabel yang diekspor ke project BigQuery Anda) dengan sintaksis OPTIONS(privacy_checked_export=true). Contoh:

CREATE TEMP TABLE layer_1 OPTIONS(privacy_checked_export=true) AS (
  # Noise applied here to partial_result
  SELECT campaign_id, demographics, location, COUNT(*) AS partial_result
  FROM adh.google_ads_impressions
  GROUP BY 1,2,3
  HAVING partial_result > 5
);
# Reaggregation of privacy checked data, no noise needed
SELECT campaign_id, SUM(partial_result) AS final_result
FROM layer_1
GROUP BY 1

Pelajari tabel sementara lebih lanjut.

Jika lapisan agregasi pertama terlalu terperinci untuk pemeriksaan privasi, pertimbangkan untuk menulis ulang kueri dengan agregasi tingkat pengguna. Jika hal ini tidak memungkinkan, kueri ini tidak didukung dalam mode derau.

ID pengguna yang tidak tergabung

Kueri dalam mode derau tidak boleh menggabungkan data dari pengguna terpisah ke dalam satu baris, kecuali saat melakukan agregasi dengan derau. Akibatnya, gabungan data Ads Data Hub yang tidak diagregasi harus digabungkan secara eksplisit pada kolom user_id.

Kueri ini tidak secara eksplisit menggabungkan kolom user_id, yang menghasilkan peringatan validasi:

SELECT 
FROM adh.google_ads_impressions
JOIN adh.google_ads_clicks USING(impression_id)

Penggabungan seperti ini mungkin tidak berperilaku seperti yang diharapkan karena hanya baris dengan nilai user_id yang sama yang akan cocok. Hal ini dapat diperbaiki dengan menyesuaikan klausa USING agar secara eksplisit menyertakan user_id – misalnya, USING(impression_id, user_id).

Perhatikan bahwa batasan ini hanya berlaku untuk gabungan antara tabel Ads Data Hub (kecuali tabel dimensi). Kebijakan ini tidak berlaku untuk tabel milik pelanggan. Misalnya, hal berikut diizinkan:

SELECT 
FROM adh.google_ads_impressions
JOIN bigquery_project.dataset.table USING(any_column)

Gabungan kanan Ads Data Hub-BigQuery

Gabungan luar dengan data milik pelanggan dapat menghasilkan baris dengan ID pengguna yang tidak ada, sehingga derau tidak berfungsi dengan baik.

Kedua kueri ini menghasilkan peringatan validasi karena memungkinkan baris yang tidak cocok dengan ID pengguna yang tidak ada di sisi Ads Data Hub:

SELECT 
FROM adh.google_ads_impressions
RIGHT JOIN bigquery_project.dataset.table USING(column)
SELECT 
FROM bigquery_project.dataset.table
LEFT JOIN adh.google_ads_impressions USING(column)

Perhatikan bahwa gabungan akan berfungsi jika urutan tabel dibalik. Ada juga pengecualian untuk tabel RDID yang bergabung langsung di device_id_md5. Misalnya, kueri berikut akan berfungsi tanpa peringatan:

SELECT 
FROM bigquery_project.dataset.table
LEFT JOIN adh.google_ads_impressions_rdid USING(device_id_md5)

Ringkasan Baris yang Difilter

Spesifikasi ringkasan baris yang difilter tidak didukung dalam mode derau. Fitur ini paling sering tidak diperlukan dengan derau karena rasio pemfilteran yang lebih rendah dan tidak adanya pemfilteran dari pemeriksaan perbedaan.

Jika Anda mengamati pemfilteran data yang signifikan dalam hasil derau, tingkatkan data gabungan. Anda dapat melakukan agregasi paralel di seluruh set data untuk membandingkan perkiraan total, misalnya:

SELECT campaign_name, COUNT(*)
FROM data
GROUP BY 1
UNION ALL
SELECT 'Total', COUNT(*)
FROM data
GROUP BY 1

Perhatikan bahwa jumlah total diberi derau secara independen dan total nilai mungkin tidak sama, tetapi jumlah total sering kali lebih akurat daripada mengambil jumlah baris yang diberi derau.

Tabel yang dibuat lintas mode

Tabel yang tidak diekspor di Ads Data Hub hanya dapat digunakan dengan mode privasi yang sama dengan tempat tabel tersebut dibuat. Anda tidak dapat membuat tabel dalam mode agregasi normal dan menggunakannya dalam mode derau, atau sebaliknya (kecuali jika tabel tersebut diekspor ke BigQuery terlebih dahulu).