การตรวจจับการฉ้อโกงด้วย BigQuery Graph

1. บทนำ

ส่วนหัวการตลาด - การประพฤติมิชอบในฟินเทค

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

กราฟ BigQuery ช่วยให้คุณวิเคราะห์เครือข่ายเหล่านี้ได้ในวงกว้างโดยใช้ฐานข้อมูลกราฟ คุณสามารถกำหนดกราฟพร็อพเพอร์ตี้บนตาราง BigQuery ที่มีอยู่ และใช้ Graph Query Language (GQL) เพื่อค้นหารูปแบบในข้อมูลได้

การประยุกต์ใช้เครือข่ายกราฟที่พบบ่อยในการตรวจหาการประพฤติมิชอบคือการหยุดคำสั่งซื้อที่มีที่อยู่สำหรับจัดส่งที่เชื่อมโยงกับเครือข่ายการประพฤติมิชอบ หรือการหยุดการชำระเงินที่อยู่ใน

ใน Codelab นี้ คุณจะได้สร้างโซลูชันการตรวจจับการฉ้อโกงโดยใช้กราฟ BigQuery คุณจะโหลดข้อมูลจาก Cloud Storage สร้างกราฟพร็อพเพอร์ตี้ และใช้การค้นหากราฟเพื่อระบุการเชื่อมต่อที่น่าสงสัย

สิ่งที่คุณจะได้เรียนรู้

  • วิธีสร้างชุดข้อมูล BigQuery และโหลดข้อมูล
  • วิธีกำหนดกราฟพร็อพเพอร์ตี้โดยใช้ DDL
  • วิธีค้นหากราฟโดยใช้ GQL
  • วิธีใช้การวิเคราะห์กราฟเพื่อตรวจหาการฉ้อโกง

สิ่งที่คุณต้องมี

  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
  • สภาพแวดล้อมของสมุดบันทึก BigQuery (BigQuery Studio หรือ Colab Enterprise)

ค่าใช้จ่าย

Lab นี้ใช้ทรัพยากร Google Cloud ที่เรียกเก็บเงินได้ ค่าใช้จ่ายโดยประมาณจะต่ำกว่า $5 หากคุณลบทรัพยากรหลังจากดำเนินการเสร็จสิ้น

2. ก่อนเริ่มต้น

เลือกหรือสร้างโปรเจ็กต์ Google Cloud

  1. ในคอนโซล Google Cloud ในหน้าตัวเลือกโปรเจ็กต์ ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud
  2. ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Google Cloud แล้ว ดูวิธีตรวจสอบว่าเปิดใช้การเรียกเก็บเงินอยู่หรือไม่

เลือกสภาพแวดล้อม

คุณจะต้องมีสภาพแวดล้อมสมุดบันทึกเพื่อเรียกใช้แล็บนี้ คุณใช้ BigQuery Studio หรือ Colab Enterprise ได้

  1. ไปที่หน้า BigQuery ในคอนโซล Google Cloud
  2. คุณจะใช้สมุดบันทึก Python เพื่อเรียกใช้การค้นหากราฟ

เริ่มต้น Cloud Shell

  1. คลิกเปิดใช้งาน Cloud Shell ที่ด้านบนของคอนโซล Google Cloud
  2. ยืนยันการตรวจสอบสิทธิ์
gcloud auth list
  1. ยืนยันโปรเจ็กต์
gcloud config get project
  1. ตั้งค่าหากจำเป็น
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID

เปิดใช้ API

เรียกใช้คำสั่งนี้เพื่อเปิดใช้ BigQuery API ที่จำเป็น

gcloud services enable bigquery.googleapis.com

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 เพื่อเก็บตาราง

  1. สำหรับ Codelab นี้ เราจะเรียกใช้คำสั่ง SQL คุณเรียกใช้คำสั่งเหล่านี้ได้ใน BigQuery Studio > SQL Editor หรือใช้คำสั่ง bq query ใน Cloud Shell การค้นหา SQL ใหม่เราจะถือว่าคุณใช้โปรแกรมแก้ไข SQL ของ BigQuery เพื่อให้ได้รับประสบการณ์การใช้งานที่ดียิ่งขึ้นกับคำสั่งสร้างแบบหลายบรรทัด
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-Hop)

เปิด Notebook ใหม่ใน BigQuery Studio

สร้าง Notebook ใหม่

สำหรับส่วนการแสดงภาพและคำแนะนำของ Codelab นี้ เราจะใช้สมุดบันทึก Google Colab ใน BigQuery Studio ซึ่งช่วยให้เราเห็นภาพผลลัพธ์ของกราฟได้อย่างง่ายดาย

