การแทรกเสียงรบกวน

การแทรกเสียงรบกวนเป็นเทคนิคที่ใช้ในการปกป้องความเป็นส่วนตัวของผู้ใช้เมื่อทำการค้นหาฐานข้อมูล เครื่องมือนี้จะทำงานด้วยการเพิ่มสัญญาณรบกวนแบบสุ่มลงในประโยค SELECT แบบรวมของคำค้นหา สัญญาณรบกวนนี้จะปกป้องความเป็นส่วนตัวของผู้ใช้ ขณะเดียวกันก็ให้ผลลัพธ์ที่แม่นยำที่สมเหตุสมผล ซึ่งขจัดความจำเป็นในการตรวจสอบความแตกต่าง และลดเกณฑ์การรวมที่จำเป็นสำหรับเอาต์พุต การค้นหาที่มีอยู่ส่วนใหญ่จะดำเนินการได้ในโหมดนอยส์โดยมีข้อจำกัดบางประการ

ดูประโยชน์ของการใช้การแทรกสัญญาณรบกวน

ไม่ใช้การตรวจสอบความแตกต่าง: เมื่อเรียกใช้การค้นหาที่มีการแทรกสัญญาณรบกวน Ads Data Hub จะไม่กรองแถวเนื่องจากความคล้ายคลึงกับชุดผลลัพธ์ก่อนหน้า ซึ่งหมายความว่าคุณยังคงสามารถดูภาพรวมของข้อมูลได้ ขณะที่ปกป้องความเป็นส่วนตัวของผู้ใช้

การแก้ปัญหาเป็นเรื่องง่าย: ระบบจะไม่ใส่แถวเนื่องจากข้อกําหนดในการรวมเท่านั้น ซึ่งทำให้แก้ปัญหาและปรับการค้นหาได้ง่ายขึ้น

ไม่มีไวยากรณ์ใหม่ให้เรียนรู้: คุณไม่จำเป็นต้องเรียนรู้ไวยากรณ์คำค้นหาใหม่หรือความเชี่ยวชาญในแนวคิดด้านความเป็นส่วนตัวเพื่อใช้สัญญาณรบกวนแทนการตรวจสอบความแตกต่าง

ความแม่นยำของผลลัพธ์ชัดเจน: งานที่ประสบความสำเร็จจะแสดงเปอร์เซ็นต์ข้อมูลทั้งหมดพร้อมปริมาณสัญญาณรบกวนที่คาดไว้

ดูว่าเสียงรบกวนมีผลต่อข้อกำหนดด้านความเป็นส่วนตัวอย่างไร

การตรวจสอบความแตกต่าง: การแทรกเสียงรบกวนไม่ได้อาศัยการตรวจสอบความแตกต่างที่มีอยู่ใน Ads Data Hub เมื่อใช้การแทรกเสียงรบกวน ระบบจะปิดใช้การตรวจสอบความแตกต่าง

ข้อกําหนดในการรวม: การแทรกเสียงรบกวนจะเอาต์พุตข้อมูลการแสดงผลจากผู้ใช้ที่ไม่ซ้ำประมาณ 20 รายขึ้นไป และข้อมูลการคลิกหรือข้อมูล Conversion ที่แสดงโดยผู้ใช้ที่ไม่ซ้ำอย่างน้อย 10 รายโดยประมาณ

การตรวจสอบแบบคงที่: ไม่มีผลกระทบ

งบประมาณและขีดจำกัดการค้นหา: การค้นหาที่ดำเนินการโดยใช้สัญญาณรบกวนจะแชร์งบประมาณการเข้าถึงข้อมูลที่ใช้กับการตรวจสอบความแตกต่าง เช่นเดียวกับการตรวจสอบความแตกต่าง หากคุณเรียกใช้การค้นหาเดียวกันในชุดข้อมูลเดียวกันหลายครั้ง คุณอาจเสียสิทธิ์เข้าถึงวันที่ที่มีการค้นหาบ่อยในชุดข้อมูล กรณีนี้อาจเกิดขึ้นเมื่อคุณเรียกใช้คำค้นหา ในหน้าต่างเลื่อนหรือส่งคำขอเดียวกันหลายครั้ง

