Hackathon Challenge Lab

1. 🏰 Disneyland Veri Analizi Hackathon'u (2. Etkinlik - 3 Aralık) 🏰

Özet

Bu Hackathon'da, Google Cloud'daki yapay zeka/makine öğrenimi özelliklerinden yararlanarak uçtan uca bir veri analizi ardışık düzeni oluşturacaksınız. Verileri, zorlu iş yükleri için optimize edilmiş, tümüyle yönetilen ve PostgreSQL ile uyumlu bir veritabanı olan AlloyDB'ye yükleyeceksiniz. Ardından, Google Cloud'un sunucusuz veri ambarı BigQuery'ye taşımak için sunucusuz bir değişiklik verilerini yakalama (CDC) hizmeti olan Datastream'i kullanacaksınız. BigQuery'de, inceleme analizi ve katılım tahmini için standart SQL kullanarak doğrudan BigQuery'de makine öğrenimi modelleri oluşturup yürütmenize olanak tanıyan BigQuery ML'yi uygulayacaksınız. Son olarak, Etkileşimli Analiz ve Veri Temsilcileri aracılığıyla hazır temsilcilerle oynayacak ya da verilerinizle doğal dil etkileşimi için Temsilci Geliştirme Kiti ve MCP Araç Kutusu tarafından desteklenen özel bir temsilci oluşturacaksınız.

categories

docType:Codelab, product:Bigquery

Yazar

Rayhane Rezgui, Matt Cornillon

Düzen

kaydırma

Robotlar

noindex

2. Giriş

Geleceğin Disney veri sihirbazları, hoş geldiniz!🪄

Sıkıcı seyahat rehberlerini ve forumlarda bitmek bilmeyen kaydırma işlemlerini unutun. Veriye dayalı analizlerle donatılmış, mükemmel bir Disneyland gezisi planladığınızı hayal edin. Hangi park en iyi deneyimi sunuyor? Kalabalıklar ne zaman en az olur? O meşhur uzun kuyruğu aşmak için en iyi zamanı tahmin edebilir misiniz?

Bu hackathon'da, Disneyland'i planlamak için en iyi aracı geliştireceksiniz. Verilerimiz var: dünya genelindeki şubelerden gelen ziyaretçi yorumları, geçmiş bekleme süreleri ve katılım rakamları. Misyonunuz nedir? Bu ham verileri uygulanabilir analizlere dönüştürün:

  • Veri Toplama: Çeşitli Disneyland yorumlarını, bekleme sürelerini ve katılım rakamlarını yüksek performanslı, PostgreSQL uyumlu veritabanımız AlloyDB'ye yükleyin.
  • Sorunsuz Taşıma: Bu dinamik bilgileri Google Cloud'un güçlü sunucusuz veri ambarı BigQuery'ye zahmetsizce taşımak için sunucusuz değişiklik verilerini yakalama hizmetimiz Datastream'i kullanın.
  • Sihri Tahmin Edin: İnceleme duyarlılığını analiz etmek ve bekleme sürelerini doğrudan SQL ile tahmin etmek için BigQuery ML'nin gücünden yararlanın. Hangi şubelerin sürekli olarak gülümseme sunduğunu ve ziyaretiniz için en uygun zamanı öğrenin.
  • Verilerinizle kelimenin tam anlamıyla konuşun: Bir değnek sallayarak analiz elde etmenizi sağlayan önceden oluşturulmuş araçları kullanın.
  • Akıllı Etkileşim: Veritabanları için MCP Araç Kutusu ve ADK (Agent Development Kit) tarafından desteklenen akıllı bir temsilciyle oluşturduğunuz içeriği taçlandırın. "Uzay tutkunları için Disneyland Paris'teki en iyi yer neresi ve sıraya girmek için en uygun zaman hangisi?" diye sorun ve anında, veriye dayalı yanıtlar alın.

Dünyanın en büyülü Yerlerinin sırlarını keşfetmeye ve Mickey'yi gururlandıracak bir veri analizi ardışık düzeni oluşturmaya hazırlanın.

a5db692deef31d78.jpeg

db26cb0beaf5a543.jpeg

3. 1. Görev: Operasyonelden Analitik Yaklaşıma Geçiş: Gemini ile Disneyland yorumlarını analiz etme

Bu ilk aşamada, verileri AlloyDB operasyonel veritabanınızdan alıp sonraki veri analizi için BigQuery'ye yükleyeceksiniz.

Ayrıca, gelecekteki aracınız için AlloyDB'de gereken her şeyi ayarlayacaksınız.

AlloyDB'de veri yükleme

Öncelikle PostgreSQL için AlloyDB kümemize biraz veri aktaralım.

DisneyLand eğlence parkları ve cazibe merkezleri listesi için 20.000 yorum alacağız.

