BigQuery Graph की मदद से धोखाधड़ी का पता लगाना

1. परिचय

मार्केटिंग हेडर - फ़िनटेक में धोखाधड़ी

धोखाधड़ी वाली गतिविधि में अक्सर, कनेक्ट की गई इकाइयों के छिपे हुए नेटवर्क शामिल होते हैं. जैसे, एक ही ईमेल पते, फ़ोन नंबर या घर या ऑफ़िस के पते को शेयर करने वाले कई खाते. पारंपरिक रिलेशनल डेटाबेस, इन जटिल, मल्टी-हॉप रिलेशनशिप की क्वेरी को कुशलता से करने में मुश्किल हो सकती है.

BigQuery Graph की मदद से, ग्राफ़ डेटाबेस का इस्तेमाल करके, इन नेटवर्क का बड़े पैमाने पर विश्लेषण किया जा सकता है. मौजूदा BigQuery टेबल के ऊपर, प्रॉपर्टी ग्राफ़ तय किया जा सकता है. साथ ही, अपने डेटा में पैटर्न ढूंढने के लिए, Graph Query Language (GQL) का इस्तेमाल किया जा सकता है.

धोखाधड़ी का पता लगाने के लिए, ग्राफ़ नेटवर्क का एक सामान्य ऐप्लिकेशन, उन ऑर्डर को रोकना है जिनके डिलीवरी पते, धोखाधड़ी वाले नेटवर्क से जुड़े हैं. इसके अलावा, के पेमेंट को रोकना भी इसका एक सामान्य ऐप्लिकेशन है.

इस कोडलैब में, BigQuery Graph का इस्तेमाल करके, धोखाधड़ी का पता लगाने वाला सलूशन बनाया जाएगा. इसमें Cloud Storage से डेटा लोड किया जाएगा, प्रॉपर्टी ग्राफ़ बनाया जाएगा, और संदिग्ध कनेक्शन की पहचान करने के लिए, ग्राफ़ क्वेरी का इस्तेमाल किया जाएगा.

आपको क्या सीखने को मिलेगा

  • BigQuery डेटासेट बनाना और डेटा लोड करना.
  • डीडीएल का इस्तेमाल करके, प्रॉपर्टी ग्राफ़ तय करना.
  • जीक्यूएल का इस्तेमाल करके, ग्राफ़ की क्वेरी करना.
  • धोखाधड़ी का पता लगाने के लिए, ग्राफ़ ऐनालिटिक्स का इस्तेमाल करना.

आपको किन चीज़ों की ज़रूरत होगी

  • बिलिंग की सुविधा वाला Google क्लाउड प्रोजेक्ट.
  • BigQuery नोटबुक एनवायरमेंट (BigQuery Studio या Colab Enterprise).

लागत

इस लैब में, Google Cloud के उन संसाधनों का इस्तेमाल किया जाता है जिनके लिए शुल्क लिया जाता है. अनुमानित लागत 5 डॉलर से कम है. हालांकि, यह लागत तब लागू होगी, जब आपने लैब पूरी होने के बाद, संसाधनों को मिटा दिया हो.

2. शुरू करने से पहले

Google Cloud प्रोजेक्ट चुनना या बनाना

  1. Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, कोई Google Cloud प्रोजेक्ट चुनें या बनाएं.
  2. पक्का करें कि आपके Google Cloud प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो. यह देखने का तरीका जानें कि बिलिंग की सुविधा चालू है या नहीं.

अपना एनवायरमेंट चुनना

इस लैब को चलाने के लिए, आपको नोटबुक एनवायरमेंट की ज़रूरत होगी. इसके लिए, BigQuery Studio या Colab Enterprise का इस्तेमाल किया जा सकता है.

  1. Google Cloud Console में, BigQuery पेज पर जाएं.
  2. ग्राफ़ क्वेरी चलाने के लिए, Python नोटबुक का इस्तेमाल किया जाएगा.

Cloud Shell शुरू करना

  1. Google Cloud Console में सबसे ऊपर मौजूद, Cloud Shell चालू करें पर क्लिक करें.
  2. पुष्टि की प्रक्रिया की जांच करें:
gcloud auth list
  1. अपने प्रोजेक्ट की पुष्टि करें:
gcloud config get project
  1. ज़रूरत पड़ने पर, इसे सेट करें:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID

एपीआई चालू करें

ज़रूरी BigQuery API को चालू करने के लिए, यह कमांड चलाएं:

gcloud services enable bigquery.googleapis.com \
  bigqueryreservation.googleapis.com 

BigQuery रिज़र्वेशन और असाइनमेंट बनाना