BigQuery Graph Notebook ได้รับการติดตั้งใช้งานเป็น IPython Magics การเพิ่มคำสั่งวิเศษ %%bigquery ด้วยฟังก์ชัน TO_JSON จะช่วยให้คุณเห็นภาพผลลัพธ์ได้ตามที่แสดงในส่วนต่อไปนี้ ในขั้นตอนนี้ คุณจะเรียกใช้การค้นหากราฟเพื่อค้นหาการเชื่อมต่ออย่างง่ายระหว่างบัญชี นี่คือการค้นหาแบบ "2 Hop" เนื่องจากมีการเดินทาง 2 Hop จากโหนดเริ่มต้นเพื่อค้นหาโหนดที่เกี่ยวข้อง (เช่น ลูกค้า -> อีเมล -> ลูกค้า)

เราจะเริ่มด้วยการตรวจสอบบัญชีของ Nicole Wade เราต้องการค้นหาบัญชีที่เกี่ยวข้องกับเธอผ่านการข้าม 2 ครั้ง

เรียกใช้การค้นหาแบบ 2 Hop

เรียกใช้การค้นหาต่อไปนี้ใน Notebook

%%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

ทำความเข้าใจผลลัพธ์

การค้นหานี้

  1. เริ่มที่โหนด Customer ที่มี account_id "d2f1f992-d116-41b3-955b-6c76a3352657" (Nicole Wade)
  2. ตามขอบ OwnsEmail, OwnsPhone หรือ LinkedToAddress ไปยังโหนดที่เชื่อมต่อ (Phone, Email หรือ Address)
  3. ติดตามขอบกลับจากโหนดที่เชื่อมต่อนั้นไปยังโหนด Customer อื่นๆ
  4. กรองขอบตามการประทับเวลา (last_updated_ts) เพื่อดูสถานะของเครือข่ายในเวลาที่เฉพาะเจาะจง

คุณจะเห็นว่า Zachary Cordova และ Brenda Brown เชื่อมต่อกับ Nicole ผ่านที่อยู่เดียวกัน

6. วิเคราะห์เครือข่าย (4 Hop)

ในขั้นตอนนี้ คุณจะขยายคําค้นหาเพื่อค้นหาความสัมพันธ์ที่ซับซ้อนมากขึ้น เราจะมองหาการเชื่อมต่อแบบ4 ฮอป ซึ่งช่วยให้เราค้นหาบัญชีที่เชื่อมต่อผ่านเอนทิตีระดับกลางหลายรายการได้ (เช่น ลูกค้า ก. -> อีเมล -> ลูกค้า ข. -> โทรศัพท์ -> ลูกค้า ค.)

นอกจากนี้ เราจะสังเกตการเปลี่ยนแปลงของเครือข่ายนี้เมื่อเวลาผ่านไป

สถานะ "ก่อน"

ก่อนอื่น มาดูเครือข่าย ณ วันที่ 30 กรกฎาคม 2025

เรียกใช้การค้นหาต่อไปนี้

%%bigquery --graph
%%bigquery --graph

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)]))
GRAPH fraud_demo.FraudDemo
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) ระหว่างสถานะ "ก่อน" และ "หลัง" ที่เราสังเกตเห็นในขั้นตอนก่อนหน้า

เรียกใช้การค้นหารายงานการประพฤติมิชอบ

เรียกใช้การค้นหาต่อไปนี้ใน Notebook

%%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. การตรวจจับในวงกว้าง

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

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

เรียกใช้การค้นหาที่ปรับขนาด

เรียกใช้การค้นหาต่อไปนี้ใน Notebook

%%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 สำหรับทรัพยากรที่ใช้ในโค้ดแล็บนี้

เรียกใช้คำสั่ง SQL ต่อไปนี้เพื่อล้างข้อมูลสภาพแวดล้อม

DROP PROPERTY GRAPH IF EXISTS fraud_demo.FraudDemo;
DROP SCHEMA IF EXISTS fraud_demo CASCADE;

10. ขอแสดงความยินดี

ยินดีด้วย คุณสร้างโซลูชันการตรวจหาการประพฤติมิชอบโดยใช้กราฟ BigQuery ได้สำเร็จแล้ว

คุณได้เรียนรู้วิธีการต่อไปนี้แล้ว

  • โหลดข้อมูลจาก Cloud Storage ลงใน BigQuery
  • กำหนดกราฟพร็อพเพอร์ตี้โดยใช้ DDL
  • ค้นหากราฟโดยใช้ GQL เพื่อค้นหาความสัมพันธ์ที่ซับซ้อนและไม่ซับซ้อน
  • รวมการวิเคราะห์กราฟเข้ากับข้อมูลธุรกิจเพื่อระบุความเสี่ยง
  • แสดงภาพเครือข่ายในวงกว้าง

แหล่งข้อมูลเพิ่มเติม