Uygulamanız gereken adımlar şunlardır:

Tablo oluşturma:

  • 6 sütunlu bir disneyland_reviews tablosu oluşturun: review_id ve puan sütunları tam sayı, year_month, reviewer_location, review_text, branch sütunları ise metin olarak.
  • 4 sütunlu bir disneyland_attractions tablosu oluşturun: attraction_id (tam sayı), branch, name ve description (metin).

Seçtiğiniz aracı kullanarak CSV dosyalarından veri içe aktarın:

  • Yorumlar tablosu için gs://hackathon_data_disneyland_<YOUR_PROJECT_3DIGITS>/reviews.csv
  • Gezilecek yerler tablosu için gs://hackathon_data_disneyland_<YOUR_PROJECT_3DIGITS>/attractions.csv

Gezilecek yer önerileri sunmak için gezilecek yerlerin açıklamalarının yerleştirmelerini oluşturmamız gerekir:

  • AlloyDB'de pgvector uzantısını yükleme
  • Tablo çekiciliğinize "embedding" adlı bir vektör sütunu ekleyin.
  • AlloyDB ile Vertex AI arasındaki yerel entegrasyonu kullanarak açıklamaların yerleştirmesini oluşturma ve doldurma

Datastream ile operasyonel verilerden analitik verilere geçiş

AlloyDB'den BigQuery'ye veri akışı sağlamak için Google Datastream'i kullanacağız. Kaynak tablolardaki tüm değişiklikleri (Veri Değişikliği Yakalama'yı kullanarak) dinleyip BigQuery'ye gönderen güçlü bir sunucusuz çözümdür.

AlloyDB'deki değişiklikleri Datastream ile kopyalayabilmek için Postgres'te yayın ve replikasyon yuvası oluşturmamız gerekir.

AlloyDB kümenizde aşağıdaki sorguları yürütün (sorguları tek tek çalıştırmanız gerekir):

CREATE PUBLICATION pub_disney FOR TABLE disneyland_reviews, disneyland_attractions;

ALTER USER postgres WITH REPLICATION;

SELECT PG_CREATE_LOGICAL_REPLICATION_SLOT('slot_disney', 'pgoutput');

Yayın ve replikasyon yuvasını akışınızda kullanacağınız için adlarını unutmayın.

İşlem tamamlandı. Artık canlı yayın oluşturabilirsiniz.

Datastream'de uygulamanız gereken adımlar şunlardır:

  • AlloyDB kümeniz için kaynak profili oluşturun (genel IP adresini kullanın)
  • BigQuery için hedef profili oluşturma
  • AlloyDB'den BigQuery'ye bir akış oluşturun.

Veriler birkaç dakika içinde BigQuery'de kullanılabilir hale gelir.

BigQuery'de Veri Keşfi

Verilerimizi BigQuery'ye aktardığımıza göre, çalışmaya başlamadan önce arayüzdeki yeni geliştirmeleri öğrenelim.

BigQuery keşif panelinde görebileceğiniz 3 yeni işlevimiz var.

bcafae83cfd4f968.png

  • Genel bakış: BigQuery özellikleri, analize başlamak için turlar ve diğer olanaklar hakkında bilgiler içerir.
  • Arama: Veri varlıklarınızda semantik arama yapın.
  • Temsilciler: Şşş! Bu bilgiyi daha sonra kullanmak üzere kaydedeceğiz 🤫

BigQuery'de verilerinizde semantik arama yapma

BigQuery keşif panelinde Arama sekmesine gidin ve "eğlence merkezleri" veya "şube" gibi Disney ile ilgili terimlerle denemeler yapın.

BigQuery'deki verilerinizi görselleştirme

Artık BigQuery'de verilerinizi görselleştirebilir ve değiştirebilirsiniz. Bunun için bu sorguyu yeni bir sorgu sekmesinde çalıştırabilirsiniz:

SELECT
  *
FROM
  [dataset_name].[table_name];

Yorumlar tablosunda veri analizleri oluşturma

Bu görevde, disney veri kümesindeki disneyland_reviews tablosunda veri analizlerini etkinleştireceksiniz.

Veri analizleri, verilerini keşfetmek ve karmaşık SQL sorguları yazmadan analiz elde etmek isteyen herkesin kullanabileceği bir araçtır.

Bu işlem birkaç dakika sürebilir.

disneyland_reviews tablosunu SQL olmadan sorgulama

Önceki bölümde oluşturduğunuz analizler artık hazır. Bu görevde, disneyland_reviews tablosunu kod kullanmadan sorgulamak için bu analizlerden oluşturulan bir istemi kullanacaksınız.