जीक्यूएल क्वेरी चलाने के लिए, आपके पास ऐसा रिज़र्वेशन होना चाहिए जो Enterprise या Enterprise Plus एडिशन का इस्तेमाल करता हो. Cloud Shell में, Enterprise Edition का ऐसा रिज़र्वेशन बनाएं जिसमें ऑटोस्केलिंग की सुविधा हो:

# 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 नाम का डेटासेट बनाएं.

  1. इस कोडलैब के लिए, हम एसक्यूएल कमांड चलाएंगे. इन कमांड को BigQuery Studio > SQL Editor में चलाया जा सकता है. इसके अलावा, Cloud Shell में bq query कमांड का इस्तेमाल किया जा सकता है. नई एसक्यूएल क्वेरीहम मानकर चलेंगे कि कई लाइनों वाले क्रिएट स्टेटमेंट के साथ बेहतर अनुभव के लिए, BigQuery SQL Editor का इस्तेमाल किया जा रहा है.
CREATE SCHEMA IF NOT EXISTS `fraud_demo` OPTIONS(location="US");

टेबल लोड करना

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. प्रॉपर्टी ग्राफ़ बनाना

डेटा लोड होने के बाद, प्रॉपर्टी ग्राफ़ तय किया जा सकता है. प्रॉपर्टी ग्राफ़ में नोड (इकाइयां) और एज (रिलेशनशिप) शामिल होते हैं.

इस लैब में, नोड ये हैं:

  • ग्राहक: खाताधारक को दिखाता है.
  • फ़ोन: फ़ोन नंबर को दिखाता है.
  • ईमेल: ईमेल पते को दिखाता है.
  • पता: घर या ऑफ़िस के पते को दिखाता है.

एज ये हैं:

  • OwnsPhone: किसी ग्राहक को फ़ोन से कनेक्ट करता है.
  • OwnsEmail: किसी ग्राहक को ईमेल से कनेक्ट करता है.
  • LinkedToAddress: किसी ग्राहक को पते से कनेक्ट करता है.

ग्राफ़ बनाना

अपने fraud_demo डेटासेट में, FraudDemo नाम का ग्राफ़ बनाने के लिए, यह डीडीएल स्टेटमेंट चलाएं.

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. नेटवर्क का विश्लेषण करना (दो हॉप)

BigQuery Studio में नई नोटबुक खोलें.

नई नोटबुक बनाएं

इस कोडलैब के विज़ुअलाइज़ेशन और सुझाव वाले हिस्सों के लिए, हम BigQuery Studio में Google Colab नोटबुक का इस्तेमाल करेंगे. इससे हमें ग्राफ़ के नतीजों को आसानी से विज़ुअलाइज़ करने में मदद मिलती है.

कोड सेल में यह चिपकाएं:

!pip install bigquery-magics==0.12.1

BigQuery Graph Notebook को IPython Magics के तौर पर लागू किया जाता है. TO_JSON फ़ंक्शन के साथ %%bigquery मैजिक कमांड जोड़कर, नतीजों को इन सेक्शन में दिखाए गए तरीके से विज़ुअलाइज़ किया जा सकता है. इस चरण में, खातों के बीच सामान्य कनेक्शन ढूंढने के लिए, ग्राफ़ क्वेरी चलाई जाएगी. यह "दो हॉप" वाली क्वेरी है, क्योंकि यह शुरुआती नोड से दो हॉप आगे जाकर, उससे जुड़े नोड ढूंढती है. जैसे, ग्राहक -> ईमेल -> ग्राहक.

हम निकोल वेड के खाते की जांच करके शुरू करेंगे. हमें दो हॉप के ज़रिए, उससे जुड़े खाते ढूंढने हैं.

दो हॉप वाली क्वेरी चलाना

अपनी नोटबुक में यह क्वेरी चलाएं.

%%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. account_id "d2f1f992-d116-41b3-955b-6c76a3352657" (निकोल वेड) वाले Customer नोड से शुरू होती है.
  2. कनेक्ट करने वाले नोड (Phone, Email, या Address) पर जाने के लिए, OwnsEmail, OwnsPhone या LinkedToAddress में से किसी भी एज को फ़ॉलो करती है.
  3. उन कनेक्ट करने वाले नोड से वापस दूसरे Customer नोड पर जाने के लिए, एज को फ़ॉलो करती है.
  4. किसी खास समय पर नेटवर्क की स्थिति देखने के लिए, टाइमस्टैंप (last_updated_ts) के आधार पर एज को फ़िल्टर करती है.

आपको दिखेगा कि ज़ैकरी कॉर्डोवा और ब्रेंडा ब्राउन, एक ही पते के ज़रिए निकोल से कनेक्ट हैं.