โหมดเสียงรบกวนจะมีข้อจำกัดเพิ่มเติมและเข้มงวดมากขึ้นในการคำนวณผลลัพธ์รวมแบบเดียวกันภายในหรือระหว่างคำค้นหา เช่นเดียวกับงบประมาณการเข้าถึงข้อมูล คุณอาจสูญเสียสิทธิ์เข้าถึงวันที่ที่มีการค้นหาบ่อยในชุดข้อมูล แต่ข้อจำกัดเนื่องจากการคำนวณผลลัพธ์แบบรวมอีกครั้งจะจำกัดเฉพาะการค้นหาในโหมดสัญญาณรบกวนเท่านั้น ไม่ได้จำกัดการค้นหาในโหมดตรวจสอบความแตกต่าง ดูข้อมูลเพิ่มเติมได้ที่ผลการค้นหาที่ซ้ำกัน

ดูข้อมูลเพิ่มเติมเกี่ยวกับการตรวจสอบด้านความเป็นส่วนตัว

ทําความเข้าใจผลกระทบของการแทรกสัญญาณรบกวนต่อผลลัพธ์

Ads Data Hub แทรกสัญญาณรบกวนเพื่อลดความเสี่ยงในการเปิดเผยข้อมูล ซึ่งเป็นความเสี่ยงที่ผู้อื่นจะดูข้อมูลเกี่ยวกับผู้ใช้แต่ละคนได้ สร้างความสมดุลระหว่างความเป็นส่วนตัว กับประโยชน์ใช้สอย

การแทรกเสียงรบกวนใน Ads Data Hub จะเปลี่ยนผลการค้นหาดังนี้

  • ซึ่งจะจำกัดการมีส่วนร่วมของผู้ใช้ในผลลัพธ์โดยรวม ซึ่งจะรวมการมีส่วนร่วมของผู้ใช้แต่ละรายในการรวมแต่ละครั้ง แล้วกำหนดการมีส่วนร่วมแต่ละรายการสูงสุดด้วยขอบเขตการบีบขั้นต่ำและสูงสุด
  • โดยจะรวบรวมข้อมูลการมีส่วนร่วมของผู้ใช้แบบบีบ
  • ซึ่งจะเพิ่มสัญญาณรบกวนในผลลัพธ์รวมแต่ละรายการ ซึ่งเป็นผลลัพธ์ของการเรียกใช้ฟังก์ชันการรวมแต่ละครั้งในแต่ละแถว ขนาดของเสียงแบบสุ่มนี้จะปรับตามขอบเขตที่บีบ
  • ระบบจะคำนวณจำนวนผู้ใช้ที่มีเสียงดังในแต่ละแถว และตัดแถวที่มีผู้ใช้น้อยเกินไปออก กรณีนี้คล้ายกับ k-anonymity ในโหมดการตรวจสอบความแตกต่าง แต่เนื่องจากสัญญาณรบกวน งานที่ทำงานในชุดข้อมูลเดียวกันจึงอาจมีแถวที่แตกต่างกัน นอกจากนี้ โหมดสัญญาณรบกวนจะลดแถวลงเนื่องจากข้อกําหนดในการรวมนั้นต่ำกว่า (ประมาณ 20 เทียบกับ 50 แถวพอดี)

ผลลัพธ์สุดท้ายคือชุดข้อมูลที่แต่ละแถวมีผลสรุปรวมที่มีเสียงรบกวนและถูกกำจัดกลุ่มขนาดเล็กออกไป ซึ่งจะมาสก์ผลกระทบของผู้ใช้แต่ละคนต่อผลลัพธ์ที่กลับมา

เกี่ยวกับการบีบการรวม

การแทรกเสียงรบกวนใน Ads Data Hub ใช้การบีบการรวมแบบโดยนัยหรือแบบชัดเจนเพื่อจำกัดการมีส่วนร่วมของค่าผิดปกติ คุณสามารถเลือกประเภทของการหนีบที่จะใช้ โดยขึ้นอยู่กับกรณีการใช้งาน

การบีบโดยปริยาย