Bir analiz seçin ve onunla ilişkili sorguyu çalıştırın. Örneğin, her şube için ortalama puanın ardışık aylar arasındaki farkını hesaplayan sorguyu bulun. Bu durumda, aşağıdaki gibi bir sonuç elde edilir:

WITH
 monthly_avg AS (
 SELECT
   branch,
   year_month,
   AVG(rating) AS avg_rating
 FROM
   [dataset_name].[table_name]
 WHERE
   year_month IS NOT NULL
 GROUP BY
   1,
   2 )
SELECT
 branch,
 year_month,
 avg_rating,
 avg_rating - LAG(avg_rating, 1, 0) OVER (PARTITION BY branch ORDER BY year_month) AS rating_difference
FROM
 monthly_avg
ORDER BY
 branch,
 year_month;

Verileri daha iyi anlamak için BigQuery Knowledge Engine'i kullanma

Öncelikle, bir veri kümesi düzeyinde Analizler sekmesine göz atarak başlayalım. Bu, Disney veri kümesindeki tablolar arasında gizli ilişkiler hakkında fikir edinmemizi sağlayacak. Ardından:

  • Gemini'ı kullanarak veri kümesinin açıklamasını oluşturun ve veri kümesi ayrıntılarına ekleyin.
  • Tabloların, yorumların ve ilgi çekici yerlerin açıklamasını oluşturup kaydedin. Ayrıca, bu tablolardaki tüm bağımsız sütunların açıklamasını da oluşturun.

Verilerinizde profil taraması yapma

Bu bölümün amacı, verilerinizi temizlemek ve hazırlamaktır. Ancak her sütunun değerlerinin dağılımı hakkında pek bilgi sahibi değilsiniz. Verilerinizde ne tür dönüştürme adımları uygulamanız gerektiğini bilmek için verilerinizin profilini oluşturmanız gerekir.

Google Cloud'un Dataplex Universal Catalog'u, tutarlı veri kalitesi metrikleri sağlamak için profil oluşturma taramalarını otomatikleştirir. Belirlenen temel istatistikler arasında boş değer sayıları, farklı değerler, veri aralıkları ve değer dağılımları yer alır. BigQuery arayüzü üzerinden profil taraması etkinleştirebilirsiniz.

Bu işlem birkaç dakika sürebilir. Beklerken bir sonraki bölüme göz atabilirsiniz.

Aşağıdaki soruları yanıtlayın:

  • Disneyland'in ortalama puanı nedir?
  • Yorumcular en çok nerede bulunuyor?
  • Tüm yorumlar benzersiz mi?
  • Year_Month sütununda eksik verilerin yüzdesi nedir?

Verilerinizde kalite taraması yapma

Dataplex Universal Catalog'daki otomatik veri kalitesi özelliği, BigQuery tablolarınızdaki verilerin kalitesini tanımlamanıza ve ölçmenize olanak tanır. Verilerin taranmasını otomatikleştirebilir, verileri tanımlanmış kurallara göre doğrulayabilir ve verileriniz kalite şartlarını karşılamıyorsa uyarıları kaydedebilirsiniz. Veri kalitesi kurallarını ve dağıtımlarını kod olarak yönetebilir, böylece veri üretim işlem hatlarının bütünlüğünü artırabilirsiniz.

Profil taramasına göre, örnek boyutu olarak verilerinizin en fazla% 10'unu içeren ve aşağıdaki özellikleri karşılayan bir kalite taraması tanımlayın:

  • "branch" sütununda boş değer olup olmadığını kontrol eder.
  • Yalnızca 1, 2, 3, 4, 5 değerlerini alabileceğinden "rating" için geçerlilik kontrolü gerçekleştirir.
  • "review_id"nin benzersizliğini kontrol eder.

Tarama sonuçlarının quality_scan_results adlı bir BigQuery tablosuna aktarıldığından emin olun.

Verilerinize uygulamanız gereken tüm olası dönüşümleri düşünün.

Gemini'ın Veri Hazırlama özelliğini kullanarak verilerinizi hazırlama

Gerçekleştirdiğiniz veri kalitesi ve profil oluşturma taramalarının ardından, verileri analiz etmeden önce temizlemenin zamanı geldi.

Veri hazırlama, verilerinizi analiz etmek ve temizleme, dönüştürme ve zenginleştirme konusunda akıllı öneriler sunmak için BigQuery'de Gemini'ı kullanan BigQuery kaynaklarıdır. Manuel veri hazırlama görevleri için gereken süreyi ve çabayı önemli ölçüde azaltabilirsiniz.

