1. บทนำ

กิจกรรมการฉ้อโกงมักเกี่ยวข้องกับเครือข่ายที่ซ่อนอยู่ของเอนทิตีที่เชื่อมต่อกัน เช่น บัญชีหลายบัญชีที่ใช้อีเมล หมายเลขโทรศัพท์ หรือที่อยู่จริงเดียวกัน ฐานข้อมูลเชิงสัมพันธ์แบบดั้งเดิมอาจมีปัญหาในการค้นหาความสัมพันธ์ที่ซับซ้อนและมีหลายระดับเหล่านี้อย่างมีประสิทธิภาพ
BigQuery Graph ช่วยให้คุณวิเคราะห์เครือข่ายเหล่านี้ในวงกว้างได้โดยใช้ฐานข้อมูลกราฟ คุณสามารถกำหนดกราฟพร็อพเพอร์ตี้ไว้เหนือตาราง BigQuery ที่มีอยู่ และใช้ Graph Query Language (GQL) เพื่อค้นหารูปแบบในข้อมูล
แอปพลิเคชันทั่วไปของเครือข่ายกราฟสำหรับการตรวจจับการฉ้อโกงคือการหยุดคำสั่งซื้อที่มีที่อยู่สำหรับจัดส่งที่เชื่อมโยงกับเครือข่ายการฉ้อโกง หรือการหยุดการชำระเงินที่เป็นของ
ใน Codelab นี้ คุณจะได้สร้างโซลูชันการตรวจจับการฉ้อโกงโดยใช้ BigQuery Graph คุณจะโหลดข้อมูลจาก Cloud Storage, สร้างกราฟพร็อพเพอร์ตี้ และใช้การค้นหากราฟเพื่อระบุการเชื่อมต่อที่น่าสงสัย
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างชุดข้อมูล BigQuery และโหลดข้อมูล
- วิธีกำหนดกราฟพร็อพเพอร์ตี้โดยใช้ DDL
- วิธีค้นหากราฟโดยใช้ GQL
- วิธีใช้การวิเคราะห์กราฟเพื่อตรวจจับการฉ้อโกง
สิ่งที่คุณต้องมี
- โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงินแล้ว
- สภาพแวดล้อมสมุดบันทึก BigQuery (BigQuery Studio หรือ Colab Enterprise)
ค่าใช้จ่าย
Lab นี้ใช้ทรัพยากร Google Cloud ที่มีการเรียกเก็บเงิน ค่าใช้จ่ายโดยประมาณไม่เกิน $5 โดยสมมติว่าคุณลบทรัพยากรหลังทำเสร็จแล้ว
2. ก่อนเริ่มต้น
เลือกหรือสร้างโปรเจ็กต์ Google Cloud
- ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าเครื่องมือเลือกโปรเจ็กต์
- ตรวจสอบว่าเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Google Cloud แล้ว ดูวิธีตรวจสอบว่าเปิดใช้การเรียกเก็บเงินแล้วหรือไม่
เลือกสภาพแวดล้อม
คุณจะต้องมีสภาพแวดล้อมสมุดบันทึกเพื่อเรียกใช้ Lab นี้ โดยสามารถใช้ BigQuery Studio หรือ Colab Enterprise
- ไปที่หน้า BigQuery ในคอนโซล Google Cloud
- คุณจะใช้สมุดบันทึก Python เพื่อเรียกใช้การค้นหากราฟ
เริ่มต้น Cloud Shell
- คลิกเปิดใช้งาน Cloud Shell ที่ด้านบนของคอนโซล Google Cloud
- ยืนยันการตรวจสอบสิทธิ์โดยทำดังนี้
gcloud auth list
- ยืนยันโปรเจ็กต์โดยทำดังนี้
gcloud config get project
- ตั้งค่าหากจำเป็นโดยทำดังนี้
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID
เปิดใช้ API
เรียกใช้คำสั่งนี้เพื่อเปิดใช้ BigQuery API ที่จำเป็น
gcloud services enable bigquery.googleapis.com \
bigqueryreservation.googleapis.com
สร้างการจองและการมอบหมาย BigQuery
หากต้องการเรียกใช้การค้นหา GQL คุณต้องมีการจองที่ใช้รุ่น Enterprise หรือ Enterprise Plus โดยสร้างการจองรุ่น Enterprise ที่มีการปรับขนาดอัตโนมัติใน Cloud Shell ดังนี้
# 1. Create a BigQuery Enterprise reservation with 0 baseline slots and 100 max autoscaling slots
bq mk --reservation \
--project_id=${GCP_PROJECT} \
--location=US \
--edition=ENTERPRISE \
--slots=0 \
--autoscale_max_slots=100 \
--ignore_idle_slots=true \
fraud-reservation
# 2. Assign your Cloud project to the newly created reservation for query execution
bq mk --reservation_assignment \
--project_id=${GCP_PROJECT} \
--location=US \
--reservation_id=fraud-reservation \
--job_type=QUERY \
--assignee_type=PROJECT \
--assignee_id=${GCP_PROJECT}
3. โหลดข้อมูล
ในขั้นตอนนี้ คุณจะสร้างชุดข้อมูล BigQuery และโหลดข้อมูลตัวอย่างจาก Cloud Storage
ข้อมูลตัวอย่างประกอบด้วยไฟล์ CSV หลายไฟล์ที่แสดงสภาพแวดล้อมการค้าปลีกจำลอง ดังนี้
customers.csv: ข้อมูลบัญชีลูกค้าemails.csv: อีเมลphones.csv: หมายเลขโทรศัพท์addresses.csv: ที่อยู่จริงcustomer_emails.csv,customer_phones.csv,customer_addresses.csv: ตารางการลิงก์orders.csv: ประวัติการสั่งซื้อ รวมถึงแฟล็กการฉ้อโกง
สร้างชุดข้อมูล
สร้างชุดข้อมูลชื่อ fraud_demo เพื่อเก็บตาราง
- สำหรับ Codelab นี้ เราจะเรียกใช้คำสั่ง SQL คุณสามารถเรียกใช้คำสั่งเหล่านี้ใน BigQuery Studio > SQL Editor หรือใช้คำสั่ง
bq queryใน Cloud Shell
เราจะสมมติว่าคุณใช้ BigQuery SQL Editor เพื่อให้ได้รับประสบการณ์การใช้งานที่ดีขึ้นกับคำสั่งสร้างหลายบรรทัด
CREATE SCHEMA IF NOT EXISTS `fraud_demo` OPTIONS(location="US");
โหลดตาราง
เรียกใช้คำสั่ง SQL ต่อไปนี้เพื่อโหลดข้อมูลจาก Cloud Storage ลงในชุดข้อมูล
LOAD DATA OVERWRITE `fraud_demo.customers`
FROM FILES (
format = 'CSV',
uris = ['gs://sample-data-and-media/fraud-demo-data/customers.csv'],
skip_leading_rows = 1
);
LOAD DATA OVERWRITE `fraud_demo.emails`
FROM FILES (
format = 'CSV',
uris = ['gs://sample-data-and-media/fraud-demo-data/emails.csv'],
skip_leading_rows = 1
);
LOAD DATA OVERWRITE `fraud_demo.phones`
FROM FILES (
format = 'CSV',
uris = ['gs://sample-data-and-media/fraud-demo-data/phones.csv'],
skip_leading_rows = 1
);
LOAD DATA OVERWRITE `fraud_demo.addresses`
FROM FILES (
format = 'CSV',
uris = ['gs://sample-data-and-media/fraud-demo-data/addresses.csv'],
skip_leading_rows = 1
);
LOAD DATA OVERWRITE `fraud_demo.customer_emails`
FROM FILES (
format = 'CSV',
uris = ['gs://sample-data-and-media/fraud-demo-data/customer_emails.csv'],
skip_leading_rows = 1
);
LOAD DATA OVERWRITE `fraud_demo.customer_phones`
FROM FILES (
format = 'CSV',
uris = ['gs://sample-data-and-media/fraud-demo-data/customer_phones.csv'],
skip_leading_rows = 1
);
LOAD DATA OVERWRITE `fraud_demo.customer_addresses`
FROM FILES (
format = 'CSV',
uris = ['gs://sample-data-and-media/fraud-demo-data/customer_addresses.csv'],
skip_leading_rows = 1
);
LOAD DATA OVERWRITE `fraud_demo.orders`
FROM FILES (
format = 'CSV',
uris = ['gs://sample-data-and-media/fraud-demo-data/orders.csv'],
skip_leading_rows = 1
);
4. สร้างกราฟพร็อพเพอร์ตี้
เมื่อโหลดข้อมูลแล้ว คุณก็กำหนดกราฟพร็อพเพอร์ตี้ได้ กราฟพร็อพเพอร์ตี้ประกอบด้วยโหนด (เอนทิตี) และขอบ (ความสัมพันธ์)
ใน Lab นี้ โหนดมีดังนี้
- ลูกค้า: แสดงผู้ถือบัญชี
- โทรศัพท์: แสดงหมายเลขโทรศัพท์
- อีเมล: แสดงอีเมล
- ที่อยู่: แสดงที่อยู่จริง
ขอบมีดังนี้
- OwnsPhone: เชื่อมต่อลูกค้ากับโทรศัพท์
- OwnsEmail: เชื่อมต่อลูกค้ากับอีเมล
- LinkedToAddress: เชื่อมต่อลูกค้ากับที่อยู่

