BigQuery – Analitik Script Tablosu (Profesyonel Set)

İMRAN

Archive Forum Kurucu
Admin
Katılım
10 Nisan 2025
Mesajlar
1,654
Çözümler
1
Reaksiyon puanı
139
Konum
Türkiye

BigQuery – Analitik Script Tablosu (Profesyonel Set)


🟦 1) Dataset & Table Yönetim Komutları

AmaçScriptAçıklama
Dataset oluşturmaCREATE SCHEMA `archive.logs`;BigQuery'de “schema” dataset anlamına gelir
Tablo oluşturmaCREATE TABLE `archive.logs.events` ( id INT64, msg STRING, ts TIMESTAMP );Standart tablo
Partitioned tableCREATE TABLE `archive.logs.events_partitioned` ( id INT64, msg STRING, ts TIMESTAMP ) PARTITION BY DATE(ts);Zaman bazlı bölümleme
Clustered tableCREATE TABLE `archive.logs.events_cluster` ( id INT64, msg STRING, ts TIMESTAMP ) CLUSTER BY id;Sorgu maliyetini azaltır
Tablo silmeDROP TABLE `archive.logs.events`;Geri dönüş yok

🟩 2) Veri Ekleme – Insert Komutları

AmaçScript
Tek satır eklemeINSERT INTO `archive.logs.events` (id, msg, ts) VALUES (1, 'CPU error', CURRENT_TIMESTAMP());
Çoklu satır eklemeINSERT INTO `archive.logs.events` VALUES (2, 'OK', CURRENT_TIMESTAMP()), (3, 'Timeout', CURRENT_TIMESTAMP());
JSON’dan yüklemeINSERT INTO `archive.logs.events` SELECT * FROM `archive.raw.json_logs`;

🟧 3) Temel SELECT & Analitik Sorgular

AmaçScript
Veri listelemeSELECT * FROM `archive.logs.events` LIMIT 100;
FiltrelemeSELECT * FROM `archive.logs.events` WHERE msg LIKE '%error%';
GruplamaSELECT msg, COUNT(*) FROM `archive.logs.events` GROUP BY msg;
Zaman bazlı analizSELECT DATE(ts) AS day, COUNT(*) FROM `archive.logs.events` GROUP BY day ORDER BY day;
DISTINCTSELECT DISTINCT msg FROM `archive.logs.events`;

🟥 4) SQL Analitik Fonksiyonlar (Window Functions)

En çok kullanılan analitik fonksiyonlar tablo halinde:​

FonksiyonScriptAçıklama
ROW_NUMBERSELECT id, msg, ROW_NUMBER() OVER(PARTITION BY msg ORDER BY ts DESC) rn FROM `archive.logs.events`;Sıralı satır numarası
RANKSELECT id, msg, RANK() OVER(ORDER BY ts DESC) rnk FROM ...Sıra numarası (eşitlerde atlama)
SUM OVERSELECT id, SUM(id) OVER(ORDER BY ts) AS total FROM ...Kümülatif toplam
MOVING AVGSELECT AVG(id) OVER(ORDER BY ts ROWS BETWEEN 5 PRECEDING AND CURRENT ROW) AS mov_avg FROM ...Kayar ortalama
LEAD/LAGSELECT id, LAG(id) OVER(ORDER BY ts) prev, LEAD(id) OVER(ORDER BY ts) nxt FROM ...Önceki / sonraki değer

🟨 5) Nested – JSON – Struct Sorguları

AmaçScript
JSON alan içinden veri almaSELECT JSON_VALUE(payload, '$.user.name') FROM `archive.logs.events_json`;
STRUCT oluşturmaSELECT STRUCT(id, msg) AS obj FROM `archive.logs.events`;
ARRAY açmaSELECT id, message FROM `archive.logs.events`, UNNEST(tags) AS message;

🟫 6) Partition / Cluster Optimizasyon Sorguları

AmaçScript
Partition bilgisiSELECT * FROM `archive.logs.__PARTITIONS_SUMMARY__`;
Partition filtrelemeSELECT * FROM `archive.logs.events_partitioned` WHERE _PARTITIONDATE = DATE('2025-01-10');
Cluster optimize edilmiş sorguSELECT * FROM `archive.logs.events_cluster` WHERE id = 500;

🟪 7) BigQuery ML (Makine Öğrenimi) Komutları

AmaçScript
Model oluşturmaCREATE MODEL `archive.ml.logistic_model` OPTIONS(model_type='logistic_reg') AS SELECT * FROM `archive.dataset`;
Model tahminSELECT * FROM ML.PREDICT(MODEL `archive.ml.logistic_model`, (SELECT * FROM ...));
Model değerlendirmeSELECT * FROM ML.EVALUATE(MODEL `archive.ml.logistic_model`);

🟩 8) BigQuery Storage & Export Komutları

AmaçScript
CSV exportEXPORT DATA OPTIONS(uri='gs://bucket/data.csv', format='CSV') AS SELECT * FROM `archive.logs.events`;
Parquet exportEXPORT DATA OPTIONS(uri='gs://bucket/dataset/*.parquet', format='PARQUET') AS SELECT * FROM ...;
External table (GCS üzerinden)CREATE EXTERNAL TABLE `archive.ext.logs` OPTIONS (format='CSV', uris=['gs://bucket/logs/*.csv']);

🟦 9) Fiyat / Performans Optimizasyon Komutları

AmaçScript
Sorgu maliyet tahminiEXPLAIN SELECT * FROM `archive.logs.events`;
Sadece ihtiyacı olan kolonları seçmeSELECT msg FROM ...; (Full scan cost düşer)
Partition filtre şartıWHERE _PARTITIONDATE BETWEEN ...

🎯 BigQuery’nin Güçleri & Zayıfları (Kısa Teknik Özet)

GüçDetay
Milyarlarca satırda saniyeler içinde sorguGerçek analitik motor
Sunucusuz (serverless)Bakım yok, cluster yok
SQL + ML desteğiDahili ML motoru
Sıkıştırılmış kolon bazlı depolamaUcuz, hızlı
ZayıflıkDetay
Fiyat, yanlış sorguda çok artabilirFullscan → pahalı
DELETE/UPDATE pahalıdırDWH mantığı gereği
Sadece analitik için uygundurOLTP için değil
 
Geri
Üst Alt