Bu bölümde, Data Preparation'ı kullanarak disneyland_reviews tablonuzda şu işlemleri yapacaksınız:

  • Şube sütununun NULL veya boş dize olduğu satırları filtreleyin.
  • Year_Month sütunundaki "missing" değerini Null ile değiştirin.
  • Okunabilirliği artırmak için dal sütunundaki alt çizgileri boşluklarla değiştirir.
  • Dönüştürülmüş tabloya (disneyland_reviews_cleaned) aktar

Gemini ile yorumları analiz etme

Verilerinizi temizlediğinize göre artık BigQuery ML ve Gemini modellerini kullanarak analiz etmeye başlayabilirsiniz. İki hedefiniz var:

  • Yorumlardan kategorileri ayıklama
  • disneyland_reviews için duygu analizi

BigQuery ML, GoogleSQL sorgularını kullanarak makine öğrenimi (ML) modelleri oluşturmanıza ve çalıştırmanıza olanak tanır. BigQuery ML modelleri, tablolar ve görünümlere benzer şekilde BigQuery veri kümelerinde depolanır. BigQuery ML, metin oluşturma veya makine çevirisi gibi yapay zeka (AI) görevlerini gerçekleştirmek için Vertex AI modellerine ve Cloud AI API'lerine erişmenize de olanak tanır. Google Cloud için Gemini, BigQuery görevleri için yapay zeka destekli yardım da sunar.

Gemini Pro veya Flash modelleriyle ML.GENERATE_TEXT ya da AI.GENERATE (önizleme) kullanmayı seçebilirsiniz.

ML.GENERATE_TEXT işlevini kullanmak istiyorsanız aşağıdaki adımları uygulayın.

Bulut kaynağı bağlantısını oluşturma ve IAM rolü verme

Gemini Pro ve Gemini Flash modelleriyle çalışabilmek için BigQuery'de Vertex AI modellerine yönelik bir Cloud kaynak bağlantısı oluşturmanız gerekir. Ayrıca, Vertex AI hizmetlerine erişmesini sağlamak için bir rol aracılığıyla bulut kaynağı bağlantısının hizmet hesabına IAM izinleri vereceksiniz.

Bağlantının hizmet hesabına Vertex AI Kullanıcısı rolü verme

Vertex AI Kullanıcısı rolünü vererek bağlantının hizmet hesabının seçtiğiniz modeli (ör. gemini-2.5-flash) kullanmasına izin verin. İznin yayılması 1 dakika sürer.

BigQuery'de Gemini modellerini oluşturma

Yukarıdaki bağlantıyı kullanarak modelinizi oluşturun. Örneğin, gemini-2.5-flash. uç noktasını kullanın.

Gemini'dan müşteri yorumlarını kategori ve duygu açısından analiz etmesini isteme

Bu görevde, her müşteri yorumunu kategori ve duygu (olumlu veya olumsuz) açısından analiz etmek için Gemini modelini kullanacaksınız.

Kategorilerle ilgili müşteri yorumlarını analiz etme

Not: 20.000 satırda Gemini çağrısı biraz zaman alabileceğinden, analiz için bundan sonra yalnızca 100 satır alacağız.

  • Extract categories by modifying and running the following SQL Query:
CREATE OR REPLACE TABLE
[dataset_name].[results_table_name] AS (
SELECT Review_ID, Rating, Year_Month, Reviewer_Location, Review_Text, Branch, ml_generate_text_llm_result AS categories FROM
ML.GENERATE_TEXT(
MODEL [model_name],
(
   SELECT Review_ID, Rating, Year_Month, Reviewer_Location, Review_Text, Branch, CONCAT(
      '[WRITE YOUR PROMPT HERE].',
      Review_Text) AS prompt
   FROM (SELECT * FROM [dataset_name].[table_name] LIMIT 100)
),
STRUCT(
   0.2 AS temperature, TRUE AS flatten_json_output)));

Bu sorgu, disneyland_reviews tablosundaki müşteri yorumlarını alır ve gemini modelinin her yorumdaki kategorileri belirlemesi için istemler oluşturur. Sonuçlar yeni bir tabloda saklanmalıdır reviews_categories

. Lütfen bekleyin. Modelin, müşteri yorumu kayıtlarını işlemesi ve sonuçları çıkış tablosuna eklemesi yaklaşık 30 saniye sürer.

Sonuçları görüntüleme:

SELECT * FROM [dataset_name].[results_table_name];

Biraz zaman ayırarak kategorilerden bazılarını okuyun.

Müşteri yorumlarını olumlu ve olumsuz duyarlılık açısından analiz etme

Anahtar kelime çıkarma için SQL sorgusuna göre, yorumu "duygu" adlı bir sütunda Olumlu, Olumsuz ve Nötr olarak analiz eden bir sorgu yaz.