สร้างกราฟ
เรียกใช้คำสั่ง DDL ต่อไปนี้เพื่อสร้างกราฟชื่อ FraudDemo ในชุดข้อมูล fraud_demo
CREATE OR REPLACE PROPERTY GRAPH fraud_demo.FraudDemo
NODE TABLES(
fraud_demo.customers
KEY(account_id)
LABEL Customer PROPERTIES(
account_id,
name),
fraud_demo.emails
KEY(email)
LABEL Email PROPERTIES(
email,
email_type),
fraud_demo.phones
KEY(phone_number)
LABEL Phone PROPERTIES(
phone_number,
phone_type),
fraud_demo.addresses
KEY(address)
LABEL Address PROPERTIES(
address,
address_type)
)
EDGE TABLES(
fraud_demo.customer_emails
KEY(account_id, email)
SOURCE KEY(account_id) REFERENCES customers(account_id)
DESTINATION KEY(email) REFERENCES emails(email)
LABEL OwnsEmail PROPERTIES(
account_id,
email,
last_updated_ts),
fraud_demo.customer_phones
KEY(account_id, phone_number)
SOURCE KEY(account_id) REFERENCES customers(account_id)
DESTINATION KEY(phone_number) REFERENCES phones(phone_number)
LABEL OwnsPhone PROPERTIES(
account_id,
phone_number,
last_updated_ts),
fraud_demo.customer_addresses
KEY(account_id, address)
SOURCE KEY(account_id) REFERENCES customers(account_id)
DESTINATION KEY(address) REFERENCES addresses(address)
LABEL LinkedToAddress PROPERTIES(
account_id,
address,
last_updated_ts)
);
5. วิเคราะห์เครือข่าย (2 ระดับ)
เปิดสมุดบันทึกใหม่ ใน BigQuery Studio

