3. Laboratuvar: BigQuery Graph ve Etkileşimli Analytics ile Kayıp Kargonun İzini Bulma

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.

Lost Cargo Lab 3 Etkileşimli Analiz Mimarisi Önizlemesi

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

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
  2. 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.

  1. Yeni bir tarayıcı sekmesinde Cloud Shell'i açın:

Cloud Shell'i etkinleştirme

  1. 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?

Property Graph derlenmiş mimari haritası

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'ı (manifests tablosundaki ilişkiler aracılığıyla) birbirine bağlar.
    • Bir kenar, VesselCompany'ye (vessels tablosundaki ilişkiler aracılığıyla) bağlar.
  • Özellikler: Düğümlerde veya kenarlarda depolanan meta verilerdir. Örneğin, bir Şirket düğümünde company_name ve phone_number gibi sütunlar, bir Manifest düğümünde ise seal_integrity_status ve 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:

  1. Cloud Shell Düzenleyici'yi açın.

Cloud Shell Düzenleyici&#39;yi açma

  1. Dosyayı setup_graph.sql Cloud Shell Düzenleyici'de açın.

Grafik oluşturma SQL&#39;i

  1. 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.
  2. 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:

Property Graph derlenmiş mimari haritası

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:

Grafik Düğümü Kavramı

  1. Kapsayıcı Manifest düğümünden başlayın.
  2. Taşıma Vessel öğesini bulmak için CARRIED_BY ilişki kenarını takip edin.
  3. Bu gemiden sorumlu Company'ye giden OPERATED_BY iliş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.

  1. 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
    );
    
  2. Sorgu tamamlandığında, alttaki Sorgu sonuçları bölmesinde Grafik sekmesini (Sonuç tablosu sekmesinin yanında bulunur) tıklayın.

BigQuery Grafik Sonuçları 1

  1. 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'yi logistics_network grafiğ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_BY kenar ilişkisini eşleştiriyoruz, ardından Company (comp) öğesini işaret eden :OPERATED_BY kenar 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.

  1. 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
    );
    
  2. Sonuçlar bölümünde Grafik sekmesini tıklayın.

BigQuery Graph Results 2

  1. Görüntüleyici artık yalnızca MV-CAPYBARA-003 iç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 Company düğümünü çift tıklayın. Mülkler bölümünde company_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.
    • Vessel düğmesinin Flying Dutchman olduğunu doğrulamak için düğmeyi çift tıklayın.

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

  1. Google Cloud Console'da BigQuery Console'a gidin ve veri kümenizi bulmak için kaynaklar panelini genişletin (lost_cargo_dataset).
  2. Mülk Grafiği kaynağınızı tıklayın: logistics_network.
  3. Ü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.

Derlenmiş mülk grafiği kaynağını bağlayan BigQuery Veri Aracısı yapılandırma arayüzü

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.

  1. 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.
    

Derlenmiş mülk grafiği kaynağını bağlayan BigQuery Veri Aracısı yapılandırma arayüzü

  1. 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
  2. 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

  1. Google Cloud Console'da Knowledge CatalogSearch'ü arayıp bu bölüme gidin.
  2. Sistemler bölümündeki arama filtresi sütununda, sonuçları daraltmak için BigQuery'yi işaretleyin.
  3. Arama kutusuna aşağıdaki sorguyu girin:
    container override codes
    

İzole edilmiş fiziksel mühür tablosunu arayan Bilgi Kataloğu semantik arama arayüzü

  1. Arama sonuçlarında görünen maritime_security_registry tablo 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_registry gibi 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

  1. BigQuery Konsolu'na geri dönün.
  2. Gezgin sekmesinde lost_cargo_dataset simgesini seçin ve maritime_security_registry tablosunu tıklayın.
  3. Şema sekmesini tıklayın.

clc_ovr_cd sütununa atanan politika etiketini gösteren tablo şeması görünümü

  1. clc_ovr_cd sütununun, MaskShippingDetails adlı bir politika etiketiyle (Politika etiketleri sütununda listelenir) güvenli hale getirildiğini unutmayın.
  2. 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;
    
  3. Hesabınız henüz MaskShippingDetails ile etiketlenmiş sütunları okuma iznine sahip olmadığından sorgu, Erişim Reddedildi veritabanı güvenlik hatasıyla hemen başarısız olur:

Standart sütun düzeyinde maskeleme veya erişim reddi kısıtlamaları veren BigQuery çalışma alanı görünümü

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

  1. BigQuery Console'un sol gezinme bölmesinde Politika etiketleri'ne gidin.
  2. LostCargoSecurity_ adlı sınıflandırmayı seçin.
  3. Etiket listesinde MaskShippingDetails simgesini tıklayın.
  4. 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.)
  5. Yeni sorumlular alanına etkin Google Cloud kullanıcı e-postanızı girin.
  6. Bir rol seçin açılır listesinde Ayrıntılı Okuyucu'yu arayıp seçin, ardından Kaydet'i tıklayın.

BigQuery politika etiketleri yönetim paneli, hedef dize maskesinde Ayrıntılı Okuyucu rolünü atar.

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

BigQuery çalışma alanı yürütme sonuçları, maskelenmemiş kesin dize işaretini döndürüyor

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