Bu sorgu, disneyland_reviews tablosundaki müşteri yorumlarını alır ve gemini modelinin her yorumun duygusunu sınıflandırması için istemler oluşturur. Sonuçlar daha sonra başka analizler için kullanabilmeniz amacıyla yeni bir tabloda reviews_analysis saklanır. Lütfen bekleyin. Modelin müşteri yorumu kayıtlarını işlemesi birkaç saniye sürer. Model tamamlandığında sonuç, oluşturulan reviews_analysis tablosunda yer alır.

Sonuçları inceleyin:

SELECT * FROM [...];

reviews_analysis tablosunda, duygu analizini içeren Sentiment sütunu bulunur. social_media_source, review_text, customer_id, location_id ve review_datetime sütunları da dahildir. Kayıtlardan bazılarına göz atın. Pozitif ve negatif sonuçlardan bazılarının doğru şekilde biçimlendirilmediğini, nokta gibi gereksiz karakterler veya fazladan boşluk olduğunu fark edebilirsiniz. Aşağıdaki görünümü kullanarak kayıtları temizleyebilirsiniz.

Kayıtları temizlemek için görünüm oluşturma

Aşağıdaki yöntemlerle sütun duyarlılığı değerlerini temizleyen bir görünüm oluşturun:

  • Tüm değerlerin küçük harfli olduğundan emin olmak için LOWER işlevini kullanın.
  • NOKTAREPLAS işlevini kullanarak noktalama işaretlerini (. ve , ve boşluk) kaldırma
CREATE OR REPLACE VIEW [view_name] AS
SELECT [SANITIZATION_EXPRESSION] AS sentiment,
Review_ID, Rating, Year_Month, Reviewer_Location, Review_Text, Branch,
FROM `disney.reviews_analysis`;

Sorgu, cleaned_data_view görünümünü oluşturur ve yaklaşım sonuçlarını, yorum metnini, Review_ID, Rating, Year_Month, Reviewer_Location, Review_Text and Branch içerir. Ardından, duygu sonucunu (olumlu veya olumsuz) alır, tüm harflerin küçük harf olmasını sağlar ve fazladan boşluk veya nokta gibi gereksiz karakterleri kaldırır. Elde edilen görünüm, bu laboratuvarın ilerleyen adımlarında daha fazla analiz yapmayı kolaylaştıracaktır.

  1. Oluşturulan satırları görmek için aşağıdaki sorguyla görünümü sorgulayabilirsiniz.
SELECT * FROM [view_name];

Data Canvas ile olumlu ve olumsuz yorum sayılarını içeren bir rapor oluşturma

Şimdi sonuçlarınızı analiz etme zamanı. İşlemi doğrudan BigQuery'de, Veri Tuvali üzerinden yapmaya başlayalım. Bu araç, verileri (anlamsal veya anahtar kelime) aramanıza, tabloları sorgulayıp birleştirmenize, grafikler oluşturmanıza ve kanvas akışı oluşturarak analizler elde etmenize olanak tanır.

Son hedefiniz, olumlu ve olumsuz yorumların yüzdelerini gösteren bir grafik oluşturmaktır . Aşağıda bununla ilgili bir örnek verilmiştir:

c599269a77b3933c.png

Kategori başına yorum sayısının yanı sıra her kategori için olumlu ve olumsuz yorumların dağılımını gösteren bir grafik oluşturun

İpucu: Bir tuvalin içinde Python not defteri çalıştıran Data Canvas'ın Gelişmiş Analiz özelliğini etkinleştirip kullanın.

4. 2. Görev: Disneyland fotoğraflarını belirlemek ve Park Broşürlerinden eğlenceli bilgiler çıkarmak için eğlence parkı resimlerini analiz etme

BigQuery'de Görüntü Analizi

Ziyaretçilerin yıllar içinde çektiği, Attraction Parc'a ait heyecan verici ve ilgi çekici fotoğraflara erişebilirsiniz. Yaklaşan geziniz için çok heyecanlısınız. Ancak hangilerinin Disneyland'ın gerçek fotoğrafları olduğunu bilmiyorsunuz. Bunları belirlemekle görevlendirildiniz. Resimler gs://hackathon_data_disneyland_<YOUR_PROJECT_3DIGITS>/attraction_parc_photos/ konumunda bulunur.

ed155804de3f13e7.png

Is_disneyland: False

e201eb9a26faa4c.jpeg

Is_disneyland: Doğru

Bu analizi hızlı bir şekilde gerçekleştirmek için. BigQuery ML (ML.GENERATE_TEXT) aracılığıyla BigQuery'nin nesne tablolarını ve Gemini'ı kullanmanız gerekir.

Bazı fotoğrafları kontrol ederek Gemini'ın çıktısını doğrulayabilir misiniz?

Disneyland broşürlerinde BigQuery ile kendi RAG sisteminizi oluşturma