สำหรับส่วนการแสดงภาพและคำแนะนำของ Codelab นี้ เราจะใช้สมุดบันทึก Google Colab ใน BigQuery Studio ซึ่งจะช่วยให้เราแสดงภาพผลลัพธ์กราฟได้อย่างง่ายดาย
วางโค้ดต่อไปนี้ลงในเซลล์โค้ด
!pip install bigquery-magics==0.12.1
สมุดบันทึกกราฟ BigQuery ได้รับการติดตั้งใช้งานเป็น IPython Magics การเพิ่มคำสั่ง Magic %%bigquery พร้อมฟังก์ชัน TO_JSON จะช่วยให้คุณแสดงภาพผลลัพธ์ได้ตามที่แสดงในส่วนต่อไปนี้ ในขั้นตอนนี้ คุณจะเรียกใช้การค้นหากราฟเพื่อค้นหาการเชื่อมต่ออย่างง่ายระหว่างบัญชี นี่เป็นการค้นหา "2 ระดับ" เนื่องจากจะเดินทาง 2 ระดับจากโหนดเริ่มต้นเพื่อค้นหาโหนดที่เกี่ยวข้อง (เช่น ลูกค้า -> อีเมล -> ลูกค้า)
เราจะเริ่มต้นด้วยการตรวจสอบบัญชีของ Nicole Wade เราต้องการค้นหาบัญชีที่เกี่ยวข้องกับเธอผ่านการเชื่อมต่อ 2 ระดับ
เรียกใช้การค้นหา 2 ระดับ
เรียกใช้การค้นหาต่อไปนี้ในสมุดบันทึก
%%bigquery --graph
GRAPH fraud_demo.FraudDemo
MATCH
p=(a:Customer)
( -[e:OwnsEmail|OwnsPhone|LinkedToAddress WHERE e.last_updated_ts < '2025-07-30']- (n) ){2}
WHERE a.account_id IN ("d2f1f992-d116-41b3-955b-6c76a3352657")
-- Verify the final node in the hop array is a Customer
AND 'Customer' IN UNNEST(LABELS(n[OFFSET(1)]))
RETURN TO_JSON(p) AS paths

