การฉีดเสียงรบกวน

การแทรกสัญญาณรบกวนเป็นเทคนิคที่ใช้เพื่อปกป้องความเป็นส่วนตัวของผู้ใช้เมื่อทำการค้นหาในฐานข้อมูล โดยจะทำงานด้วยการเพิ่มสัญญาณรบกวนแบบสุ่มลงใน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

เรียกใช้การค้นหาโดยใช้ Noise Injection

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

ตรวจสอบผลกระทบจากเสียง

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

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

ผลลัพธ์ที่มีข้อผิดพลาดมากกว่า 5% สีของตัวบ่งชี้ ผลลัพธ์
<5% เขียว ผลกระทบต่ำ
5%-15% เหลือง ผลกระทบปานกลาง
15%-25% ส้ม ผลกระทบสูง
>25% แดง ผลกระทบสูงมาก

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

ปรับการค้นหา

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

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

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

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

เกี่ยวกับผลลัพธ์เชิงลบ

ในทางทฤษฎีแล้ว ความผันผวนที่มีค่าต่ำมากอาจส่งผลให้เกิดตัวเลขติดลบ แม้ว่าในเชิงความหมายแล้วการค้นหาไม่ควรเป็นไปได้ก็ตาม เพื่อให้COUNTและCOUNTIFทุกรูปแบบทำงานตามที่คาดไว้ ระบบจะจำกัดค่าไว้ที่ 0 โดยอัตโนมัติ เพื่อให้ค่าไม่เป็นลบ หากต้องการให้ฟังก์ชันอื่นทํางานในลักษณะเดียวกันนี้ เช่น SUM คุณสามารถจำกัดผลลัพธ์ด้วยตนเองโดยใช้ GREATEST(0, SUM(...))

โดยปกติแล้ว การเปลี่ยนแปลงนี้จะไม่มีนัยสำคัญ แต่จะทำให้เกิดอคติเชิงบวกเล็กน้อย ต่อผลลัพธ์โดยรวม หากต้องการหลีกเลี่ยงปัญหานี้ ให้ลองใช้ ADH.ANON_COUNT แทน COUNT หรือใช้ GROUP BY ROLLUP เพื่อ คำนวณจำนวนรวมในแถว


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

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

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

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

ระบบรองรับการรวบรวมข้อมูลระดับผู้ใช้แบบไม่จำกัดในลักษณะเดียวกับที่รองรับในโหมดตรวจสอบความแตกต่าง ระบบจะแทรกสัญญาณรบกวนในการรวบรวมที่รวม ข้อมูลของผู้ใช้หลายรายเท่านั้น การรวมที่จัดกลุ่มตาม 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;

ตัวอย่างฟังก์ชันการวิเคราะห์

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 จึงเป็นวิธีแก้ปัญหาทั่วไปในการรวบรวมผลลัพธ์เหล่านี้แยกกันและ Self-Join ก่อนที่จะรวบรวมอีกครั้ง การค้นหาเหล่านี้รองรับในโหมดเสียงรบกวน และมักจะมีประสิทธิภาพดีกว่าในโหมดตรวจสอบความแตกต่าง เนื่องจากข้อกำหนดด้านความเป็นส่วนตัวได้รับการแก้ไขก่อนหน้านี้

ตัวอย่าง

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 มี เพียงแถวเดียวต่อค่าคีย์การรวม (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

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

การรวบรวมข้อมูลเดิมซ้ำโดยตรง

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

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

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

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

User-ID ที่ไม่ได้เข้าร่วม

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

การค้นหานี้ไม่ได้รวมคอลัมน์ user_id อย่างชัดเจน ซึ่งส่งผลให้เกิด คำเตือนการตรวจสอบ:

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

การรวมเช่นนี้อาจทํางานไม่เป็นไปตามที่คาดไว้ เนื่องจากเฉพาะแถวที่มีค่า user_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

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

ทั้ง 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)

โปรดทราบว่าการรวมทั้ง 2 แบบจะใช้ได้หากมีการกลับลำดับของตาราง นอกจากนี้ ยังมีข้อยกเว้นสำหรับตาราง RDID ที่เข้าร่วมโดยตรงใน device_id_md5 ด้วย ตัวอย่างเช่น การค้นหาต่อไปนี้จะทำงานโดยไม่มีคำเตือน

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

ข้อมูลสรุปแถวที่กรอง

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

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

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

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

ตารางที่สร้างในโหมดต่างๆ

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