Sırada beklerken beklediğiniz yerle ilgili eğlenceli bilgiler veya teknik ayrıntılar öğrenmek istiyorsunuz.

gs://hackathon_data_disneyland_<YOUR_PROJECT_3DIGITS>/disneyland_brochures/, bölümünde, dünyanın dört bir yanındaki tüm parkların broşürlerini içeren PDF dosyalarını bulabilirsiniz.

Amaç: Kullanıcıların parkla ilgili karmaşık sorular sormasına olanak tanımak için tamamen BigQuery'de bir Veriyle Artırılmış Üretim (RAG) sistemi oluşturun. Bu sistem, bazı PDF belgelerine dayalı olarak çalışır.

Bunu başarmak için yapmanız gerekenler:

  • PDF dosyalarının nesne tablosunu oluşturma
  • PDF dosyalarını parçalara ayırmak için bir Python UDF'si oluşturun. Kullanabileceğiniz bir örnek:
CREATE OR REPLACE FUNCTION disney.chunk_pdf(src_json STRING, chunk_size INT64, overlap_size INT64)
RETURNS ARRAY<STRING>
LANGUAGE python
WITH CONNECTION `[LOCATION].[CONN_NAME]`
OPTIONS (entry_point='chunk_pdf', runtime_version='python-3.11', packages=['pypdf'])
AS """
import io
import json

from pypdf import PdfReader  # type: ignore
from urllib.request import urlopen, Request

def chunk_pdf(src_ref: str, chunk_size: int, overlap_size: int) -> str:
 src_json = json.loads(src_ref)
 srcUrl = src_json["access_urls"]["read_url"]

 req = urlopen(srcUrl)
 pdf_file = io.BytesIO(bytearray(req.read()))
 reader = PdfReader(pdf_file, strict=False)

 # extract and chunk text simultaneously
 all_text_chunks = []
 curr_chunk = ""
 for page in reader.pages:
     page_text = page.extract_text()
     if page_text:
         curr_chunk += page_text
         # split the accumulated text into chunks of a specific size with overlaop
         # this loop implements a sliding window approach to create chunks
         while len(curr_chunk) >= chunk_size:
             split_idx = curr_chunk.rfind(" ", 0, chunk_size)
             if split_idx == -1:
                 split_idx = chunk_size
             actual_chunk = curr_chunk[:split_idx]
             all_text_chunks.append(actual_chunk)
             overlap = curr_chunk[split_idx + 1 : split_idx + 1 + overlap_size]
             curr_chunk = overlap + curr_chunk[split_idx + 1 + overlap_size :]
 if curr_chunk:
     all_text_chunks.append(curr_chunk)

 return all_text_chunks
""";
  • PDF dosyasını parçalara ayırma
  • Uzak model oluşturduktan sonra yerleştirmeler oluşturma
  • "Ou manger un repas tex-mex à volonté?" veya "where to eat a tex-mex meal buffet-style?" öğesini bulmak için vektör araması yapın
  • "Ou manger un repas tex-mex à volonté?" veya "where to eat a tex-mex meal buffet-style?" sorusunun vektör arama sonuçlarıyla desteklenen bir yanıt oluşturun.

5. 3. görev: BigQuery ile ölçekli makine öğrenimi: Tahmin, sınıflandırma ve sıralama

Tahmini bekleme süreleri

Resimler çok güzel. Beklemeyin! Hangi cazibe merkezlerini seçeceğinizi ve hangilerinden kaçınacağınızı bilmek için Paris ile Kaliforniya arasındaki bazı cazibe merkezlerinde gerçek bekleme sürelerini öğrenmek istiyorsunuz. Göreviniz, 2025'te her 30 dakikada bir makine öğrenimini (Arima Plus veya TimesFM) kullanarak her cazibe merkezinin bekleme sürelerini tahmin etmektir.

Kullanacağınız veriler şu CSV dosyasında yer alır: gs://hackathon_data_disneyland_<YOUR_PROJECT_3DIGITS>/waiting_times.csv

Görevinizin adımları:

  • Dosyayı, waiting_times adlı bir tablonun altında BigQuery veri kümenize yükleyin.
  • Verileriniz üzerinde bir tahmin modeli eğitin (Arima_Plus) veya doğrudan AI.Forecast'i kullanarak tahmin yapın.
  • Model performansını değerlendirme veya tahmin edilen verileri giriş verileriyle karşılaştırma

Sürüşleri yoğunluğa göre sınıflandırma