ทำความเข้าใจผลลัพธ์
การค้นหานี้จะดำเนินการดังนี้
- เริ่มต้นที่โหนด
Customerที่มีaccount_id"d2f1f992-d116-41b3-955b-6c76a3352657" (Nicole Wade) - ติดตามขอบ
OwnsEmail,OwnsPhoneหรือLinkedToAddressไปยังโหนดที่เชื่อมต่อ (Phone,EmailหรือAddress) - ติดตามขอบจากโหนดที่เชื่อมต่อดังกล่าวกลับไปยังโหนด
Customerอื่นๆ - กรองขอบตามการประทับเวลา (
last_updated_ts) เพื่อดูสถานะของเครือข่ายในเวลาที่เฉพาะเจาะจง
คุณควรเห็นว่า Zachary Cordova และ Brenda Brown เชื่อมต่อกับ Nicole ผ่านที่อยู่เดียวกัน
6. วิเคราะห์เครือข่าย (4 ระดับ)
ในขั้นตอนนี้ คุณจะขยายการค้นหาเพื่อค้นหาความสัมพันธ์ที่ซับซ้อนมากขึ้น เราจะค้นหาการเชื่อมต่อ4 ระดับ ซึ่งจะช่วยให้เราค้นหาบัญชีที่เชื่อมต่อผ่านเอนทิตีระดับกลางหลายรายการได้ (เช่น ลูกค้า ก -> อีเมล -> ลูกค้า ข -> โทรศัพท์ -> ลูกค้า ค)
นอกจากนี้ เราจะสังเกตว่าเครือข่ายนี้เปลี่ยนแปลงไปอย่างไรเมื่อเวลาผ่านไป
สถานะ "ก่อนหน้า"
ก่อนอื่น เรามาดูเครือข่ายตามที่ปรากฏในวันที่ 30 กรกฎาคม 2025
เรียกใช้การค้นหาต่อไปนี้
%%bigquery --graph
GRAPH fraud_demo.FraudDemo
MATCH p= ANY SHORTEST (a:Customer)
( -[e:OwnsEmail|OwnsPhone|LinkedToAddress WHERE e.last_updated_ts < '2025-07-30']- (n) ){3, 5}(reachable_a:Customer)
WHERE a.account_id IN ("d2f1f992-d116-41b3-955b-6c76a3352657")
-- Ensure the final node in the dynamic chain is actually a Customer
AND 'Customer' IN UNNEST(LABELS(n[OFFSET(ARRAY_LENGTH(n) - 1)]))
RETURN
TO_JSON(p) AS paths, -- Array of all traversed edges
ARRAY_LENGTH(e) AS hop_count

สถานะ "หลังจาก"
ตอนนี้มาดูกันว่าเครือข่ายมีลักษณะอย่างไร2 สัปดาห์ต่อมา เราจะเรียกใช้การค้นหาเดียวกันแต่ไม่มีข้อจำกัดด้านวันที่
เรียกใช้การค้นหาต่อไปนี้
%%bigquery --graph
GRAPH fraud_demo.FraudDemo
MATCH p= ANY SHORTEST (a:Customer)
( -[e:OwnsEmail|OwnsPhone|LinkedToAddress]- (n) ){3, 5}(reachable_a:Customer)
WHERE a.account_id IN ("d2f1f992-d116-41b3-955b-6c76a3352657")
-- Ensure the final node in the dynamic chain is actually a Customer
AND 'Customer' IN UNNEST(LABELS(n[OFFSET(ARRAY_LENGTH(n) - 1)]))
RETURN
TO_JSON(p) AS paths, -- Array of all traversed edges
ARRAY_LENGTH(e) AS hop_count