ในการบีบโดยปริยาย ระบบจะกำหนดขอบเขตโดยอัตโนมัติ คุณไม่จำเป็นต้องใช้ไวยากรณ์ SQL พิเศษเพื่อใช้การบีบโดยปริยาย หากแถวหนึ่งมีช่วงของค่ากว้างกว่าอีกแถวหนึ่ง ขอบเขตโดยนัยจะค้นหาขอบเขตที่แตกต่างกันสำหรับแถวเหล่านี้ ซึ่งโดยทั่วไปจะให้ส่วนต่างความผิดพลาดน้อยกว่าสำหรับผลลัพธ์แต่ละรายการ ในทางกลับกัน การรวมข้อมูลแต่ละรายการจะมีขอบเขตในการบีบและระดับสัญญาณรบกวนแตกต่างกัน ซึ่งอาจทำให้เปรียบเทียบได้ยาก

การปรับแบบโดยนัยอาจล้มเหลวเมื่อการรวมได้รับข้อมูลจากผู้ใช้จำนวนน้อยเกินไป เช่น การเรียก COUNTIF() ที่มีเงื่อนไขที่พบไม่บ่อย กรณีเหล่านี้จะแสดงผลการค้นหา NULL และโปรดทราบว่า COUNT(DISTINCT user_id) ใช้การบีบอย่างชัดแจ้งโดยอัตโนมัติโดยมีขอบเขตของ 0 และ 1

การบีบอย่างชัดเจน

การบีบอย่างชัดแจ้งจะบีบการมีส่วนร่วมทั้งหมดจากผู้ใช้แต่ละรายไปยังช่วงที่ระบุ ขอบเขตที่ชัดเจนจะใช้กับแถวทั้งหมดอย่างเท่าเทียมกัน และต้องเป็นค่าตามตัวอักษร แม้ว่าบางแถวจะมีช่วงการมีส่วนร่วมต่อผู้ใช้ที่กว้างกว่ากลุ่มอื่นๆ แต่ระบบจะใช้ขอบเขตเดียวกันกับทุกแถว วิธีนี้จะช่วยให้ผลการค้นหาจากแถวต่างๆ เปรียบเทียบกันได้ แม้ว่าบางแถวจะมีเสียงรบกวนมากกว่าการบีบโดยปริยาย

การบีบแบบชัดจะใช้นอยส์มากเป็นครึ่งหนึ่งของการจับโดยปริยาย สำหรับชุดของขอบเขตการบีบที่กำหนด ดังนั้น หากประมาณขอบเขตที่สมเหตุสมผลได้ คุณจะได้รับผลลัพธ์ที่ดีขึ้นหากตั้งค่าขอบเขตไว้อย่างชัดเจน

หากต้องการใช้การบีบที่ชัดเจน ให้กำหนดขอบเขตของฟังก์ชันการรวมที่รองรับแต่ละรายการโดยเพิ่มจำนวนเต็มที่แสดงถึงขอบเขตล่างและขอบเขตบน เช่น

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

ดำเนินการค้นหาโดยใช้การแทรกสัญญาณรบกวน

  1. เขียนคำค้นหาหรือเปิดคำค้นหาที่มีอยู่ หากต้องการดูว่าฟังก์ชันรวมรายการใดใช้งานได้ โปรดดูฟังก์ชันที่รองรับ
  2. ในตัวแก้ไขการค้นหา ให้คลิกเรียกใช้ ป้อนรายละเอียดของงานใหม่
  3. คลิกสลับการตั้งค่าความเป็นส่วนตัวเป็นตำแหน่งใช้สัญญาณรบกวน
  4. เรียกใช้การสืบค้นข้อมูล
  5. ตรวจสอบสัญญาณรบกวนที่เพิ่ม
  6. ไม่บังคับ: ปรับคำค้นหาเพื่อลดผลกระทบต่อข้อผิดพลาด

ตรวจสอบผลกระทบของข้อผิดพลาด

เมื่อการค้นหาเสร็จสมบูรณ์ Ads Data Hub จะแสดงความน่าเชื่อถือของผลลัพธ์ โดยอิงตามจำนวนเซลล์ในเอาต์พุตที่มีปริมาณสัญญาณรบกวนตามที่คาดไว้ ค่าในตารางผลลัพธ์จะถือว่าได้รับผลกระทบอย่างมากหากขนาดของสัญญาณรบกวนที่เพิ่มสูงกว่า 5% ของผลลัพธ์ในเซลล์ ดูช่วงผลกระทบในตารางต่อไปนี้