Arkadaşlarınızla Disneyland'ı ziyaret ediyorsunuz. Park genel olarak aile dostu olsa da bazı oyuncaklar bazı kişiler için çok heyecanlı olabilir. Herkesin ilgisini çekebilecek yerler sunmak için BigQuery Yönetilen Yapay Zeka işlevlerini kullanarak ilgi çekici yerleri heyecan ve yoğunluk düzeyine göre sınıflandırıp sıralayalım.

  • AI.CLASSIFY özelliğini kullanarak yolculukları açıklamalarına göre üç sihirli kategoriden birine ([easy-peasy, thrilling, extreme]) ayırın.

Heyecan seviyesine göre sıralama

  • AI.SCORE simgesini kullanarak ilgi çekici yerleri heyecan seviyesine göre karşılaştırın ve sıralayın. 10. sıra en heyecan verici, 1. sıra ise en az heyecan verici olan yerdir.

6. 3. görev - Bonus: BigQuery'den AlloyDB'ye ters ETL

Büyük miktarda veriyle ilgili analizler oluşturmak için BigQuery'nin güçlü özelliklerinden yararlandınız. Artık bu analizlerin operasyonel uygulamalarınız (ve yapay zeka aracılarınız) tarafından uygulanabilir olmasını istiyorsunuz.

Peki nasıl? Bunun tam tersini yaparak! Postgres için AlloyDB, düşük gecikme süresi ve yüksek hızda veri sunma konusunda başarılıdır. Bu nedenle, kullanıcıya yönelik kritik uygulamalarınız için mükemmel bir çözümdür. Şimdi de yeni oluşturduğumuz veriler için ters ETL işlemi yapalım.

Bunu yapmak için AlloyDB'de "BigQuery görünümleri" adlı, henüz özel önizleme aşamasında olan yepyeni bir özellikten yararlanacağız. Bu özellik, BigQuery verilerini doğrudan Postgres veritabanınızda sorgulamanıza olanak tanır.

İlk olarak, AlloyDB kümesi hizmet hesabınıza BigQuery'yi sorgulamak için gerekli ayrıcalıkları vermeniz gerekir.

gcloud beta alloydb clusters describe <CLUSTER ID> --region=europe-west1

Çıkışta, bu kümenin hizmet hesabı olan bir serviceAccountEmail alanı bulunur.

Google Cloud Console'da IAM sayfasına gidin ve bu asıl kullanıcıya aşağıdaki ayrıcalıkları verin:

  • BigQuery Veri Görüntüleyicisi (roles/bigquery.dataViewer)
  • BigQuery Read Session User (roles/bigquery.readSessionUser)

Şimdi Console'da AlloyDB Studio'ya gidin ve "postgres" veritabanına bağlanın.

Yeni özelliği yüklemek ve yapılandırmak için aşağıdaki sorguları yürütün:

CREATE EXTENSION bigquery_fdw; 

CREATE SERVER bq_disney FOREIGN DATA WRAPPER bigquery_fdw; 

CREATE USER MAPPING FOR postgres SERVER bq_disney ;

Artık BigQuery'deki mevcut bir tabloyla eşlenecek bir "yabancı tablo" oluşturabilirsiniz. 3. görevde oluşturduğunuz herhangi bir tabloyu kullanın. Söz dizimi örneğini aşağıda bulabilirsiniz:

CREATE FOREIGN TABLE reviews_analysis ( "Review_ID" int,
    "Sentiment" text) SERVER bq_disney OPTIONS (PROJECT 'bqml-hack25par-xxx',
    dataset 'disney',
    TABLE 'reviews_analysis');

Her şey hazır. Şimdi tabloyu sorgulayalım. AlloyDB ile BigQuery arasındaki bağlantıyı doğrulamak için ilk SELECT ifadesini yürütün ve son olarak yabancı tablonuzdaki verileri almak için AlloyDB'de yeni bir tablo oluşturun.

7. 4. Görev: Hazır Veri Aracıları

Disneyland Uygulaması projesine katkıda bulunmak isteyen arkadaşlarınız var. BigQuery'deki verilere erişebilirler ancak SQL ve veri mühendisliği konusunda farklı düzeylerde bilgiye sahiptirler. BigQuery'nin, arkadaşlarınızın işine yarayacak şekilde kullanıcı arayüzüne entegre edilmiş veri aracılarıyla ilgili son duyurularından yararlanmak istiyorsunuz:

  • Data Pipelines oluşturun.
  • SQL kodu üzerinde ortak çalışma
  • Verileriyle konuşun.

Veri işlem hatlarınızı otomatikleştirmek için veri mühendisliği aracıları

Veri Mühendisliği Aracısı'nı kullanarak bekleme süresi ve ilgi çekici yerler tablolarını birleştiren ve ilgi çekici yer başına ortalama bekleme süresini hesaplayan yeni bir ortalama_bekleme_süresi görünümü oluşturun.

BigQuery'de Etkileşimli Analytics temsilcinizi oluşturma