ทำความเข้าใจผลลัพธ์
การนำตัวกรองวันที่ออกจะทำให้คุณค้นหาข้อมูลทั้งชุด คุณจะสังเกตเห็นว่าเครือข่ายเติบโตขึ้นอย่างมาก ตอนนี้ Nicole Wade เป็นส่วนหนึ่งของกลุ่มที่ใหญ่ขึ้นมากและมีการเชื่อมต่อสูง การขยายตัวอย่างรวดเร็วของเครือข่ายที่เชื่อมต่อกันเป็นตัวบ่งชี้ที่ชัดเจนถึงกิจกรรมที่เป็นการฉ้อโกง เช่น กลุ่มการฉ้อโกงที่แชร์ทรัพยากรเมื่อเวลาผ่านไป
7. สร้างรายงานการฉ้อโกง
ในขั้นตอนนี้ คุณจะรวมการวิเคราะห์กราฟกับข้อมูลธุรกิจแบบเดิม (คำสั่งซื้อ) เพื่อสร้างรายงานการฉ้อโกงที่ครอบคลุม คุณจะระบุบัญชีที่มีความเสี่ยงและคำสั่งซื้อที่อาจเป็นการฉ้อโกง
การค้นหานี้ซับซ้อนมากขึ้น โดยใช้ GRAPH_TABLE เพื่อเรียกใช้การค้นหากราฟภายใน SQL มาตรฐาน และคำนวณการเปลี่ยนแปลงขนาดเครือข่าย (diff) ระหว่างสถานะ "ก่อนหน้า" และ "หลังจาก" ที่เราสังเกตเห็นในขั้นตอนก่อนหน้า
เรียกใช้การค้นหารายงานการฉ้อโกง
เรียกใช้การค้นหาต่อไปนี้ในสมุดบันทึก
%%bigquery --graph
WITH num_orders AS (
SELECT account_id, COUNT(1) AS num_order
FROM fraud_demo.orders
WHERE order_time > '2025-07-30'
GROUP BY account_id
),
orders AS (
SELECT account_id, order_id, fraud, order_total
FROM fraud_demo.orders
WHERE order_time > '2025-07-30'
),
-- Use Quantified Path Patterns to find connections up to 4 hops away
latest_connect AS (
SELECT
account_id,
ARRAY_LENGTH(ARRAY_AGG(DISTINCT connected_id)) AS size
FROM GRAPH_TABLE(
fraud_demo.FraudDemo
MATCH (a:Customer)-[:OwnsEmail|OwnsPhone|LinkedToAddress]-{4}(connected:Customer)
RETURN a.account_id AS account_id, connected.account_id AS connected_id
)
GROUP BY account_id
),
prev_connect AS (
SELECT
account_id,
ARRAY_LENGTH(ARRAY_AGG(DISTINCT connected_id)) AS size
FROM GRAPH_TABLE(
fraud_demo.FraudDemo
-- Apply the timestamp filter to EVERY edge in the 4-hop chain
MATCH (a:Customer)
(-[e:OwnsEmail|OwnsPhone|LinkedToAddress WHERE e.last_updated_ts < '2025-07-30']-(n)){4}
WHERE 'Customer' IN UNNEST(LABELS(n[OFFSET(3)]))
RETURN a.account_id AS account_id, n[OFFSET(3)].account_id AS connected_id
)
GROUP BY account_id
),
edge_changes AS (
SELECT account_id, MAX(last_updated_ts) AS max_last_updated_ts
FROM fraud_demo.customer_addresses
GROUP BY account_id
)
SELECT
la.account_id,
o.order_id,
la.size AS latest_size,
COALESCE(pa.size, 0) AS previous_size,
la.size - COALESCE(pa.size, 0) AS diff,
nos.num_order,
o.fraud AS reported_as_fraud,
o.order_total,
CASE
WHEN (la.size - COALESCE(pa.size, 0)) > 10 AND nos.num_order IS NULL THEN "CUSTOMER AT RISK"
WHEN (la.size - COALESCE(pa.size, 0)) > 10 AND nos.num_order IS NOT NULL AND o.fraud THEN "CONFIRMED FRAUD ORDER"
WHEN (la.size - COALESCE(pa.size, 0)) > 10 AND nos.num_order IS NOT NULL AND NOT o.fraud THEN "POTENTIAL FRAUD ORDER"
ELSE ""
END AS notes
FROM latest_connect la
LEFT JOIN prev_connect pa ON la.account_id = pa.account_id
LEFT JOIN num_orders nos ON la.account_id = nos.account_id
LEFT JOIN orders o ON la.account_id = o.account_id
INNER JOIN edge_changes ec ON la.account_id = ec.account_id
WHERE nos.num_order > 1 OR (la.size - COALESCE(pa.size, 0)) > 10
ORDER BY diff DESC
ทำความเข้าใจผลลัพธ์
รายงานนี้จะแสดงข้อมูลต่อไปนี้
account_id: รหัสของบัญชีที่กำลังวิเคราะห์order_id: รหัสคำสั่งซื้อล่าสุดlatest_size: ขนาดของเครือข่ายที่เชื่อมต่อกันในปัจจุบันprevious_size: ขนาดของเครือข่ายเมื่อ 2 สัปดาห์ที่แล้วdiff: การเติบโตของขนาดเครือข่ายnum_order: จำนวนคำสั่งซื้อล่าสุดreported_as_fraud: คำสั่งซื้อได้รับการติดแฟล็กเป็นการฉ้อโกงหรือไม่order_total: จำนวนเงินทั้งหมดของคำสั่งซื้อnotes: สถานะความเสี่ยงที่คำนวณตามการเติบโตของเครือข่ายและประวัติการสั่งซื้อ
คุณจะเห็นบัญชีที่มีค่า diff สูงและยอดรวมคำสั่งซื้อสูง ซึ่งเป็นผู้สมัครที่เหมาะสมสำหรับการตรวจสอบเพิ่มเติม หมายเหตุ "ลูกค้ามีความเสี่ยง" และ "คำสั่งซื้อที่อาจเป็นการฉ้อโกง" ช่วยจัดลำดับความสำคัญของบัญชีเหล่านี้

