Injeksi derau

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

Mempelajari manfaat penggunaan injeksi derau

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

Pemecahan masalah disederhanakan: Baris hanya dihilangkan karena persyaratan agregasi, sehingga lebih mudah untuk memecahkan masalah dan menyesuaikan kueri.

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 akan menampilkan total persentase data dengan jumlah derau yang diharapkan.

Mempelajari pengaruh derau terhadap persyaratan privasi

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

Persyaratan agregasi: Injeksi derau menghasilkan data tayangan 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 dieksekusi menggunakan derau berbagi anggaran akses data yang digunakan dengan pemeriksaan perbedaan. Seperti pemeriksaan perbedaan, jika Anda menjalankan kueri yang sama di set data yang sama beberapa 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 batasan tambahan yang lebih ketat untuk menghitung ulang hasil agregat yang sama dalam atau di seluruh kueri. Seperti anggaran akses data, Anda dapat kehilangan akses ke tanggal yang sering dikueri dalam set data; tetapi batasan karena menghitung 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 pemeriksaan privasi lebih lanjut.

Memahami pengaruh injeksi derau terhadap hasil

Ads Data Hub memasukkan derau untuk mengurangi risiko pengungkapan—risiko bahwa seseorang dapat mempelajari informasi tentang setiap pengguna. Privasi diferensial menyeimbangkan privasi dengan utilitas.

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

  • Fitur ini membatasi kontribusi pengguna outlier dalam hasil gabungan. Fungsi ini menjumlahkan setiap kontribusi pengguna dalam setiap agregasi, lalu membatasi setiap kontribusi dengan batas penjepitan minimum dan maksimum.
  • Fungsi ini menggabungkan kontribusi per pengguna yang dijepit.
  • Fungsi ini menambahkan derau ke setiap hasil agregat—hasil dari setiap panggilan fungsi agregasi di setiap baris. Skala derau acak ini sebanding dengan batas yang dijepit.
  • Fungsi ini menghitung jumlah pengguna yang berisi derau untuk setiap baris dan menghilangkan baris dengan terlalu sedikit pengguna. Hal ini mirip dengan k-anonimitas dalam mode pemeriksaan perbedaan, tetapi karena derau, tugas yang berjalan di set data yang sama dapat menghapus baris yang berbeda. Selain itu, mode derau menghapus 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 yang berisi derau dan kelompok kecil telah dieliminasi. Hal ini akan menyamarkan efek pengguna individual pada hasil yang ditampilkan.

Tentang pengekangan agregasi

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

Penjepitan implisit

Dalam penjepitan implisit, batas ditentukan secara otomatis. Anda tidak memerlukan sintaksis SQL khusus untuk menggunakan pembatas implisit. Jika satu baris memiliki rentang nilai yang lebih lebar daripada baris lainnya, pembatas 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 penjepitan dan tingkat derau yang berbeda, yang dapat membuat agregasi tersebut sulit dibandingkan.

Pembatasan 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) secara otomatis menggunakan pembatasan eksplisit dengan batas 0 dan 1.

Penguncian 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 ke semua baris. Hal ini membuat hasil dari baris yang berbeda lebih sebanding, meskipun beberapa baris mendapatkan lebih banyak derau daripada yang mungkin terjadi dengan pembatas implisit.

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

Untuk menggunakan pembatas eksplisit, tetapkan batas untuk setiap fungsi agregat yang didukung dengan menambahkan bilangan bulat yang mewakili 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 injeksi 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 derau

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 yang paling berisi derau dari dampak tertinggi hingga terendah dan kontribusinya yang sesuai terhadap derau. Ini adalah 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 untuk pekerjaan tertentu, arahkan kursor ke ikon tips privasi privacy_tip di kartu lowongan di bagian Aktivitas terbaru.

Menyesuaikan kueri

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

Berikut adalah panduan umum:

  • Luaskan rentang tanggal.
  • Tulis ulang kueri untuk mengurangi perincian data, seperti dengan mengelompokkan berdasarkan lebih sedikit parameter atau mengganti COUNTIF dengan COUNT.
  • Hapus kolom yang berisi derau.
  • 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 saat 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)).

Fungsi berikut tidak didukung secara langsung, tetapi dapat diganti dengan agregat lain dengan derau untuk mendapatkan hasil statistik. Perhatikan bahwa nilai angka hanya contoh:

  • LOGICAL_OR(...). Penggantian yang disarankan: COUNT(DISTINCT IF(..., user_id, NULL)) > 0
  • LOGICAL_AND(...). Penggantian yang disarankan: COUNT(DISTINCT IF(NOT ..., user_id, NULL)) <= 0

Tentang hasil bilangan bulat

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

Jika Anda memerlukan tingkat perincian desimal dalam hasil, hindari menulis fungsi yang menampilkan INT64–misalnya, dengan menggunakan SUM dengan input yang ditransmisikan ke FLOAT64.


Pola kueri yang didukung

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

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 dalam mode pemeriksaan perbedaan. Derau hanya dimasukkan dalam agregasi yang menggabungkan data di beberapa pengguna. Agregasi yang secara eksplisit mengelompokkan menurut user_id, atau fungsi analisis yang mempartisi menurut user_id, tidak menerima derau apa pun dan fungsi apa pun diizinkan. Agregasi tingkat pengguna yang tidak secara eksplisit mengelompokkan menurut user_id–misalnya, GROUP BY impression_id, diperlakukan sebagai agregasi lintas pengguna, sehingga derau ditambahkan.