Kod yazmadan, SQL kullanmadan ve dağıtım yapmadan, BigQuery'nin arayüzünden verilerinizle konuşacak bir aracı oluşturabildiğinizi düşünün. Ne kadar harika olurdu? BigQuery'deki "Aracılar" sekmesiyle bu mümkün.

98570651479cfd3.png

  • Disney tablolarınıza bağlanan my_disney_friend adlı bir aracı oluşturun. Aracı talimatlarını doldurarak aracı performansını artırabilirsiniz. "Olumlu ve olumsuz yorumların oranı nedir? Her bir cazibe merkezi için ortalama bekleme süresi nedir?" gibi sorular sorun.
  • Ajanı BigQuery'de ve API'de yayınlayın (daha sonra kullanacaksınız).

8. 5. görev: Gemini CLI ile geliştirme deneyiminizi iyileştirme

Yapay zeka çağında yazılım geliştirmek hiç bu kadar kolay olmamıştı. Disneyland uygulamanız için binlerce fikriniz var ve verilerinizi maksimum kapasitede kullanmak istiyorsunuz. Verilerle konuşmanın ötesine geçmek istiyorsunuz ve artık harekete geçmeniz gerekiyor.

Bu yolda ilerlemenize yardımcı olmak için yardıma ihtiyacınız olacak. Size destek vermeye hazırız.

Gemini CLI, Gemini'ın gücünü doğrudan terminalinize getiren açık kaynaklı bir yapay zeka aracısıdır. Geliştiriciler güçlü uygulamalar oluşturabilir ve uzantılar sayesinde çeşitli MCP (Model Context Protocol) sunucularıyla da etkileşim kurabilir.

Bu uzantılar arasında AlloyDB veya BigQuery verilerinizi sorgulama uzantılarını da bulabilirsiniz.

Bu görevde amacınız:

  • Gemini CLI'yi yükleyin (kendi terminalinizde veya Cloud Shell'de)
  • BigQuery ve AlloyDB Gemini-CLI uzantılarını yükleme
  • Gemini-CLI'nin BigQuery ve AlloyDB örneklerinize bağlanmasına olanak tanıyan bir ortam dosyası oluşturun.
  • Gemini-CLI'dan AlloyDB veritabanınızın içeriğini açıklayan, şık bir tek HTML sayfası oluşturmasını isteyin.
  • BigQuery için de aynı işlemi yapın.

Gemini-CLI ve uzantılarıyla tek bir istemde (veya birkaç istemde) oluşturabileceğiniz bazı içerik örneklerini aşağıda bulabilirsiniz. Şimdi de bunu gerçek hayattaki uygulamalarla yapabildiğinizi hayal edin. 147214db02ae32f7.png

d73dda1665b16c66.png

9. 6. görev: Verilerinizle etkileşim kurmak için yapay zeka ajanı oluşturma

DisneyLand ziyaretçilerine yepyeni bir kullanıcı deneyimi sunmak için gezi sırasında onlara yardımcı olabilecek bir asistan oluşturacaksınız. Ajanınız şunları yapabilir:

  • Parktaki tüm turistik yerleri listeleme
  • Beklentilere göre bir cazibe merkezi önerme
  • Bir cazibe merkezi için yorum ekleme
  • Önümüzdeki birkaç saat içinde bir atraksiyonda bekleme süresiyle ilgili tahminde bulunma
  • Belirli bir cazibe merkeziyle ilgili yorumlara genel bir bakış sunma

Asistanınızın yalnızca Disneyland ile ilgili soruları yanıtlayabildiğinden ve kullanıcıyla dostane bir üslup kullandığından emin olacaksınız. Aracının, kullanıcının ihtiyaçlarına uygun araçları seçtiğinden emin olmak için aracı isteminizi ayarlayın.

Uygulamanız gereken adımlar şunlardır:

  • Kaynak olarak AlloyDB ve BigQuery'yi kullanan bir veritabanları için MCP araç kutusu sunucusu dağıtma
  • AlloyDB ve BigQuery'ye sorgu gönderen ve daha önce listelenen ajan işlemlerini eşleyen MCP sunucunuz için 5 farklı araç tanımlayın.
  • Araçlarınızın her birini doğrulamak için MCP Araç Kutusu kullanıcı arayüzünü kullanın.
  • Agent Development Kit'i kullanarak, MCP araç kutusu sunucunuz tarafından kullanıma sunulan araçları kullanabilen bir aracı dağıtma
  • ADK web arayüzünüze bağlanın ve mevcut tüm araçları kullanarak asistanınızla yaptığınız görüşmenin tamamını gösterin.

Erken bitirirseniz bonus adım:

Temsilciniz hazır mı? Agent Engine'e dağıtalım.