১. ভূমিকা

প্রতারণামূলক কার্যকলাপে প্রায়শই পরস্পর সংযুক্ত সত্তার গোপন নেটওয়ার্ক জড়িত থাকে—উদাহরণস্বরূপ, একাধিক অ্যাকাউন্ট একই ইমেল ঠিকানা, ফোন নম্বর বা ঠিকানা ব্যবহার করে। প্রচলিত রিলেশনাল ডেটাবেসগুলো এই জটিল, বহুস্তরীয় সম্পর্কগুলোকে দক্ষতার সাথে কোয়েরি করতে হিমশিম খেতে পারে।
BigQuery Graph আপনাকে গ্রাফ ডেটাবেস ব্যবহার করে বৃহৎ পরিসরে এই নেটওয়ার্কগুলো বিশ্লেষণ করার সুযোগ দেয়। আপনি আপনার বিদ্যমান BigQuery টেবিলগুলোর উপর একটি প্রপার্টি গ্রাফ সংজ্ঞায়িত করতে পারেন এবং আপনার ডেটার মধ্যে প্যাটার্ন খুঁজে বের করার জন্য গ্রাফ কোয়েরি ল্যাঙ্গুয়েজ (GQL) ব্যবহার করতে পারেন।
জালিয়াতি শনাক্তকরণের জন্য গ্রাফ নেটওয়ার্কের একটি সাধারণ প্রয়োগ হলো, জালিয়াতি নেটওয়ার্কের সাথে যুক্ত ডেলিভারি ঠিকানা আছে এমন অর্ডার আটকে দেওয়া অথবা সংশ্লিষ্ট পেমেন্ট বন্ধ করা।
এই কোডল্যাবে, আপনি BigQuery Graph ব্যবহার করে একটি জালিয়াতি শনাক্তকরণ সমাধান তৈরি করবেন। আপনি ক্লাউড স্টোরেজ থেকে ডেটা লোড করবেন, একটি প্রপার্টি গ্রাফ তৈরি করবেন এবং সন্দেহজনক সংযোগগুলি সনাক্ত করতে গ্রাফ কোয়েরি ব্যবহার করবেন।
আপনি যা শিখবেন
- কিভাবে একটি BigQuery ডেটাসেট তৈরি করতে এবং ডেটা লোড করতে হয়।
- DDL ব্যবহার করে কীভাবে একটি প্রপার্টি গ্রাফ সংজ্ঞায়িত করতে হয়।
- GQL ব্যবহার করে কীভাবে গ্রাফ কোয়েরি করতে হয়।
- জালিয়াতি শনাক্ত করতে কীভাবে গ্রাফ অ্যানালিটিক্স ব্যবহার করবেন।
আপনার যা যা লাগবে
- বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট।
- একটি BigQuery নোটবুক পরিবেশ (BigQuery Studio বা Colab Enterprise)।
খরচ
এই ল্যাবে ব্যবহৃত গুগল ক্লাউড রিসোর্সগুলোর জন্য বিল করা হয়। কাজ শেষ হওয়ার পর রিসোর্সগুলো মুছে ফেললে, এর আনুমানিক খরচ ৫ ডলারের কম হবে।
২. শুরু করার আগে
একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন
- গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
- আপনার গুগল ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন তা জানুন।
আপনার পরিবেশ বেছে নিন
এই ল্যাবটি চালানোর জন্য আপনার একটি নোটবুক পরিবেশের প্রয়োজন হবে। আপনি BigQuery Studio অথবা Colab Enterprise ব্যবহার করতে পারেন।
- Google Cloud Console-এ BigQuery পৃষ্ঠায় যান।
- আপনি গ্রাফ কোয়েরিগুলো চালানোর জন্য পাইথন নোটবুক ব্যবহার করবেন।
ক্লাউড শেল শুরু করুন
- Google Cloud কনসোলের শীর্ষে থাকা Activate Cloud Shell-এ ক্লিক করুন।
- প্রমাণীকরণ যাচাই করুন:
gcloud auth list
- আপনার প্রকল্পটি নিশ্চিত করুন:
gcloud config get project
- প্রয়োজনে সেট করুন:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID
এপিআই সক্ষম করুন
প্রয়োজনীয় BigQuery API সক্রিয় করতে এই কমান্ডটি চালান:
gcloud services enable bigquery.googleapis.com
৩. ডেটা লোড করুন
এই ধাপে, আপনি একটি BigQuery ডেটাসেট তৈরি করবেন এবং ক্লাউড স্টোরেজ থেকে নমুনা ডেটা লোড করবেন।
নমুনা ডেটাটিতে একটি অনুকৃত খুচরা পরিবেশের প্রতিনিধিত্বকারী বেশ কয়েকটি CSV ফাইল রয়েছে:
-
customers.csv: গ্রাহকের অ্যাকাউন্টের তথ্য। -
emails.csv: ইমেইল ঠিকানাগুলো। -
phones.csv: ফোন নম্বরগুলো। -
addresses.csv: ভৌত ঠিকানা। -
customer_emails.csv,customer_phones.csv,customer_addresses.csv: টেবিলগুলো সংযুক্ত করা হচ্ছে। -
orders.csv: অর্ডারের ইতিহাস, জালিয়াতির চিহ্নসহ।
ডেটাসেট তৈরি করুন
টেবিলগুলো রাখার জন্য fraud_demo নামে একটি ডেটাসেট তৈরি করুন।
- এই কোডল্যাবে আমরা SQL কমান্ড চালাবো। আপনি এই কমান্ডগুলো BigQuery Studio > SQL Editor- এ চালাতে পারেন, অথবা Cloud Shell-এ
bq queryকমান্ডটি ব্যবহার করতে পারেন।
আমরা ধরে নিচ্ছি যে আপনি মাল্টি-লাইন ক্রিয়েট স্টেটমেন্টের সাথে আরও ভালো অভিজ্ঞতার জন্য BigQuery SQL Editor ব্যবহার করছেন।
CREATE SCHEMA IF NOT EXISTS `fraud_demo` OPTIONS(location="US");
লোড টেবিল
ক্লাউড স্টোরেজ থেকে আপনার ডেটাসেটে ডেটা লোড করতে নিম্নলিখিত SQL স্টেটমেন্টগুলো চালান।
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
);
৪. প্রপার্টি গ্রাফ তৈরি করুন
এখন যেহেতু ডেটা লোড হয়ে গেছে, আপনি প্রপার্টি গ্রাফটি সংজ্ঞায়িত করতে পারেন। একটি প্রপার্টি গ্রাফ নোড (সত্তা) এবং এজ (সম্পর্ক) নিয়ে গঠিত।
এই ল্যাবে নোডগুলো হলো:
- গ্রাহক : হিসাবধারীর প্রতিনিধিত্ব করেন।
- ফোন : একটি ফোন নম্বর বোঝায়।
- ইমেইল : একটি ইমেইল ঠিকানা বোঝায়।
- ঠিকানা : একটি ভৌত ঠিকানা বোঝায়।
প্রান্তগুলো হলো:
- OwnsPhone : একজন গ্রাহককে একটি ফোনের সাথে সংযুক্ত করে।
- OwnsEmail : একজন গ্রাহককে একটি ইমেলের সাথে সংযুক্ত করে।
- LinkedToAddress : একজন গ্রাহককে একটি ঠিকানার সাথে সংযুক্ত করে।