สำหรับชุดข้อมูลเอาต์พุตที่ได้รับผลกระทบ แท็บรายละเอียดจะแสดงคอลัมน์ที่มีเสียงมากที่สุด 10 คอลัมน์จากผลกระทบสูงสุดไปต่ำสุดและผลกระทบที่เกี่ยวข้องกับสัญญาณรบกวน นี่คือรายละเอียดของปริมาณสัญญาณรบกวนที่คาดไว้

ข้อมูลพร้อมปริมาณสัญญาณรบกวนที่คาดไว้ สีของตัวระบุ ผลลัพธ์
มากกว่า 95% สีเขียว ผลกระทบต่ำ
85%-95% สีเหลือง ผลกระทบปานกลาง
75%-85% Orange ผลกระทบสูง
น้อยกว่า 75% สีแดง ผลกระทบสูงมาก

วิธีดูข้อมูลโดยละเอียดเกี่ยวกับผลกระทบของสัญญาณรบกวน

  1. คลิกรายงาน
  2. เลือกรายงานจากรายการ เคล็ดลับเครื่องมือสรุปด้านความเป็นส่วนตัวจะระบุเปอร์เซ็นต์ของผลลัพธ์ซึ่งมีปริมาณสัญญาณรบกวนที่คาดไว้ โดยสอดคล้องกับปริมาณสัญญาณรบกวนที่เพิ่มมากกว่า 5% ของผลลัพธ์
  3. หากต้องการดูข้อมูลเพิ่มเติม ให้คลิกงาน > รายละเอียด
  4. ดูข้อความเกี่ยวกับความเป็นส่วนตัวในรายละเอียดงาน ผลลัพธ์จะอยู่ในหมวดหมู่ใดหมวดหมู่หนึ่ง ตามรายการที่แสดง
  5. หากจำเป็น ให้ปรับข้อความค้นหาเพื่อปรับปรุงผลลัพธ์

คำค้นหาที่ปรับเปลี่ยน

ผลลัพธ์โดยรวมมีแนวโน้มที่จะมีปริมาณสัญญาณรบกวนที่คาดไม่ถึงเมื่อผู้ใช้จำนวนน้อยส่งผลต่อผลลัพธ์เหล่านั้น กรณีนี้อาจเกิดขึ้นได้เมื่อแถวมีผู้ใช้น้อยหรือเมื่อผู้ใช้บางรายไม่ได้ส่งผลต่อผลลัพธ์ เช่น เมื่อใช้ฟังก์ชัน COUNTIF คุณอาจต้องปรับการค้นหาเพื่อเพิ่มเปอร์เซ็นต์ของข้อมูลด้วยปริมาณสัญญาณรบกวนที่คาดไว้ตามรายละเอียดของสัญญาณรบกวน

หลักเกณฑ์ทั่วไปมีดังนี้

  • ขยายช่วงวันที่
  • เขียนการค้นหาใหม่เพื่อลดรายละเอียดของข้อมูล เช่น จัดกลุ่มตามพารามิเตอร์น้อยลงหรือแทนที่ COUNTIF ด้วย COUNT
  • นำคอลัมน์ที่มีเสียงดังออก
  • ใช้การบีบอย่างชัดแจ้ง

ฟังก์ชันการรวมที่รองรับ

ฟังก์ชันการรวมข้อมูลต่อไปนี้รองรับสัญญาณรบกวน:

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

คีย์เวิร์ด DISTINCT รองรับเฉพาะฟังก์ชัน COUNT เท่านั้น และเมื่อใช้กับการอ้างอิงโดยตรงไปยังคอลัมน์ user_id จากตาราง Ads Data Hub หรือนิพจน์ที่ส่งคืน user_id หรือ NULL เช่น COUNT(DISTINCT IF(..., user_id, NULL))

ระบบไม่รองรับฟังก์ชันต่อไปนี้โดยตรง แต่สามารถแทนที่ด้วยข้อมูลรวมอื่นๆ ที่มีสัญญาณรบกวนเพื่อให้ได้ผลลัพธ์ทางสถิติ โปรดทราบว่าค่าตัวเลข เป็นเพียงตัวอย่างเท่านั้น

  • LOGICAL_OR(...) การเปลี่ยนที่แนะนำ: COUNT(DISTINCT IF(..., user_id, NULL)) > 0
  • LOGICAL_AND(...) การเปลี่ยนที่แนะนำ: COUNT(DISTINCT IF(NOT ..., user_id, NULL)) <= 0

