1. Giriş
Kayıp Kargo soruşturmasının son aşamasına hoş geldiniz. Android figürinlerinin çalınan konteyneri Londra'dan Sidney'e kadar takip edildikten sonra iz kayboldu. Konteynerin akıllı güvenlik kasası, transponderi devre dışı bırakılarak otomatik acil durum kilitlemesi tetiklendi.
Değerli kargonun sonsuza dek kilitlenmesini önlemek için konteynerin son konumunu bulup kasayı fiziksel olarak açmak üzere manuel geçersiz kılma şifresini almanız gerekiyor.

Kayıp konteyneri bulup kargoyu güvence altına almak için gönderinin yolculuğunu izlemek üzere BigQuery Property Graph oluşturacaksınız. Ardından, Etkileşimli Analiz'i kullanarak bu ağı doğal dilde sorgulayacak ve geçersiz kılma kodlarını bulmak için Knowledge Catalog ile verilerinizin meta verileri üzerinde semantik arama yaparak işlemi tamamlayacaksınız.
💡 1. Laboratuvar veya 2. Laboratuvar'ı mı kaçırdınız? Merak etmeyin! Bu laboratuvar tamamen bağımsızdır. Ortam kurulumu adımları, ihtiyacınız olan her şeyi sağlayarak doğrudan başlayıp bağımsız olarak tamamlamanıza olanak tanır.
Yapacaklarınız
- Depoyu klonlayın ve Google Cloud Shell'de kurulum komut dosyasını çalıştırın.
- BigQuery'de şirket, gemi ve manifesto verilerini bağlayan bir Özellik Grafiği oluşturun.
- Sorumlu operatörü belirlemek için kargonun yolculuğunu izleyerek grafiği doğal dilde sorgulamak üzere Sohbet Analizi'ni kullanın.
- Bilgi Kataloğu'nu kullanarak son geçersiz kılma kodlarını içeren tabloyu bulun.
- Son kodu maskesini kaldırıp göstermek için BigQuery sütun düzeyinde erişim denetimini kullanın.
İhtiyacınız olanlar
- Chrome gibi bir web tarayıcısı
- Faturalandırmanın etkin olduğu bir Google Cloud projesi
- Google Cloud Shell'e erişim
Bu codelab, her seviyeden veri uzmanı için tasarlanmıştır.
Bu codelab'de oluşturulan kaynakların maliyeti 5 ABD dolarından az olmalıdır.
Tahmini süre: Bu codelab'in tamamlanması yaklaşık 45 dakika sürer.
2. Başlamadan önce
Google Cloud projesi oluşturma
- Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
- Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun.
Cloud Shell'i Başlatma
Kodu indirmek, kurulum komut dosyalarını çalıştırmak ve uygulamayı dağıtmak için Google Cloud Shell'i kullanacaksınız.
- Yeni bir tarayıcı sekmesinde Cloud Shell'i açın:

- Bağlandıktan sonra proje kimliğinizi ayarlayın ve ortamınızı onaylayın:
gcloud config set project <<YOUR_PROJECT_ID>>
export PROJECT_ID=$(gcloud config get-value project)
export REGION=us-central1
Şuna benzer bir mesaj görürsünüz:
Your active configuration is: [cloudshell-####] Updated property [core/project]
Gerekli API'leri etkinleştirme
Gerekli API'leri etkinleştirmek için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud services enable \
bigquery.googleapis.com \
aiplatform.googleapis.com \
datacatalog.googleapis.com \
geminidataanalytics.googleapis.com \
cloudaicompanion.googleapis.com
Başarılı bir yürütmenin ardından şuna benzer bir mesaj görürsünüz:
Operation "operations/..." finished successfully.
3. Ortamınızı ayarlama
Bu serinin önceki laboratuvarlarında araştırmamızın temelini oluşturduk.
1. Depoyu klonlama
Codelab deposunu Cloud Shell kabuk ortamınıza klonlayın:
cd ~/
git clone --filter=blob:none --no-checkout https://github.com/GoogleCloudPlatform/devrel-demos.git
cd ~/devrel-demos
git sparse-checkout init --cone
git sparse-checkout set codelabs/bigquery-graph-analytics
git checkout main
cd codelabs/bigquery-graph-analytics/
2. Temel tabloları ve politika etiketlerini ayarlama
BigQuery veri kümenizi doldurmak ve hassas verileri kısıtlamak için sütun düzeyinde güvenlik etiketleri uygulamak üzere kurulum komut dosyasını çalıştırın:
bash setup_lab.sh
Terminalinizdeki çıkışta başarılı başlatma işleminin gösterildiğini onaylayın:
🚀 Provisioning foundational tables and deploying Policy Tag security bindings... 🎯 Active Project: your-project-id ... 🎉 Success! Foundational tables initialized and Column-Level Policy Tags fully mapped out of the box!
Ortamınız başarıyla ayarlandıktan ve lojistik verileri BigQuery'ye aktarıldıktan sonra tablolarınızı bağlamak ve kargonun yolculuğunu izlemek için artık bir Özellik Grafiği oluşturabilirsiniz.
4. BigQuery Graph'ı kullanarak verilerinizi bağlama
Tedarik zinciri verilerimizi analiz etmek için şirketlerin, gemilerin ve manifestoların birbiriyle nasıl ilişkili olduğunu tanımlayacağız. Mülk grafiği oluşturmak, bu bağlantıları kolayca sorgulamamıza olanak tanır.
1. Özellik grafikleri ilişkileri nasıl modeller?

BigQuery özellik grafiği, ağları aşağıdaki yöntemlerle modeller:
- Düğümler: Ağdaki öğelerdir. Bu laboratuvarda düğümler Şirketler (iletişim bilgilerini doğrudan saklayan), Manifestolar ve Gemiler'i temsil eder.
- Kenarlar: Düğümleri birbirine bağlayan ilişkiler. Örneğin:
- Bir kenar, Manifest ile Vessel'ı (
manifeststablosundaki ilişkiler aracılığıyla) birbirine bağlar. - Bir kenar, Vessel'ı Company'ye (
vesselstablosundaki ilişkiler aracılığıyla) bağlar.
- Bir kenar, Manifest ile Vessel'ı (
- Özellikler: Düğümlerde veya kenarlarda depolanan meta verilerdir. Örneğin, bir Şirket düğümünde
company_namevephone_numbergibi sütunlar, bir Manifest düğümünde iseseal_integrity_statusve koordinatlar (last_ping_lat,last_ping_long) bulunur. - Etiketler: Sorgu araçlarının düğüm ve ilişki türlerini tanıyabilmesi için düğümlere (ör.
Company,Vessel,Manifest) ve kenarlara (ör.CARRIED_BY,OPERATED_BY) atanan etiket adları.
2. Özellik grafiğini BigQuery'de dağıtma
setup_graph.sql dosyası, mülk grafiğini tanımlamak ve oluşturmak için SQL DDL'yi içerir ancak şu anda eksiktir. Bu şema dosyasını derleyip dağıtmadan önce kenar etiketlerini (ilişkiler) tanımlamanız gerekir:
- Cloud Shell Düzenleyici'yi açın.

- Dosyayı
setup_graph.sqlCloud Shell Düzenleyici'de açın.

- Kenar etiketlerinin yer tutucularını bulun:
- 22.satır:
`EDGE_TABLE_PLACEHOLDER`yerine, manifestoların gemilerle ilişkisini gösteren anlamlı bir etiket (ör.CARRIED_BY) kullanın. - 27.satır:
`EDGE_TABLE_PLACEHOLDER`yerine gemilerin şirketlerle ilişkisini gösteren bir etiket (ör.OPERATED_BY) kullanın.
- 22.satır:
- Dosyayı kaydedin.
Şimdi Cloud Shell terminaline dönün ve tamamlanmış komut dosyasını kullanarak güncellenen mülk grafiğini dağıtın:
bq query --use_legacy_sql=false < setup_graph.sql
İşin tamamlandığını belirten bir çıkış görmelisiniz:
Waiting on bqjob_r... ... (0s) Current status: DONE
Mülk Grafiği ayrıntılarını BigQuery Konsolu'nda görüntüleyebilirsiniz:
lost_cargo_dataset'i bulun ve Grafikler'i seçin:

Mülk grafiğimiz başarıyla derlendi. Şimdi bağlantıları sorgulamak ve görselleştirmek için BigQuery Studio'ya geçelim.
5. Grafiğinize sorgu gönderme
Grafiği doğrudan BigQuery Studio'da yerel Graph Query Language (GQL) kullanarak sorgulayabilir ve görsel olarak keşfedebilirsiniz.
1. Konteyner -> gemi -> şirket zincirini sorgulama
Kargo taşıyan gemileri kimin işlettiğini bularak GQL sorgularını inceleyelim. Operatörü bulmak için lojistik ağımızdaki üç ayrı öğe düğümünde gezinmek gerekir:

- Kapsayıcı
Manifestdüğümünden başlayın. - Taşıma
Vesselöğesini bulmak içinCARRIED_BYilişki kenarını takip edin. - Bu gemiden sorumlu
Company'ye gidenOPERATED_BYilişki kenarını takip edin ve kimliğini alın.
Öncelikle, tam grafiği görmek için tüm ağı (filtre olmadan) görselleştirecek bir sorgu çalıştıralım.
- BigQuery Studio SQL düzenleyicide yeni bir sekme açın, aşağıdaki GQL sorgusunu yapıştırın ve Çalıştır'ı tıklayın:
SELECT * FROM GRAPH_TABLE( `lost_cargo_dataset.logistics_network` MATCH p = (m:Manifest)-[:CARRIED_BY]->(v:Vessel)-[:OPERATED_BY]->(comp:Company) RETURN TO_JSON(p) AS path ); - Sorgu tamamlandığında, alttaki Sorgu sonuçları bölmesinde Grafik sekmesini (Sonuç tablosu sekmesinin yanında bulunur) tıklayın.

- BigQuery, sonuçları etkileşimli bir görsel grafik gösterimi olarak oluşturur. Bağlı konteynerler, gemiler ve operatörlerden oluşan ağın tamamını görmek için yakınlaştırın.
GQL sorgusunun anatomisi
Şimdi de çalıştırdığımız GQL sorgusunu inceleyelim:
GRAPH_TABLE: BigQuery'yilogistics_networkgrafiğine karşı bir özellik grafiği sorgusu yürütmeye yönlendirir.MATCH: Çok hoplu geçiş kalıbını bildirir.Manifest(m) ile başlıyoruz,Vessel(v) öğesini işaret eden:CARRIED_BYkenar ilişkisini eşleştiriyoruz, ardındanCompany(comp) öğesini işaret eden:OPERATED_BYkenar ilişkisini eşleştiriyoruz.- GQL, karmaşık birleştirme mantığını sezgisel, insan tarafından okunabilir ASCII art ilişki oklarıyla
()->[]->()değiştirerek çok adımlı sorguları yazmayı ve optimize etmeyi çok kolay hale getirir. RETURN: Eşleşen öğelerden özellikleri veya JSON yolunu döndürür.
2. GQL sorgu sonuçlarını filtreleme
Şimdi sorguyu filtreleyerek yalnızca hedefimiz olan saldırıya uğramış kapsayıcının yoluna bakalım MV-CAPYBARA-003.
- Aşağıdaki sorguyu SQL düzenleyiciye yapıştırın ve Çalıştır'ı tıklayın:
SELECT * FROM GRAPH_TABLE( `lost_cargo_dataset.logistics_network` MATCH p = (m:Manifest {shipment_id: 'MV-CAPYBARA-003'})-[:CARRIED_BY]->(v:Vessel)-[:OPERATED_BY]->(comp:Company) RETURN TO_JSON(p) AS path ); - Sonuçlar bölümünde Grafik sekmesini tıklayın.

- Görüntüleyici artık yalnızca
MV-CAPYBARA-003için etkin geçiş rotasını gösteriyor. Düğümleri ve bağlantıları görmek için yakınlaştırın:- Özellikler panelini açmak için
Companydüğümünü çift tıklayın. Mülkler bölümündecompany_id:103(Davy Jones Shipping) operatörünü görürsünüz. Bu şirket kimliğini not edin. Güvenlik kayıt defterinden izin geçiş kodunu almak için bu kimliğe ihtiyacınız olacak. VesseldüğmesininFlying Dutchmanolduğunu doğrulamak için düğmeyi çift tıklayın.
- Özellikler panelini açmak için
6. Etkileşimli Analytics'i kullanarak grafiğinizle sohbet etme
Şirket kimliğini bulmak için grafiğinize manuel olarak sorgu gönderdiğinize göre, şimdi de grafiğimizle doğrudan sohbet etmek ve kapsayıcımızın nereye gittiğini belirlemek için Etkileşimli Analiz'i kullanalım.
1. Konuşma Analizi oturumu başlatma
- Google Cloud Console'da BigQuery Console'a gidin ve veri kümenizi bulmak için kaynaklar panelini genişletin (
lost_cargo_dataset). - Mülk Grafiği kaynağınızı tıklayın:
logistics_network. - Üstteki ayrıntı paneli araç çubuğunda Sohbet düğmesini tıklayın. Bu işlem, grafiğinizin bağlamıyla önceden yüklenmiş bir Etkileşimli Analizler oturumu açar.