6. नेटवर्क का विश्लेषण करना (चार हॉप)

इस चरण में, ज़्यादा जटिल रिलेशनशिप ढूंढने के लिए, क्वेरी को बढ़ाया जाएगा. हम चार हॉप वाले कनेक्शन ढूंढेंगे. इससे हमें ऐसे खाते ढूंढने में मदद मिलती है जो कई इंटरमीडिएट इकाइयों के ज़रिए कनेक्ट होते हैं. जैसे, ग्राहक A -> ईमेल -> ग्राहक B -> फ़ोन -> ग्राहक C.

हम यह भी देखेंगे कि समय के साथ यह नेटवर्क कैसे बदलता है.

"पहले" की स्थिति

सबसे पहले, 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

"बाद में" की स्थिति

अब देखते हैं कि दो हफ़्ते बाद नेटवर्क कैसा दिखता है. हम वही क्वेरी चलाएंगे, लेकिन इसमें तारीख की पाबंदियां नहीं होंगी.

यह क्वेरी चलाएं:

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

नतीजों को समझना

तारीख वाले फ़िल्टर हटाने पर, पूरी डेटासेट के लिए क्वेरी की जाती है. आपको दिखेगा कि नेटवर्क काफ़ी बढ़ गया है. निकोल वेड अब ज़्यादा बड़े और आपस में ज़्यादा कनेक्टेड ग्रुप का हिस्सा है. कनेक्टेड नेटवर्क का तेज़ी से बढ़ना, धोखाधड़ी वाली गतिविधि का एक अहम संकेत है. जैसे, धोखाधड़ी करने वाला कोई ग्रुप, समय के साथ संसाधन शेयर कर रहा हो.

7. धोखाधड़ी की रिपोर्ट जनरेट करना

इस चरण में, धोखाधड़ी की पूरी रिपोर्ट जनरेट करने के लिए, ग्राफ़ ऐनालिटिक्स को कारोबार के पारंपरिक डेटा (ऑर्डर) के साथ जोड़ा जाएगा. इसमें जोखिम वाले खातों और धोखाधड़ी वाले संभावित ऑर्डर की पहचान की जाएगी.

यह क्वेरी ज़्यादा जटिल है. इसमें, स्टैंडर्ड एसक्यूएल में ग्राफ़ क्वेरी चलाने के लिए, GRAPH_TABLE का इस्तेमाल किया जाता है. साथ ही, पिछले चरण में देखे गए "पहले" और "बाद में" की स्थितियों के बीच, नेटवर्क के साइज़ (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: दो हफ़्ते पहले नेटवर्क का साइज़.
  • diff: नेटवर्क के साइज़ में हुई बढ़ोतरी.
  • num_order: हाल ही के ऑर्डर की संख्या.
  • reported_as_fraud: ऑर्डर को धोखाधड़ी के तौर पर फ़्लैग किया गया है या नहीं.
  • order_total: ऑर्डर की कुल रकम.
  • notes: नेटवर्क में हुई बढ़ोतरी और ऑर्डर के इतिहास के आधार पर, जोखिम की स्थिति का हिसाब लगाया गया है.

आपको ऐसे खाते दिखेंगे जिनकी diff वैल्यू ज़्यादा है और ऑर्डर की कुल रकम ज़्यादा है. ये खाते, आगे की जांच के लिए सबसे सही हैं. "CUSTOMER AT RISK" और "POTENTIAL FRAUD ORDER" नोट की मदद से, इन खातों को प्राथमिकता दी जा सकती है.

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 खाते से शुल्क लिए जाने से बचने के लिए, आपको डेटासेट और प्रॉपर्टी ग्राफ़ मिटा देना चाहिए.

अपने एनवायरमेंट को साफ़ करने के लिए, ये एसक्यूएल स्टेटमेंट चलाएं.

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

10. बधाई हो

बधाई हो! आपने BigQuery Graph का इस्तेमाल करके, धोखाधड़ी का पता लगाने वाला सलूशन बना लिया है.

आपने यह सीखा है कि:

  • Cloud Storage से BigQuery में डेटा लोड करना.
  • डीडीएल का इस्तेमाल करके, प्रॉपर्टी ग्राफ़ तय करना.
  • सामान्य और जटिल रिलेशनशिप ढूंढने के लिए, जीक्यूएल का इस्तेमाल करके ग्राफ़ की क्वेरी करना.
  • जोखिम की पहचान करने के लिए, ग्राफ़ ऐनालिटिक्स को कारोबार के डेटा के साथ जोड़ना.
  • बड़े पैमाने पर नेटवर्क को विज़ुअलाइज़ करना.

कुछ और संसाधन