เกี่ยวกับผลลัพธ์จำนวนเต็ม

แม้ว่า Ads Data Hub จะแทรกสัญญาณรบกวนสำหรับฟังก์ชันการรวมเหล่านี้โดยอัตโนมัติ แต่ลายเซ็นของฟังก์ชันจะไม่เปลี่ยนแปลง เนื่องจากฟังก์ชันอย่าง COUNT หรือ SUM ของ INT64 แสดงผล INT64 ดังนั้นส่วนทศนิยมของผลลัพธ์ที่รบกวนจะปัดเศษ ซึ่งมักจะไม่สำคัญเมื่อเทียบกับขนาดของผลการค้นหาและสัญญาณรบกวน

หากคุณต้องการรายละเอียดของทศนิยมในผลลัพธ์ ให้หลีกเลี่ยงการเขียนฟังก์ชันที่แสดงผล INT64 เช่น ด้วยการใช้ SUM กับอินพุตของอินพุตไปที่ FLOAT64


รูปแบบการค้นหาที่รองรับ

สำคัญ: แนวทางปฏิบัติแนะนำมาตรฐานส่วนใหญ่ของ Ads Data Hub ยังคงมีผลกับคำค้นหาที่ใช้การแทรกสัญญาณรบกวน โดยเฉพาะอย่างยิ่ง เราขอแนะนำให้คุณอ่านคำแนะนำเกี่ยวกับการค้นหาข้อมูลเดียวกันซ้ำๆ

ส่วนนี้จะอธิบายรูปแบบคำค้นหาที่รองรับเมื่อเรียกใช้คำค้นหาโดยใช้การแทรกสัญญาณรบกวน

การรวบรวมข้อมูลระดับผู้ใช้

ระบบจะรองรับการรวบรวมข้อมูลระดับผู้ใช้แบบไม่จำกัดในวิธีเดียวกันกับที่ใช้ในโหมดการตรวจสอบที่แตกต่างกัน ระบบจะใส่ Noise ในการรวมข้อมูลจากผู้ใช้หลายๆ รายเท่านั้น การรวมที่จัดกลุ่มตาม user_id อย่างชัดเจน หรือฟังก์ชันการวิเคราะห์ที่แบ่งพาร์ติชันตาม user_id จะไม่รับสัญญาณรบกวนใดๆ และอนุญาตให้ใช้ฟังก์ชันใดๆ ได้ การรวมระดับผู้ใช้ที่ไม่ได้จัดกลุ่มตาม user_id อย่างชัดแจ้ง เช่น GROUP BY impression_id จะถือว่าเป็นการรวมแบบข้ามผู้ใช้ ดังนั้นจึงมีการเพิ่มสัญญาณรบกวน

การจัดกลุ่มตาม external_cookie นั้นไม่เพียงพอ แม้ว่าจะใช้ external_cookie เพื่อรวมตาราง *_match กับตารางที่ลูกค้าเป็นเจ้าของได้ แต่การรวมผู้ใช้รายเดียวควรจัดกลุ่มตามคอลัมน์ user_id อย่างชัดเจน ไม่ใช่เพียงแค่คอลัมน์ external_cookie

ตัวอย่างของฟังก์ชันรวบรวม

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;

ตัวอย่างฟังก์ชัน Analytics

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;

ข้อมูลรวมแบบขนาน

การรวมข้อมูลข้ามผู้ใช้แต่ละรายการจะได้รับสัญญาณรบกวนโดยอิสระ คุณจะเรียกใช้การรวมหลายรายการได้ในคำสั่งเดียว ซึ่งรวมผลลัพธ์ไว้ในตารางเดียวโดยใช้ JOIN หรือ UNION

ตัวอย่าง

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)

โปรดทราบว่าวิธีนี้จะได้ผล แต่ควรหลีกเลี่ยงในโหมดการตรวจสอบที่แตกต่างกัน กรณีนี้จะไม่เป็นปัญหากับเสียงรบกวน เนื่องจากข้อมูลรวมแบบขนานแต่ละรายการจะมีเสียงและกรองออกโดยแยกจากกัน

ข้อมูลรวมที่ผนวกเข้ากับข้อมูลแบบไม่รวม