2. Kaçırılan konteyner için en yakın yerleştirme bağlantı noktasını belirleyin.
Deniz devriye uçağı, kargo gemimizin açıklamasına uyan bir geminin POINT(-122.48 37.55) koordinatlarında şebeke dışı (transponderi devre dışı bırakılmış) seyrettiğini tespit etti. Kargoyu durdurmak için Davy Jones Shipping gölge sendikasının faaliyet gösterdiği en yakın yanaşma limanını bulmamız gerekiyor.
Dünyadaki tüm limanları manuel olarak aramak yerine, sendikanın aktif filosuyla bağlantılı limanları çekmek ve hangisinin gözlem yerine fiziksel olarak en yakın olduğunu ölçmek için grafik ağımızı sorgulayacağız.
- Etkileşimli Analytics sohbet kutusuna aşağıdaki istemi girin:
Find all ports associated with Davy Jones Shipping vessels. Which port is closest to coordinate POINT(-122.48 37.55), show the distance in km, and display it on a map.

- Yanıtı dikkatlice inceleyin. Ajan, grafikte ilerleyerek en yakın yanaşma tesisini ve mesafesini döndürüyor:
- Yerleştirme bağlantı noktası:
Mountain View Terminal - Mesafe:
39.42 kilometers
- Yerleştirme bağlantı noktası:
- Etkileşimli Analytics, yerel coğrafi (GIS) entegrasyonuyla Gemini tarafından desteklendiği için coğrafi koordinat noktalarını yorumlayabilir ve konumu doğrulamak için dünya bilgisinden yararlanabilir:"Gemi, Kaliforniya'daki Mountain View Terminali'ne yaklaşık 39, 42 kilometre uzaklıkta ve oraya yanaşmak üzere ilerliyor."
Bu, kargomuzun doğrudan Mountain View'a gittiğini onaylar.
Arka planda: Grafik Sorgu Dili (GQL) ve Coğrafi Bilgi Sistemi
Arka planda, Conversational Analytics aracısı, grafik yol eşleştirmeyi coğrafi mesafe hesaplamalarıyla birleştiren bir sorguyu dinamik olarak derleyip yürütür. Bu işlem, yerel bir GQL COLUMNS ifadesi kullanılarak gerçekleştirilir ve jeodezik mesafe, grafik geçiş eşleşmesi içinde yerel olarak hesaplanır:
SELECT port_id, port_name, country, latitude, longitude, distance_km
FROM GRAPH_TABLE(
`lost_cargo_dataset.logistics_network`
MATCH (c:Company)<-[]-(v:Vessel)-[]->(p:Port)
WHERE LOWER(c.company_name) = 'davy jones shipping'
COLUMNS (
p.port_id,
p.port_name,
p.country,
p.latitude,
p.longitude,
ROUND(ST_DISTANCE(ST_GEOGPOINT(p.longitude, p.latitude), ST_GEOGPOINT(-122.48, 37.55)) / 1000, 2) AS distance_km
)
)
ORDER BY distance_km ASC;
BigQuery, yerel Coğrafi (CBS) işlevlerini (ST_DISTANCE, ST_GEOGPOINT) GQL özellik grafiği eşleşmesi ile birleştirerek sendikanın operasyonel ayak izini dinamik olarak çözer ve gerçek dünyadaki fiziksel yakınlığı tek bir sorguda hesaplar.
7. Eksik verilerinizi Bilgi Kataloğu ile bulma
Özellik grafiğinde ilişkiler gösterilir ancak gerçek geçersiz kılma kodlarının depolandığı tablo yer almaz.
Yüzlerce veri kümesi ve tablonun bulunduğu gerçek bir kurumsal ortamda bu bilgileri bulmak zor olabilir. Anlamsal arama yapmak ve doğru tabloyu bulmak için Knowledge Catalog'u kullanırız.
1. Bilgi Kataloğu'nda Semantik Arama
- Google Cloud Console'da Knowledge Catalog ➔ Search'ü arayıp bu bölüme gidin.
- Sistemler bölümündeki arama filtresi sütununda, sonuçları daraltmak için BigQuery'yi işaretleyin.
- Arama kutusuna aşağıdaki sorguyu girin:
container override codes