Pengelompokan berdasarkan external_cookie tidak cukup. Meskipun external_cookie dapat digunakan untuk menggabungkan tabel *_match dengan tabel milik pelanggan, agregasi satu pengguna harus secara eksplisit mengelompokkan 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, yang 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 hal ini akan didukung, tetapi harus dihindari dalam mode pemeriksaan perbedaan. Praktik ini tidak menimbulkan masalah derau, karena setiap agregat paralel dibuat berisi derau dan difilter secara independen.

Data gabungan yang digabungkan dengan data yang tidak digabungkan

Karena Ads Data Hub hanya mendukung periode analisis yang dipartisi menurut user_id, solusi umum adalah menggabungkan hasil ini secara terpisah dan menggabungkannya sendiri sebelum menggabungkannya lagi. Kueri ini didukung dalam mode derau, dan sering kali berperforma lebih baik daripada dalam mode pemeriksaan perbedaan karena persyaratan privasi telah 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 melarang agregasi 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. (Tindakan ini tidak dianjurkan dalam mode pemeriksaan perbedaan.) Tanggal saat ini tidak dapat dipilih untuk kueri yang menggunakan injeksi derau.

Hasil berulang

Dalam mode derau, Ads Data Hub membatasi frekuensi Anda dapat mengulangi agregasi yang sama. Jika Anda mencapai batas ini, kueri mode derau akan kehilangan akses ke tanggal yang sering dikueri dalam set data. Berikut adalah contoh cara 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 menghindari hal ini dengan menggunakan data yang telah diekspor ke project BigQuery.

Perhatikan bahwa jika dua tugas mengkueri rentang tanggal yang tumpang-tindih, tugas tersebut dapat menghasilkan pengulangan jika melakukan komputasi yang sama pada pengguna yang sama. Misalnya, kueri berikut, yang dijalankan pada rentang tanggal yang tumpang-tindih, akan membuat pengulangan karena mempartisi 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 terhubung.

Contoh lain pengulangan terjadi saat data tidak bergantung pada tanggal. Kueri berikut menghasilkan pengulangan saat dijalankan pada tanggal yang tumpang-tindih, dengan kedua tugas tersebut mencakup seluruh masa aktif kampanye:

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

Dalam hal ini, Anda hanya boleh 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 secara sintaksis berbeda, tetapi menghitung nilai yang sama, agregasi tersebut 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 memiliki kondisi yang sangat mirip untuk beberapa grup pengguna, sebaiknya tulis ulang kueri agar hanya memiliki satu COUNT.

Duplikasi baris terjadi saat tabel Ads Data Hub digabungkan dengan tabel BigQuery 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 join (campaign_id, dalam hal ini).

Perhatikan bahwa membatalkan penyusunan bertingkat 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 ke lapisan pertama agregasi lintas pengguna dalam kueri. Kueri dengan beberapa lapisan agregasi diblokir:

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. Anda dapat menulis ulang kueri untuk menggabungkan kembali agregat yang berisi derau, tetapi agregat akhir mungkin memiliki derau yang jauh lebih tinggi.

Jika hal ini tidak dapat dihindari, Anda dapat menulis ulang kueri untuk 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 agregat tingkat pengguna. Jika hal ini tidak memungkinkan, kueri ini tidak didukung dalam mode derau.

ID pengguna yang tidak bergabung

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

Kueri ini tidak bergabung secara eksplisit pada kolom user_id, yang menghasilkan error validasi:

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

Hal ini dapat diperbaiki dengan menyesuaikan klausa USING untuk menyertakan user_id secara eksplisit–misalnya, USING(impression_id, user_id).

Perhatikan bahwa batasan ini hanya berlaku untuk join antartabel Ads Data Hub (kecuali tabel dimensi). Hal 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)

Union Ads Data Hub-BigQuery

Agregasi dengan derau memerlukan ID pengguna yang berperforma baik. Data milik pelanggan di BigQuery tidak memiliki ID pengguna, sehingga tidak dapat digabungkan ke agregasi derau tanpa bergabung ke tabel Ads Data Hub.

Kueri ini menghasilkan error validasi:

SELECT COUNT(*) FROM (
  SELECT 1 FROM adh.google_ads_impressions
  UNION ALL
  SELECT 1 FROM bigquery_project.dataset.table
)

Untuk memperbaikinya, Anda harus menggabungkan tabel BigQuery untuk menambah data Ads Data Hub, bukan menggabungkan, atau memisahkan data untuk menggabungkan setiap sumber secara terpisah.

Perhatikan bahwa Anda dapat menggabungkan beberapa tabel Ads Data Hub dengan data pengguna, atau beberapa tabel BigQuery milik pelanggan, tetapi Anda tidak dapat menggabungkan keduanya.

Join kanan Ads Data Hub-BigQuery

Join luar dengan data milik pelanggan dapat menyebabkan baris dengan ID pengguna yang hilang, yang mencegah derau berfungsi dengan baik.

Kedua kueri ini menghasilkan error 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 penggabungan mana pun akan berfungsi jika urutan tabel dibalik.

Ringkasan Baris yang Difilter

Spesifikasi ringkasan baris yang difilter tidak didukung dalam mode derau. Fitur ini sering kali tidak diperlukan dengan derau karena rasio pemfilteran yang lebih rendah dan kurangnya 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 lengkap untuk membandingkan estimasi 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 memiliki derau secara independen dan nilai total mungkin tidak jumlahnya sama, tetapi jumlah total sering kali lebih akurat daripada mengambil jumlah baris yang berisi 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).