การเพิ่มสัญญาณรบกวนเป็นเทคนิคที่ใช้เพื่อปกป้องความเป็นส่วนตัวของผู้ใช้เมื่อมีการค้นหาฐานข้อมูล ซึ่งทํางานโดยการเพิ่มสัญญาณรบกวนแบบสุ่มลงในประโยค 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
- เปิดรายงาน
- คลิกปุ่มเปิด/ปิดการตั้งค่าข้อผิดพลาดเกี่ยวกับความเป็นส่วนตัวเป็นใช้ข้อผิดพลาด
- เรียกใช้การค้นหา
- ตรวจสอบผลกระทบของสัญญาณรบกวนเพิ่มเติม
- ไม่บังคับ: ปรับการค้นหาเพื่อลดผลกระทบจากเสียงรบกวน
ตรวจสอบผลกระทบของเสียงรบกวน
เมื่องานเสร็จสมบูรณ์แล้ว Ads Data Hub จะแสดงความน่าเชื่อถือของผลลัพธ์ในสรุปความเป็นส่วนตัว ความน่าเชื่อถือจะอิงตามเปอร์เซ็นต์ของเซลล์ในเอาต์พุตที่ได้รับผลกระทบจากสัญญาณรบกวนสูง ระบบจะถือว่าค่าในตารางผลลัพธ์ได้รับผลกระทบอย่างมากหากระดับของสัญญาณรบกวนนั้นมากกว่า 5% ของผลลัพธ์ในเซลล์
สําหรับชุดข้อมูลเอาต์พุตที่ได้รับผลกระทบ สรุปความเป็นส่วนตัวจะแสดงคอลัมน์ที่มีสัญญาณรบกวนมากที่สุด 10 คอลัมน์จากผลกระทบสูงสุดไปจนถึงต่ำสุด และส่วนที่เป็นองค์ประกอบของสัญญาณรบกวน นี่เป็นรายละเอียดของจํานวนข้อมูลรบกวนที่คาดไว้
ผลลัพธ์ที่มีข้อผิดพลาดมากกว่า 5% | สีของไฟบอกสถานะ | ผลลัพธ์ |
---|---|---|
<5% | เขียว | ผลกระทบต่ำ |
5%-15% | เหลือง | ผลกระทบปานกลาง |
15%-25% | Orange | ผลกระทบสูง |
>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))
ระบบไม่รองรับฟังก์ชันต่อไปนี้โดยตรง แต่สามารถแทนที่ด้วยข้อมูลรวมอื่นๆ ที่มีสัญญาณรบกวนเพื่อให้ได้ผลลัพธ์ทางสถิติ โปรดทราบว่าค่าตัวเลขต่อไปนี้เป็นเพียงตัวอย่างเท่านั้น
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 ยังคงมีผลกับการค้นหาที่ใช้การแทรกสัญญาณรบกวน โดยเฉพาะอย่างยิ่ง เราขอแนะนําให้คุณอ่านหลักเกณฑ์เกี่ยวกับการค้นหาข้อมูลเดิมซ้ำๆ
ส่วนนี้อธิบายรูปแบบการค้นหาที่รองรับเมื่อเรียกใช้การค้นหาโดยใช้การแทรกข้อมูลรบกวน
การรวมข้อมูลระดับผู้ใช้
ระบบรองรับการรวมระดับผู้ใช้แบบไม่จํากัดในลักษณะเดียวกับในโหมดการตรวจสอบความแตกต่าง ระบบจะแทรกข้อมูลรบกวนในการรวมข้อมูลที่รวมข้อมูลจากผู้ใช้หลายคนเท่านั้น การรวมที่จัดกลุ่มตาม 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
วิธีแก้ปัญหาที่พบบ่อยคือการรวมผลลัพธ์เหล่านี้แยกกันและเข้าร่วมกันเองก่อนที่จะรวมอีกครั้ง การค้นหาเหล่านี้ใช้ได้ในโหมดสัญญาณรบกวน และมักจะมีประสิทธิภาพดีกว่าในโหมดการตรวจสอบความแตกต่าง เนื่องจากข้อกําหนดด้านความเป็นส่วนตัวได้รับการแก้ไขแล้วก่อนหน้านี้
ตัวอย่าง
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
ดูข้อมูลเกี่ยวกับแนวทางปฏิบัติแนะนำอื่นๆ ในการค้นหา
การรวบรวมข้อมูลเดิมซ้ำโดยตรง
ระบบจะใช้สัญญาณรบกวนกับเลเยอร์แรกของการรวมข้อมูลข้ามผู้ใช้ในคําค้นหา ระบบจะบล็อกการค้นหาที่มีการรวมหลายเลเยอร์ ดังนี้
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 หลายตารางกับข้อมูลผู้ใช้หรือตาราง 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 ก่อน)