- Arama sonuçlarında görünen
maritime_security_registrytablo kaynağını tıklayın:
Meta veri şeması incelendiğinde tabloda, koordinatör şirket co_id, saklama görevlisi jetonu cust_tok gibi kapsayıcı güvenlik verileri için sütunların ve en önemlisi güvenli kapsayıcı geçersiz kılma şifre kodu sütununun clc_ovr_cd yer aldığı görülür.
Hem tabloyu hem de kargomuzu kurtarmak için gereken güvenli sütunu başarıyla bulduk.
🔓 Gerçek Dünya Yönetimi: Üretim Enterprise ortamında güvenlik ve yönetim ekipleri şunlardan da yararlanır:
- Yönler ve Etiket Şablonları: Tablo şemalarına işletme meta verileri (ör. veri sahibi, saklama süresi veya kimliği tanımlayabilecek bilgilerin sınıflandırılması) eklemek için.
- Veri Soyu:
maritime_security_registrygibi tabloların nasıl sorgulandığını ve aşağı akış sistemleri tarafından nasıl kullanıldığını gösteren görsel akış çizelgelerini otomatik olarak oluşturmak için.
2. BigQuery'de sütun güvenliğini inceleme
- BigQuery Konsolu'na geri dönün.
- Gezgin sekmesinde
lost_cargo_datasetsimgesini seçin vemaritime_security_registrytablosunu tıklayın. - Şema sekmesini tıklayın.

clc_ovr_cdsütununun,MaskShippingDetailsadlı bir politika etiketiyle (Politika etiketleri sütununda listelenir) güvenli hale getirildiğini unutmayın.- BigQuery'de yeni bir SQL Düzenleyici sekmesi açın ve aşağıdaki sorguyu çalıştırarak kayıt geçersiz kılma kodlarını görüntülemeyi deneyin:
SELECT * FROM `lost_cargo_dataset.maritime_security_registry` WHERE co_id = 103; - Hesabınız henüz
MaskShippingDetailsile etiketlenmiş sütunları okuma iznine sahip olmadığından sorgu, Erişim Reddedildi veritabanı güvenlik hatasıyla hemen başarısız olur:

8. Şifre kodunu almak için sütun güvenliğini kırma
Son geçersiz kılma kodunu düz metin olarak okumak için kullanıcı hesabımıza MaskShippingDetails ile etiketlenmiş sütunları okuma izni vermemiz gerekir.
1. Politika Etiketi İzinleri Verme
- BigQuery Console'un sol gezinme bölmesinde Politika etiketleri'ne gidin.
LostCargoSecurity_adlı sınıflandırmayı seçin.- Etiket listesinde
MaskShippingDetailssimgesini tıklayın. - Ekranın sağ tarafındaki Bilgi panelinde Yetkili Ekle'yi tıklayın. (Panel gizlenmişse sağ üstteki Bilgi Panelini Göster'i tıklayın.)
- Yeni sorumlular alanına etkin Google Cloud kullanıcı e-postanızı girin.
- Bir rol seçin açılır listesinde Ayrıntılı Okuyucu'yu arayıp seçin, ardından Kaydet'i tıklayın.

2. Geçersiz kılma kodu için sorgu
BigQuery çalışma alanı düzenleyicinize geri dönün. Artık ayrıntılı okuyucu erişiminiz olduğundan sorguyu tekrar çalıştırabilir ve maskelenmemiş verileri görebiliriz:
SELECT * FROM `lost_cargo_dataset.maritime_security_registry`
WHERE co_id = 103;
🔓 Sonuç
Sorgu, maskelenmemiş geçersiz kılma kodunu döndürür:
SHIVER-ME-TIMBERS-888

9. Temizleme
Ücretlendirilmemek için bu laboratuvar sırasında oluşturulan sanal alan kaynaklarını temizleyin.
Cloud Shell Terminal'e dönün ve lojistik tablolarını içeren BigQuery veri kümesini silin:
bq rm -r -f -d lost_cargo_dataset
Klonlanan depo dosyalarını kaldırın:
cd ..
rm -rf data-cloud-roadshow-26
10. Tebrikler
İncelemeyi başarıyla çözüme ulaştırdınız ve gümrükten geçirme geçersiz kılma kodunu aldınız.
Öğrendikleriniz
- Karmaşık öğeleri ve ilişkileri temsil etmek için BigQuery'de mülk grafiği oluşturma
- Veri bağlantılarını yakalamak için Düğümler, Kenarlar, Özellikler ve Etiketler nasıl yapılandırılır?
- BigQuery Etkileşimli Analytics ile doğal dili kullanarak mülk grafiklerini sorgulama
- Grafik Sorgu Dili (GQL) ifadelerinin ilişkisel yollarda gezinmek için nasıl yapılandırıldığı.
- Knowledge Catalog'u kullanarak güvenli öğeleri keşfetme ve politika etiketlerini kullanarak sütun düzeyinde kısıtlanmış verilere erişme