เนื่องจาก Ads Data Hub รองรับเฉพาะหน้าต่างวิเคราะห์ที่แบ่งพาร์ติชันตาม user_id จึงเป็นวิธีแก้ปัญหาทั่วไปในการรวมผลลัพธ์เหล่านี้แยกกันและรวมผลลัพธ์ด้วยตนเองก่อนที่จะรวมอีกครั้ง การค้นหาเหล่านี้ได้รับการรองรับในโหมดนอยส์ และมักจะทำงานได้ดีกว่าในโหมดตรวจสอบที่ต่างกัน เนื่องจากข้อกำหนดด้านความเป็นส่วนตัวได้รับการแก้ไขเร็วกว่าเดิม

ตัวอย่าง

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

โหมดเสียงรบกวนไม่อนุญาตการรวมผลลัพธ์รวมอีกครั้ง เช่น AVG(campaign_imps)


รูปแบบประโยคที่ไม่รองรับ

ส่วนนี้อธิบายรูปแบบคำค้นหาที่ไม่รองรับเมื่อเรียกใช้คำค้นหาโดยใช้การแทรกสัญญาณรบกวน

คำค้นหาที่ครอบคลุมในปัจจุบัน

การค้นหาโหมดเสียงรบกวนไม่รองรับการค้นหาข้อมูลของวันปัจจุบัน (ซึ่งไม่แนะนำในโหมดการตรวจสอบความแตกต่าง) ไม่สามารถเลือกวันที่ปัจจุบันสำหรับคำค้นหาที่ใช้การแทรกสัญญาณรบกวน

ผลลัพธ์ซ้ำ

ในโหมดนอยส์ Ads Data Hub จะจำกัดความถี่ในการรวบรวมข้อมูลเดิมซ้ำ หากถึงขีดจำกัดเหล่านี้ การค้นหาในโหมดสัญญาณรบกวนจะเสียสิทธิ์เข้าถึงวันที่ค้นหาบ่อยในชุดข้อมูล ตัวอย่างว่าปัญหานี้เกิดขึ้นได้อย่างไร

การกล่าวซ้ำๆ กับคำค้นหาเกิดขึ้นเมื่อเรียกใช้คำค้นหาเดียวกันหลายครั้งด้วยพารามิเตอร์เดียวกันหรือพารามิเตอร์ที่คล้ายกันมาก เช่น ช่วงวันที่ที่ทับซ้อนกัน คุณหลีกเลี่ยงปัญหานี้ได้โดยใช้ข้อมูลที่ส่งออกไปยังโปรเจ็กต์ BigQuery อยู่แล้ว

โปรดทราบว่าหากงาน 2 รายการค้นหาช่วงวันที่ที่ทับซ้อนกัน งานเหล่านั้นอาจทำให้เกิดการดำเนินการซ้ำได้หากมีการคำนวณแบบเดียวกันกับผู้ใช้รายเดียวกัน ตัวอย่างเช่น การค้นหาต่อไปนี้ซึ่งดำเนินการในช่วงวันที่ที่ซ้อนทับกันจะสร้างข้อความซ้ำเนื่องจากแบ่งพาร์ติชันตามวันที่

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

ในกรณีนี้ คุณควรเรียกใช้การค้นหาในกลุ่มวันที่ที่ไม่ต่อเนื่อง

อีกตัวอย่างหนึ่งของการกล่าวซ้ำๆ เกิดขึ้นเมื่อข้อมูลค่อนข้างเป็นอิสระจากวันที่ ข้อความค้นหาต่อไปนี้ทำให้เกิดการเกิดซ้ำเมื่อดำเนินการในวันที่ที่ทับซ้อนกัน โดยที่ทั้ง 2 งานครอบคลุมตลอดอายุของแคมเปญ

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

ในกรณีนี้ คุณควรเรียกใช้การค้นหานี้เพียงครั้งเดียวเนื่องจากผลลัพธ์จะไม่เปลี่ยนแปลง

การกล่าวซ้ำๆ ของการรวมจะเกิดขึ้นเมื่อการรวมข้อมูลเดียวกันซ้ำกันหลายครั้งในคำค้นหาเดียว

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

ในกรณีนี้ คุณควรนำคำกล่าวซ้ำออก 1 รายการ