8. การตรวจจับในวงกว้าง
ในขั้นตอนการวิเคราะห์ขั้นสุดท้ายนี้ คุณจะแสดงภาพเครือข่ายในวงกว้าง แทนที่จะเริ่มต้นด้วยบัญชีเดียว คุณจะค้นหาการเชื่อมต่อระหว่างชุดบัญชีที่น่าสงสัย
ซึ่งจะช่วยให้คุณเห็นว่าการตรวจสอบอิสระหลายรายการเป็นส่วนหนึ่งของกลุ่มการฉ้อโกงที่ใหญ่ขึ้นกลุ่มเดียวกันหรือไม่
เรียกใช้การค้นหาที่ปรับขนาด
เรียกใช้การค้นหาต่อไปนี้ในสมุดบันทึก
%%bigquery --graph
GRAPH fraud_demo.FraudDemo
MATCH
p= ANY SHORTEST (a:Customer)
( -[e:OwnsEmail|OwnsPhone|LinkedToAddress]- (n) ){3, 5}
(reachable_a:Customer)
-- these IDs are from the previous results
WHERE a.account_id in ( "845f2b14-cd10-4750-9f28-fe542c4a731b"
, "3ff59684-fbf9-40d7-8c41-285ade5002e6"
, "8887c17b-e6fb-4b3b-8c62-cb721aafd028"
, "03e777e5-6fb4-445d-b48c-cf42b7620874"
, "81629832-eb1d-4a0e-86da-81a198604898"
, "845f2b14-cd10-4750-9f28-fe542c4a731b",
"89e9a8fe-ffc4-44eb-8693-a711a3534849"
)
LIMIT 400
RETURN TO_JSON(p) as paths
ทำความเข้าใจผลลัพธ์
การค้นหานี้จะแสดงกราฟที่ซับซ้อนซึ่งแสดงให้เห็นว่าบัญชีที่น่าสงสัยที่ระบุมีการทับซ้อนและแชร์ทรัพยากรกันอย่างไร ตอนนี้คุณกำลังดูการตรวจจับการฉ้อโกงในวงกว้าง ซึ่งระบุคลัสเตอร์ของกิจกรรมที่อาจต้องมีการตอบสนองที่ประสานกัน

9. ล้าง
หากต้องการหลีกเลี่ยงการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ใน Codelab นี้ คุณควรลบชุดข้อมูลและกราฟพร็อพเพอร์ตี้
เรียกใช้คำสั่ง SQL ต่อไปนี้เพื่อล้างสภาพแวดล้อม
DROP PROPERTY GRAPH IF EXISTS fraud_demo.FraudDemo;
DROP SCHEMA IF EXISTS fraud_demo CASCADE;
10. ขอแสดงความยินดี
ยินดีด้วย คุณได้สร้างโซลูชันการตรวจจับการฉ้อโกงโดยใช้ BigQuery Graph เรียบร้อยแล้ว
โดยคุณได้เรียนรู้วิธีต่อไปนี้
- โหลดข้อมูลจาก Cloud Storage ลงใน BigQuery
- กำหนดกราฟพร็อพเพอร์ตี้โดยใช้ DDL
- ค้นหากราฟโดยใช้ GQL เพื่อค้นหาความสัมพันธ์อย่างง่ายและซับซ้อน
- รวมการวิเคราะห์กราฟกับข้อมูลธุรกิจเพื่อระบุความเสี่ยง
- แสดงภาพเครือข่ายในวงกว้าง