গ্রাফটি তৈরি করুন
আপনার fraud_demo ডেটাসেটে FraudDemo নামের গ্রাফটি তৈরি করতে নিম্নলিখিত DDL স্টেটমেন্টটি চালান।
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)
);
৫. নেটওয়ার্ক বিশ্লেষণ (২-হপ)
BigQuery Studio-তে একটি নতুন নোটবুক খুলুন।

এই কোডল্যাবের ভিজ্যুয়ালাইজেশন এবং রিকমেন্ডেশন অংশের জন্য, আমরা BigQuery Studio-তে একটি Google Colab নোটবুক ব্যবহার করব। এর মাধ্যমে আমরা গ্রাফের ফলাফলগুলো সহজেই ভিজ্যুয়ালাইজ করতে পারব।
BigQuery Graph Notebook একটি IPython Magics হিসেবে বাস্তবায়িত হয়েছে। TO_JSON ফাংশনের সাথে %%bigquery ম্যাজিক কমান্ডটি যোগ করে, আপনি নিম্নলিখিত বিভাগগুলিতে দেখানো উপায়ে ফলাফলগুলি ভিজ্যুয়ালাইজ করতে পারেন। এই ধাপে, আপনি অ্যাকাউন্টগুলির মধ্যে সহজ সংযোগ খুঁজে বের করার জন্য একটি গ্রাফ কোয়েরি চালাবেন। এটি একটি "২-হপ" কোয়েরি, কারণ এটি সম্পর্কিত নোডগুলি খুঁজে বের করার জন্য একটি শুরুর নোড থেকে ২ হপ ভ্রমণ করে (যেমন, Customer -> Email -> Customer)।
আমরা নিকোল ওয়েডের অ্যাকাউন্টটি তদন্ত করার মাধ্যমে শুরু করব। আমরা দুটি ধাপে তার সাথে সম্পর্কিত যেকোনো অ্যাকাউন্ট খুঁজে বের করতে চাই।
২-হপ কোয়েরিটি চালান
আপনার নোটবুকে নিম্নলিখিত কোয়েরিটি চালান।
%%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