โปรดทราบว่าแม้การรวมมีไวยากรณ์แตกต่างกันแต่คำนวณค่าเดียวกัน ก็จะนับเป็นการทำซ้ำ กล่าวคือ หากค่าของ condition1 และ condition2 เหมือนกันสำหรับผู้ใช้ทั้งหมดที่มีค่าเป็น key คำค้นหาต่อไปนี้จะมีการกล่าวซ้ำๆ

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

หากคุณมีเงื่อนไขที่คล้ายกันมากสำหรับผู้ใช้บางกลุ่ม คุณอาจพิจารณาการเขียนคำค้นหาใหม่เพื่อให้มี COUNT เพียงรายการเดียว

การทำซ้ำแถวจะเกิดขึ้นเมื่อมีการรวมตาราง Ads Data Hub กับตาราง BigQuery ในลักษณะที่แต่ละแถวจากตาราง Ads Data Hub ตรงกับแถวหลายแถวในตาราง BigQuery เช่น การค้นหาต่อไปนี้จะสร้างข้อความซ้ำหากมีหลายแถวที่มีรหัสแคมเปญเดียวกันใน bq_table

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

ในกรณีนี้ คุณควรปรับโครงสร้างการค้นหาเพื่อให้ bq_table มีเพียง 1 แถวต่อค่าคีย์สำหรับการรวม (campaign_id ในกรณีนี้)

โปรดทราบว่าการยกเลิกการซ้อนอาร์เรย์จากตาราง Ads Data Hub อาจให้ผลลัพธ์แบบเดียวกันหากผู้ใช้ส่วนใหญ่มีค่าอาร์เรย์เหมือนกัน

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

ดูข้อมูลเกี่ยวกับแนวทางปฏิบัติแนะนำอื่นๆ สำหรับคำค้นหา

การรวมอีกครั้งโดยตรง

ระบบจะใช้เสียงรบกวนกับเลเยอร์แรกของการรวมผู้ใช้แบบข้ามผู้ใช้ในการค้นหา ข้อความค้นหาที่มีการรวมข้อมูลหลายชั้นจะถูกบล็อก:

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

คำนวณการดำเนินการแบบข้ามผู้ใช้ทั้งหมดภายในการรวมครั้งเดียวเพื่อให้ได้ผลลัพธ์ที่ดีที่สุดจากข้อผิดพลาด ตัวอย่างเช่น หา SUM ของเหตุการณ์แทน SUM ของจํานวนกลาง คุณอาจเขียนข้อความค้นหาใหม่เพื่อรวบรวมข้อมูลที่มีเสียงรบกวนได้ แต่ข้อมูลรวมสุดท้ายอาจมีสัญญาณรบกวนที่สูงกว่ามาก

หากหลีกเลี่ยงไม่ได้ คุณอาจเขียนคำค้นหาใหม่เพื่อส่งออกผลลัพธ์โดยตรงจากเลเยอร์แรกแทนได้ หากต้องการดำเนินการภายในงานเดียวโดยไม่เปลี่ยนผลลัพธ์ของสคริปต์ ให้สร้างตารางชั่วคราว (หรือตารางที่ส่งออกไปยังโปรเจ็กต์ BigQuery) ด้วยไวยากรณ์ OPTIONS(privacy_checked_export=true) เช่น

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับตารางชั่วคราว

หากการรวมชั้นแรกมีความละเอียดเกินกว่าที่จะตรวจสอบความเป็นส่วนตัว ให้ลองเขียนการค้นหาใหม่โดยใช้ข้อมูลรวมระดับผู้ใช้ หากเป็นไปไม่ได้ แสดงว่าโหมดสัญญาณรบกวนไม่รองรับการค้นหานี้

รหัสผู้ใช้ที่ไม่ได้เข้าร่วม

การค้นหาในโหมดสัญญาณรบกวนต้องไม่รวมข้อมูลจากผู้ใช้แยกต่างหากไว้ในแถวเดียว ยกเว้นเมื่อทำการรวมข้อมูลที่มีสัญญาณรบกวน ด้วยเหตุนี้ การผนวกข้อมูล Ads Data Hub ที่ไม่ได้รวบรวมจึงจำเป็นจะต้องมีการผนวกข้อมูลในคอลัมน์ user_id อย่างชัดเจน

การค้นหานี้ไม่ได้ปรากฏร่วมกับคอลัมน์ user_id อย่างชัดเจน ซึ่งทําให้เกิดข้อผิดพลาดในการตรวจสอบ

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

ซึ่งแก้ไขได้โดยปรับอนุประโยค USING ให้รวม user_id ไว้อย่างชัดเจน เช่น USING(impression_id, user_id)

โปรดทราบว่าข้อจำกัดนี้มีผลกับการรวมระหว่างตาราง Ads Data Hub เท่านั้น (ยกเว้นตารางมิติข้อมูล) แต่ไม่ได้ใช้กับตารางที่ลูกค้าเป็นเจ้าของ ตัวอย่างที่อนุญาต

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

การรวม Ads Data Hub-BigQuery

การรวมข้อมูลรบกวนต้องใช้ตัวระบุผู้ใช้จึงจะทำงานได้ดี ข้อมูลที่ลูกค้าเป็นเจ้าของใน BigQuery ไม่มีตัวระบุผู้ใช้ จึงไม่สามารถนำไปรวมในการรวมเสียงรบกวนโดยไม่เข้าร่วมตาราง Ads Data Hub

คำค้นหานี้ทำให้เกิดข้อผิดพลาดในการตรวจสอบความถูกต้อง

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

วิธีแก้ปัญหานี้คือการรวมตาราง BigQuery เพื่อเสริมข้อมูล Ads Data Hub แทนการรวม หรือแยกข้อมูลเพื่อรวมแต่ละแหล่งที่มาแยกกัน

โปรดทราบว่าคุณจะผนวกข้อมูลระหว่างตาราง Ads Data Hub หลายตารางกับข้อมูลผู้ใช้ หรือตาราง BigQuery หลายตารางที่ลูกค้าเป็นเจ้าของได้ แต่คุณจะผสมทั้ง 2 ตารางนี้ไม่ได้

สิทธิ์เข้าร่วม Ads Data Hub-BigQuery โดยตรง

การรวมข้อมูลภายนอกเข้ากับข้อมูลที่ลูกค้าเป็นเจ้าของอาจทำให้เกิดแถวที่ไม่มีตัวระบุผู้ใช้ ซึ่งทำให้สัญญาณรบกวนทำงานได้ไม่ดี

คำค้นหาทั้ง 2 รายการนี้ทำให้เกิดข้อผิดพลาดในการตรวจสอบ เนื่องจากจะทำให้แถวที่ไม่ตรงกันซึ่งไม่มีตัวระบุผู้ใช้ในด้าน 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)

โปรดทราบว่าการผนวกอย่างใดอย่างหนึ่งจะใช้งานได้หากมีการกลับลำดับตาราง

สรุปแถวที่กรอง

ระบบไม่รองรับข้อกำหนดของข้อมูลสรุปแถวที่กรองแล้วในโหมดสัญญาณรบกวน ฟีเจอร์นี้มักไม่จำเป็นกับสัญญาณรบกวนเนื่องจากอัตราการกรองต่ำกว่าและไม่มีการกรองจากการตรวจสอบความแตกต่าง

หากคุณสังเกตเห็นการกรองข้อมูลที่สำคัญในผลลัพธ์สัญญาณรบกวน ให้เพิ่มข้อมูลที่รวบรวมไว้ คุณอาจทำการรวมแบบขนานกับชุดข้อมูลที่สมบูรณ์ เพื่อเปรียบเทียบค่าประมาณของผลรวม ตัวอย่างเช่น

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

โปรดทราบว่าจำนวนรวมเป็นสัญญาณรบกวนแบบอิสระและค่ารวมอาจไม่บวกกัน แต่จำนวนรวมมักจะแม่นยำกว่าการนำผลรวมของแถวที่รบกวน

ตารางที่สร้างข้ามโหมด

ตารางที่ไม่ได้ส่งออกใน Ads Data Hub จะใช้ได้เฉพาะกับโหมดความเป็นส่วนตัวเดียวกันกับตอนที่สร้างตารางขึ้น คุณจะสร้างตารางในโหมดการรวมปกติและใช้ตารางในโหมดนอยส์ไม่ได้ หรือจะใช้ตารางดังกล่าวในโหมดการรวมปกติก็ได้ (เว้นแต่จะมีการส่งออกตารางไปยัง BigQuery ก่อน)