ফলাফলগুলো বুঝুন
এই কোয়েরি:
- "d2f1f992-d116-41b3-955b-6c76a3352657" (নিকোল ওয়েড)
account_idসহCustomerনোড থেকে শুরু হয়। -
OwnsEmail,OwnsPhone, বাLinkedToAddressএর যেকোনো একটি প্রান্ত অনুসরণ করে একটি সংযোগকারী নোডে (Phone,Email, বাAddress) পৌঁছায়। - সেই সংযোগকারী নোড থেকে অন্যান্য
Customerনোড পর্যন্ত এজগুলো অনুসরণ করে। - একটি নির্দিষ্ট সময়ে নেটওয়ার্কের অবস্থা দেখার জন্য টাইমস্ট্যাম্পের (
last_updated_ts) উপর ভিত্তি করে এজগুলোকে ফিল্টার করে।
আপনি দেখবেন যে জ্যাকারি কর্ডোভা এবং ব্রেন্ডা ব্রাউন একই ঠিকানার মাধ্যমে নিকোলের সাথে সংযুক্ত।
৬. নেটওয়ার্ক বিশ্লেষণ (৪-হপ)
এই ধাপে, আপনি আরও জটিল সম্পর্ক খুঁজে বের করার জন্য কোয়েরিটি প্রসারিত করবেন। আমরা ৪-হপ সংযোগ খুঁজব। এর মাধ্যমে আমরা এমন অ্যাকাউন্টগুলো খুঁজে পেতে পারি যেগুলো একাধিক মধ্যবর্তী সত্তার (যেমন, গ্রাহক A -> ইমেল -> গ্রাহক B -> ফোন -> গ্রাহক C) মাধ্যমে সংযুক্ত।
আমরা আরও পর্যবেক্ষণ করব সময়ের সাথে সাথে এই নেটওয়ার্কটি কীভাবে পরিবর্তিত হয়।
"পূর্বের" অবস্থা
প্রথমে, ৩০ জুলাই, ২০২৫ তারিখে নেটওয়ার্কটির অবস্থা কেমন ছিল তা দেখা যাক।
নিম্নলিখিত কোয়েরিটি চালান:
%%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

"পরবর্তী" অবস্থা
এখন, দেখা যাক ২ সপ্তাহ পরে নেটওয়ার্কটি কেমন দেখায়। আমরা একই কোয়েরিটি চালাব, কিন্তু তারিখের সীমাবদ্ধতা ছাড়া।
নিম্নলিখিত কোয়েরিটি চালান:
%%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

ফলাফলগুলো বুঝুন
তারিখের ফিল্টারগুলো সরিয়ে দিলে, আপনি সম্পূর্ণ ডেটাসেটের উপর কোয়েরি করতে পারবেন। আপনি লক্ষ্য করবেন যে নেটওয়ার্কটি উল্লেখযোগ্যভাবে বৃদ্ধি পেয়েছে। নিকোল ওয়েড এখন একটি অনেক বড় ও অত্যন্ত সংযুক্ত গোষ্ঠীর অংশ। একটি সংযুক্ত নেটওয়ার্কের এই দ্রুত সম্প্রসারণ সম্ভাব্য প্রতারণামূলক কার্যকলাপের একটি শক্তিশালী ইঙ্গিত, যেমন কোনো প্রতারক চক্রের সময়ের সাথে সাথে নিজেদের সম্পদ ভাগাভাগি করে নেওয়া।
৭. জালিয়াতি প্রতিবেদন তৈরি করুন
এই ধাপে, আপনি একটি বিশদ জালিয়াতি প্রতিবেদন তৈরি করতে গ্রাফ অ্যানালিটিক্সকে প্রচলিত ব্যবসায়িক ডেটার (অর্ডার) সাথে একত্রিত করবেন। এর মাধ্যমে আপনি ঝুঁকিপূর্ণ অ্যাকাউন্ট এবং সম্ভাব্য জালিয়াতিপূর্ণ অর্ডারগুলো শনাক্ত করবেন।
এই কোয়েরিটি আরও জটিল। এটি স্ট্যান্ডার্ড SQL-এর ভিতরে গ্রাফ কোয়েরি চালানোর জন্য 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" নোটগুলি এই অ্যাকাউন্টগুলিকে অগ্রাধিকার দিতে সাহায্য করে।

৮. বৃহৎ পরিসরে সনাক্তকরণ
বিশ্লেষণের এই চূড়ান্ত ধাপে, আপনি নেটওয়ার্কটিকে আরও বড় পরিসরে দেখবেন। একটিমাত্র অ্যাকাউন্ট দিয়ে শুরু করার পরিবর্তে, আপনি একগুচ্ছ সন্দেহজনক অ্যাকাউন্টের মধ্যে সংযোগ খুঁজে বের করার জন্য অনুসন্ধান করবেন।
এর মাধ্যমে আপনি দেখতে পারবেন যে একাধিক স্বাধীন তদন্ত আসলে একই বৃহত্তর জালিয়াতি চক্রের অংশ কি না।
স্কেলড কোয়েরিটি চালান
আপনার নোটবুকে নিম্নলিখিত কোয়েরিটি চালান।
%%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
ফলাফলগুলো বুঝুন
এই কোয়েরিটি একটি জটিল গ্রাফ ফেরত দেয়, যা দেখায় কীভাবে নির্দিষ্ট সন্দেহজনক অ্যাকাউন্টগুলো একে অপরের সাথে ওভারল্যাপ করে এবং রিসোর্স শেয়ার করে। আপনি এখন বৃহৎ পরিসরে জালিয়াতি শনাক্ত করতে পারবেন, যার মাধ্যমে এমন কার্যকলাপের গুচ্ছ চিহ্নিত করা যায় যার জন্য একটি সমন্বিত পদক্ষেপের প্রয়োজন হতে পারে।

৯. পরিষ্কার করা
এই কোডল্যাবে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে, আপনার ডেটাসেট এবং প্রপার্টি গ্রাফটি মুছে ফেলা উচিত।
আপনার পরিবেশ পরিষ্কার করতে নিম্নলিখিত SQL স্টেটমেন্টগুলো চালান।
DROP PROPERTY GRAPH IF EXISTS fraud_demo.FraudDemo;
DROP SCHEMA IF EXISTS fraud_demo CASCADE;
১০. অভিনন্দন
অভিনন্দন! আপনি BigQuery Graph ব্যবহার করে সফলভাবে একটি জালিয়াতি শনাক্তকরণ সমাধান তৈরি করেছেন।
আপনি শিখেছেন কীভাবে:
- ক্লাউড স্টোরেজ থেকে BigQuery-তে ডেটা লোড করুন।
- DDL ব্যবহার করে একটি প্রপার্টি গ্রাফ সংজ্ঞায়িত করুন।
- সরল ও জটিল সম্পর্ক খুঁজে বের করতে GQL ব্যবহার করে গ্রাফটি কোয়েরি করুন।
- ঝুঁকি শনাক্ত করতে ব্যবসায়িক তথ্যের সঙ্গে গ্রাফ অ্যানালিটিক্সকে একত্রিত করুন।
- বৃহৎ পরিসরে নেটওয়ার্কগুলো দৃশ্যমান করুন।
আরও তথ্য