SlideShare una empresa de Scribd logo
1 de 34
Google BigQuery Servisi İle Büyük Veri İşlemleri Ve Sorgu
Sonuçlarının BIME İş Zekası Ürünü İle Görselleştirilip Android
Tabanlı Mobil Cihazlar Üzerinden İzlenmesi
Cenk DERİNÖZLÜ
cenkder@gmail.com
Özet:
Günümüzde internet teknolojileri ve buna bağlı olarak mobil teknolojilerdeki gelişim sonucunda
üretilen veri miktarı her geçen gün büyümektedir.
Artan rekabet sonucunda kurumlar için farkındalık yaratabilmek için büyük ve yapısal olmayan veri
bloklarının analiz edilmesi, sonuçların raporlanması ve kullanılabilir olması oldukça önemlidir.
Bu durumda büyük verinin analizi, görsel olarak raporlanması ve mobil cihazlar üzerinden anlık olarak
izlenebilir hale getirilmesi olmak üzere üç temel konunun çözüme ulaştırılması gerekmektedir.
Bu bildiride yukarıda bahsedilen problemlerin çözümü için tercih edilen büyük veri analizi için Google
BigQuery, Analiz edilen verilerin görsel olarak raporlanması için SAAS tabanlı iş zekası çözümlerinden
BIME, Google BigQuery ile BIME bağlantısı ve sonuçların mobil olarak izlenebilmesi için
gerçekleştirilebilecek android uyumlu çözümlerden bahsedilmiştir.
Anahtar Sözcükler:
Büyük Veri, Android,Bigquery,Bime,Big Data, Google BigQuery, Mobil Yazılım, Veri Analiz, Veri
Raporlama,BIME,İş Zekası
Giriş:
Büyük veri blokları üzerinde ihtiyaç duyulan verilerin sorgulanması ve sonuçların raporlanması işlemi
doğru donanım ve altyapı olmadığında zaman bakımından oldukça uzun süreler aldığından hızlı veriye
ulaşımın önemli olduğu günümüzde sorun teşkil etmektedir.
Bildiri üç bölümden oluşmaktadır. Birinci bölümde Google BigQuery Servisinden, ikinci bölümde Saas
tabanlı iş zekası çözümü BIME servisinden ve BIME –BigQuery entegrasyonundan üçüncü bölümde de
android tabanlı cihazlar üzerinden BIME servislerine nasıl ulaşılacağından bahsedilecektir.
Birinci Bölüm:
Google BigQuery Nedir?
Google Big Query google tarafından 2012 yılında başlatılan bulut bilişim hizmetlerinden birisidir.
BigQuery servisi ,büyük veri üzerindeki sorgu işlemlerinin google altyapısı kullanılarak hızlı bir şekilde
yapılabilmesine olanak sağlamaktadır.
BigQuery Google çekirdek altyapılarından olan bulut destekli paralel sorgu servisi Dremel’i
kullanmaktadır.
Google BigQuery servisin tercih edilmesinde önemli bir etkende altyapısında Google tarafından
geliştirilen ve kullanılan Dremel altyapısının kullanılmasıdır.
Dremel altyapısıda MapReduce altyapısı gibi Google tarafından gerçekleştirilmiş ve mapreduce
altyapısına göre üç temel avantaj sağlamaktadır.
Hız bakımından;
Dremel, Map reduce deki satır bazlı veri yapısı yerine kolon bazlı veri yapısına sahiptir. Bu nedenle
büyük veri üzerindeki analitik işlemlerde çok daha hızlıdır.
Aşağıda kolon bazlı veri modeli ile satır bazlı veri modelleri hakkında özet bilgi verilmiştir.
Yukarıdaki resimde de görüldüğü gibi milyonlarca kayıt bulunan bir tablodaki verilerden col1 isimli
kolondaki verileri grupladığımızda satır bazlı veri modelini kullandığımızda tüm kayıtlara erişmek için
tüm satırların okunması gerekirken, Sütun bazlı veri modelinde sadece col1 isimli bölümler okunarak
istenen verilere erişilebilmektedir. Bu sayede veri boyutu ile doğru orantılı olarak performans artışı
gerçekleşecektir.
Sütun bazlı veri modelinde kolon bazında tutulan isim verilerinin tutulduğunu düşünürsek tekrar
eden veri sayesinde sıkıştırma işleminde satır bazlı veri modeline göre avantaj sağlayacaktır.
Sütun bazlı veri modellerinin dezavantajına gelince, az veri içeren sorgular çektiğimizde veriye birden
çok okuma ile ulaşacağımız için sorgu performansımız düşecektir.
Sonuç olarak sütun bazlı veri modelinin büyük veri okurken ve tüm sütunlar yerine belli başlı
sütunlardaki veriye erişim yapılması gerektiği durumlarda tercih edilmesi performans artışı
sağlayacaktır.
Kullanılabilirlik Bakımından;
Dremel sorgu dili formatı SQL benzeridir.Bu nedenle mapreduce uyumlu sistemlerdeki gibi SQL
formatında sorgulama yapılabilmesine olanak sağlayan Hive,Pig tarzı dillere ihtiyaç yoktur.Bu sayede
sorgulama işlemlerinde mapreduce uyumlu yapılara göre daha hızlıdır.
Ölçeklenebilirlik Bakımından;
Google ‘a göre Dremel büyük ölçekli sistemlerde test edilmiş tek metottur.
Ücretlendirme Politikası:
BigQuery servisleri ile büyük veri analizi Google sunucuları üzerinde gerçekleştirildiğinden ayrıca bir
veri merkezi kurulması için sermaye ayrılmasına gerek yoktur.
BigQuery servislerinde ücretlendirme de sorgulama ve veri saklama olmak üzere iki temel kriter
bulunmaktadır.
Ödeme esnektir. Servis kullanıldıkça veri miktarına göre aylık ödemeler şeklinde
gerçekleştirilmektedir.
2014 yılı ücretlendirme özetini gösteren tablo aşağıdadır.
Kaynak Ücretlendirme
Veri Yükleme Ücretsiz
Veri Çıkarma Ücretsiz
Tablo İçerik Gözatma Ücretsiz
Veri Saklama $80 (1 TB/aylık)
İnteraktif Sorgular $35 (1 TB işlem)
Batch Sorgular $20 (1 TB işlem)
Streaming Kayıt Ekleme Ücretsiz Haziran 1, 2014 e kadar
1 Hazirandan sonra $0.01 (10,000 satır)
BigQuery veri yapısı kolon bazlıdır. Bu nedenle ücretlendirme de tablodaki tüm kolonlar değil ,sorgu
içerisinde belirtilen kolonlar baz alınmaktadır. Bu nedenle seçili kolonlarda işlenen toplam veri
miktarına göre ücretlendirme yapılmaktadır.
Google BigQuery Servisi Nasıl Kullanılır?
BigQuery üzerinde veri işlemleri yapabilmek için öncelikle işlem yapılacak veri bloğu Google
Sunucular üzerinde ayrılan veri alanına yüklenmelidir.
Bu aşamadan sonra ihtiyaç oldukça sorgulama ,izleme işlemleri için veri bloğuna bağlanılabilir.
BigQuery servisine erişmek için;
https://bigquery.cloud.google.com/ adresi vasıtasıyla tarayıcı üzerinden,
https://developers.google.com/bigquery/bq-command-line-tool adresi üzerinden indirilebilecek olan
komut programıyla BigQuery API kullanılabilir.
BigQuery Bileşenler ve Erişim Seviyeleri:
Bigquery üzerinde projeler, datasetler ve tablolar olmak üzere üç temel bileşen yer almaktadır.
Bildirinin bu bölümünde sistem üzerindeki temel bileşenlerden ve bileşenler üzerindeki erişim hakları
hakkında bilgi verilecektir.
1. Projeler:
Projeler, Google Bulut Platformlarının içinde en üst seviyedir. Projeler alanı içinde ücretlendirme ile
ilgili bilgiler, yetkili kullanıcı bilgileri ve bigquery veri bloğu yer almaktadır.
Bigquery ödeme sistemi, proje tabanlıdır. Şirket açısından bakıldığında kolaylık amacıyla her şirket
için bir adet proje yaratılması genellikle kullanılan çözümdür.
Servis ücretli bir servis olduğu için sistem içerisinden sisteme kimin erişeceği ile ilgili ayarlar yine
Projeler alanı altından yapılabilir.
Proje Erişim Hakları:
Proje erişim hakları ile ilgili ayarlar Google API Console üzerinden “Team paneli” kullanılarak
gerçekleştirilebilmektedir. Bu panel kullanılarak projeye erişecek kullanıcılar ve kullanıcıların kaç kere
projeye erişebileceği belirlenebilmektedir.
Proje Erişim Seviyeleri:
Projelere erişim sağlayacak kişilerin proje üzerinde yapabileceklerini belirleyebilmek için üç temel
yetki seviyesi bulunmaktadır. Yetki seviyeleri ve içerdikleri yetkiler aşağıda belirtilmektedir.
Can View:
Bu yetkiye sahip kullanıcılar okuma yetkisine sahip olmakla birlikte
 Proje üzerinde iş çalıştırabilir,
 Projede başlatmış oluğu işlerin listesini alabilir
 Proje içerisinde herhangi bir veri kümesine okuma yetkisi ile erişebilir.
Can Edit:
Bu yetkiye sahip kullanıcılar yazma yetkisine sahip olmakla birlikte
 Can View yetkisine ek olarak proje içerisindeki veri kümesi üzerinde yazma işlemi yapabilir.
 Proje içerisinde herhangi yeni oluşturulmuş veri kümesi üzerinde de yazma yetkisine sahiptir.
Is Owner:
Bu yetkiye sahip kullanıcı Can Edit yetkisine ek olarak
 Projedeki tüm veri kümelerini listelemeye,
 Projedeki herhangi bir veri kümelerini silmeye
 Proje üzerindeki tüm iş parçacıklarını (kendine ait olan ve başka kullanıcılar tarafından
çalıştırılan) izlemeye yetkilidir.
2. Veri Bloğu( DataSet ):
BiqQuery servisi Proje erişim yetkilerinin yanında proje içerisinde oluşturulan veri bloğu seviyesinde
yetkilendirme olanağı da sağlamaktadır.
Belirlenen veri bloğu üzerinde kullanıcılara özel erişim hakları tanımlanabilmektedir. Veri Bloğu
seviyesinde tanımlanan erişim yetkileri proje erişim yetkilerinin üzerindedir.
Veri Bloğu Haklar:
Veri Bloğu seviyesinde kişilere tanımlanabilecek erişim hakları da projelerde olduğu gibi üç çeşittir.
READ(OKUMA):
Datası üzerindeki tablo, tablo verisi çağırma, dataset içindeki tabloları okuma ile ilgili işleri çalıştırma
WRITE(YAZMA):
Okuma yetkisine ek olarak;
 Dataset üzerinde herhangi bir tablo üzerinde kayıt ekleme, güncelleme, silme işlemlerini
gerçekleştirme
 Dataset üzerinde ekleme veya güncelleme ile ilgili iş parçacıklarını çalıştırma
OWNER(SAHİPLİK):
Yazma yetkisine ek olarak;
 Tüm dataset üzerindeki güncelleme işlemlerini yapabilir
 Dataset Silme işlemini gerçekleştirebilir.
3. Tablolar:
BigQuery içinde yüklenen tüm veriler tablolar içerisinde tutulmaktadır. Sistem farklı şekillerde yeni
tablo yaratılmasına olanak sağlamaktadır.
BigQuery üzerinde erişim seviyesi bakımından tablo bazlı bir erişim kısıtlaması bulunmamaktadır. Kişi
dataset erişim hakkında sahipse dataset üzerindeki tüm tablolar üzerinde de aynı haklara sahiptir.
Big Query içerisine Veri Yüklenmesi:
Üretilen büyük hacimli ve yapısal olmayan verilerin analiz edilebilmesi için öncelikle bigquery üzerine
yüklenmesi gerekmektedir.
Bigquery üzerindeki tabloların organize edilmesi ve erişimin kontrol edilmesi için datasetler kullanılır.
Sistem üzerine veri transfer edilmeden önce tabloların yaratılması için en az bir dataset oluşturulması
gerekmektedir.
Bigquery Sistemleri üzerinde veri yükleme, veri export, sorgu vb. işlemler gibi asenkron görevler “job”
olarak adlandırılan iş süreçleri tarafından gerçekleştirilmektedir. Birden çok eşzamanlı iş sürecininin
çalışması sistem tarafından desteklenmektedir.
Sistem Üzerine Veri Yükleme Yöntemleri:
Bigquery sistemi üzerine veri ;
1) Job adı verilen iş süreçleri vasıtasıyla verilerin topluca yüklenmesi
2) Yeni veri eklendikçe eklenen verinin big query üzerine gönderilmesi şeklinde olmak üzere iki
şekilde gerçekleştirilebilmektedir.
Yüklenen veriler oluşturulan yeni tabloya eklenebildiği gibi, varolan tabloya eklenebilir veya olan bir
tablodaki verilerin üzerine yazılabilir.
Çeşitli kaynaklardan gelen veriler ayrı ayrı iş süreçleri (job) vasıtasıyla sistem üzerine
eklenebilmektedir. Konfigurasyon dosyasındaki SourceURI parametresi kullanılarak kolaylıkla veri
kaynakları değiştirilebilmektedir.
Sisteme Yüklenecek Verinin Hazırlanması:
Aktarılacak verinin yapısına göre big query ile uyumlu olacak şekilde hazırlanması gerekmektedir.
Aktarılacak verinin formatı farklı olabilir bu durumda verinin uygun bir formata getirilmesi
gerekmektedir.
Big query tarafından iki tip veri formatı desteklenmektedir.Bunlar;
-CSV
-JSON (newline-delimited).
Bu iki veri format seçilirken aşağıdaki kriterler göz önünde bulundurulmalıdır.
Veri Formatı Seçimini Etkileyen Faktörler:
 CSV VE JSON her ikiside flat yani düz metin yapısındaki veriyi desteklemektedir.
 Düz metin yapısı yani flat veriler sorgu bakımından hızlı olmasına rağmen boyut olarak büyük
alanlar kaplamaları dezavantajdır.
 JSON veri formatı ise flat veri desteğine ek olarak ek olarak içiçe ve tekrarlanan yapıları
destekler bu sayede tekrarlana veriler tekrarlanarak mümkün olduğunca veriler arasında ilişki
azaltılarak hem performans hemde kayıt alanı bakımından avantaj sağlamaktadır.
 Embedded newlines: Gönderilecek her bir veri ayrı bir satırda bulunuyorsa bigquery üzerine
yüklenme süresi çok daha hızlı olmaktadır.
Veri seçimini etkileyen önemli faktörde veri üreten sistemin türüdür. Sistemin desteklediği veri
çıkarma formatı bağlayıcı kriterdir.
Sonuç olarak Performansı açısından bakıldığında JSON formatlı verilerin aktarım hızı csv formatına
göre daha hızlı olmaktadır. CSV ve JSON arasında seçim yapılabiliyorsa JSON formatının tercih
edilmesi performans açısından avantaj sağlayacaktır.
Veri Format Limitleri açısından JSON - CSV karşılaştırması aşağıdaki tabloda görülebilmektedir.
CSV and JSON Satır ve hücrenin sahip olabileceği maksimum büyüklük açısından;
Data formatı Maximum Limit
CSV 1 MB (satır ve hücre boyutu)
JSON 20 MB (satır boyutu)
CSV and JSON Dosya Boyutu açısından;
Dosya Tipi Sıkıştırılmış Sıkıştırılmamış
CSV 1 GB
 Yeni Satır : 4 GB
 Yeni Satır Olmaksızın: 1 TB,
JSON 1 GB 1 TB
Tekrarlanan/içiçe alanlardan oluşan JSON nesnesi örneği aşağıda görülmektedir.
{"kind": "person", "full Name": "John Doe", "age": 22, "gender": "Male", "citiesLived": [{ "place": "Seattle",
"numberOfYears": 5}, {"place": "Stockholm", "numberOfYears": 6}]}
Desteklenen Data Tipleri:
Bigquery String, integer, float, boolen ,nested/repeated kayıtlar ve tarih zaman formatlarındaki
verileri desteklemektedir.
Data Sıkıştırma Seçimini Etkileyen Faktörler:
Sıkıştırılmamış dosyalar sıkıştırılmış dosyalara çok daha hızlı bir şekilde bigquery üzerine
yüklenebilmektedir. Buna karşın sıkıştırılmamış dosyaların boyutlarındaki büyüklük hem işlem
sırasında ihtiyaç duyulan band genişliği ihtiyacını yükseltmekte hem de bulut üzerinde daha büyük
alana ihtiyaç duyulduğu için maliyetleri yükseltmektedir.
Sonuç olarak bandgenişliği limitli sistemlerde veri Google bulut sunucularına yüklenmeden önce
sıkıştırılması tercih edilirken yükleme hızının önemli olduğu ve band genişliğinin yeterli olduğu
durumlarda dosyaların sıkıştırılmadan bulut sunucular üzerine yüklenmesi tercih edilmelidir.
Veri Dönüştürme
BigQuery JSON ve CSV formatlarını desteklemektedir. JSON veya CSV formatına dönüştürülmeye
uyumlu servislerden bigquery üzerine aktarım oldukça basit olmasına rağmen XML formatında
saklanan büyük verilerin aktarım için hazır hale getirilmesi daha karmaşık işlemlerin yapılmasını
gerektirmektedir.
Büyük dataset üzerinde XML formatının yaygın olarak kullanılmakta olmasına rağmen Bigquery
doğrudan xml formatındaki verinin aktarılmasını desteklememektedir.
Bu nedenden dolayı XML formatındaki büyük verininin aktarımdan önce JSON veya CSV formatına
dönüştürülmesine ihtiyaç vardır.
Büyük boyuttaki xml dosyaları üzerinde ayrıştırma işlemi için kullanılacak parser tipinin seçimi
önemlidir.
Büyük boyutlu dosyaların parse edilme işlemi sırasında DOM tabanlı parser kullanılması tercih etmek
yerine SAX tabanlı parser tercih edilmelidir. DOM Parser kullanıldığında işlem yapmak için tüm
dosyanın yüklenmesi gerektiğinden memory kullanımı dosya boyutuna göre oldukça yüksek olacağı
için SAX tabanlı parser kullanılması daha etkin olmaktadır.
Bazı durumlarda kaynak dosyada yer alan bazı alanların formatını bigquery üzerine aktarmadan daha
uygun başka bir formata dönüştürmek sorgu performansını arttırmaktadır.
Örnek vermek gerekirse;
Tarih Saat belirten alanlar içerisinde tutulan ve anlaşılır olması açısından tercih edilen ISO 8601
formatını (YYYY-MM-DDTHH:MM:SS) POSIX formatına dönüştürmek verilebilir.
ISO 8601 formatında bigquery üzerine gönderilen veriler Bigquery üzerinde string veri tipi olarak
aktarılmaktadır. String formatındaki veriler büyük sorgularda sorgu zamanın yükselmesine neden
olmaktadır. Bu nedenle ISO 8601 formatındaki verilerin integer karşılığı olan POSIX formatına
dönüştürülerek bigquery üzerine aktarılması ileride yapılacak sorguların daha hızlı çalışmasını
sağlamaktadır.
Örnek Kod:
# Example source data
201473587,737,2008,urn:nimsp:transaction,3254081d1bd4dd611e4b48d439ddd34c,"","",f,50.00,2008-10-19T10:13:29,"BOYD, RYAN"
# Use GNU awk to convert the timestamp field to posix using mktime()
cat iso8601.csv | gawk -F , 'BEGIN {FS=",";OFS=",";} {timestamp = $10; gsub(/[-:T]/, " ", timestamp); $10 = mktime(timestamp);} { print
}' > posix.csv
# Result data
201473587,737,2008,urn:nimsp:transaction,3254081d1bd4dd611e4b48d439ddd34c,"","",f,50.00,1224436409,"BOYD, RYAN"
BigQuery Üzerine Stream Yöntemi İle Veri
Gönderilmesi
İş paracıkları kullanarak Bigquery üzerine verilerin toplu olarak yüklenebilmesinin yanında Tablo
üzerine veri yüklendikçe bigquery üzerine kaydedilmesi işleminin gerçekleştirilebilmesi için
tabledata().insertAll() metodunu kullanıcılara sunmaktadır.
Bu sayede verinin yüklenmesi sırasında oluşan gecikme olmaksızın bigquey üzerinde güncel veri
üzerinde çalışılabilmektedir.
Bu yaklaşım kullanılmaya karar vermeden önce aşağıda belirtilen noktalar üzerinde düşünülmesi
faydalı olacaktır.
1. Erişim Kontrol:
Öncelikle hedef tabloyu içeren dataset üzerinde yazma erişim hakkının verilmesi gerekmektedir.
2. Kota Politikası:
 Tablo üzerindeki her yeni oluşturulan kayıt için maksimum değerler göz önünde
bulundurulmalıdır.
 Maximum Satır Boyutu:20KB
 Her bir insert işleminde kayıt edilebilecek maximum veri boyutu 1 MB
 Her bir tablo üzerinde oluşturulacak maksimum satır sayısı 1000 satırı geçememelidir.
Yukarıda belirtilen maksimum değeri geçildiği takdirde kota aşım hatası (quota_exceeded)
oluşacaktır.
3. Veri Erişim Durumu
Veri Bigquery üzerinde yer alan ilgili tabloya ilk olarak eklendikten sonra eklenen veriye erişim 2
dakika sonra sağlanabilmektedir. Bu süre sadece ilk kayıt ekleme işlemi için geçerlidir.
Bu süre warm-up süresi olarak adlandırılmaktadır. İlk işlemden sonra yapılan eklemelerden sonra
warm-up süresinden kaynaklanan gecikme gerçekleşmez. Fakat kayıt işleminden sonra 1-2 saat
herhangi bir kayıt işlemi gerçekleşmezse sistem bu sureden sonraki ilk kayıt işlemi için warm-up
süresini tekrar uygulayacaktır.
4. Veri Dayanıklılık:
Veri Bigquery üzerine stream edildikten sonra normal durumda birkaç dakika ile bir saat arasında
buffer üzerinde tutulmaktadır. Tampon bölge üzerindeki verilerin kopyaları veri kaybının önlenmesi
için ek bölgeler üzerine replike edilmektedir.
5. Veri Tutarlılığı:
Bigquery sistemleri veri tutarlılığını arttırmak için her yeni satır eklendiğinde eklenen satır ile ilgili
InsertId oluşturur.
Bigquery bu idleri birkaç dakikalık süreç boyunca hatırlar ve eğer belirli zaman dilimi içinde aynı
satırlar kaydedilmek istenirse InsertID parametresini set ederek benzer kayıt oluşmasını engeller.
Örnek vermek gerekirse;
Networkten kaynaklanan bir problem gerçekleştiğinde stream edilen kayıtın başarılı ve başarısız
olduğu ile ilgili sistem üzerinden herhangi bir cevap dönmeyeceği için kaydetme işlemi başarılı olsa
bile karşı taraf a bilgi gitmediği için aynı kayıt tekrar biqquery üzerine gönderilebilir. Bu durumda
InsertId parametresi sayesinde bigquery üzerinde birden çok aynı kayıtın oluşması engellenecektir.
Bigquery Üzerindeki Verinin Sorgulanması
BigQuery üzerinde sorgu yazılırken standart SQL ifadelerinin varyasyonları kullanıldığı için sorgular
için farklı bir dil öğrenilmesine gerek yoktur.
Hem senkron hemde asenkron sorgu metotlarını desteklemektedir.
Tüm sorgu sonuçları tablo olarak kaydedilir. Sorgu sonucunda sonuçların kaydedildiği tablolar kalıcı
veya geçici olmak üzere 2 tiptir.
Kalıcı(Persistent) Tablolar: Yazma iznine sahip olunan herhangi bir dataset içerisinde yeni bir tablo
veya varolan bir tablo olabilir.
Temporary(Geçici) Tablolar: Belirli bir dataset üzerinde rasgele isimle oluşturulan tablolardır. Bu tip
tabloların ortalama ömrü 24 saattir. Paylaşım amacıyla kullanılamazlar.
Senkron soruların sonuçlarının tümü geçici olarak yaratılan tablolara kaydedilmektedir. Eğer
sonuçların daha uzun süreli olarak tutulacağı kalıcı tablolar üzerine yazılması isteniyorsa query
asenkron olarak tekrar çalıştırılmalıdır.
BigQuery Üzerinden Veri Çıkarılması
Bigquery, yüklenen verilerin Google bulut üzerindeki saklama alanına CSV veya JSON formatında
çıkarılabilmesine imkan sağlamaktadır.
Bigquery üzerindeki verilerin başka bir yerde kullanabilmek için dışarı çıkarılması için sistem
üzerindeki iş süreçleri kullanılmaktadır.
Sistem üzerindeki veriyi dışarıya çıkarmadan önce dikkat edilmesi gerekli olan ihtiyaçlar aşağıda
listelenmektedir.
Erişim kontrol yetkileri bakımından;
Verinin dışarı çıkarılabilmesi için bigquery üzerinde ilgili dataset üzerinde en az okuma yetkisine ve
verinin çıkarılacağı google bulut üzerindeki saklama alanı üzerinde de yazma yetkisine sahip olunması
gerekmektedir.
Kota Politikası bakımından;
Bigquery üzerinden veri çıkarılması için çalıştırılabilecek maksimum iş sayısı günlük 50 adetle
sınırlandırılmıştır.
Örnek:
JSON formatında veri çıkarılması için tanımlanması gereken iş yapılandırma dosya örneği aşağıda
gösterilmektedir.
jobData = {
'projectId': projectId,
'configuration': {
'extract': {
'sourceTable': {
'projectId': projectId,
'datasetId': datasetId,
'tableId': tableId
},
'destinationUri': 'gs://<bucket>/<file>',
'destinationFormat': 'NEWLINE_DELIMITED_JSON'
}
}
}
Bigquery üzerindeki diğer bir kısıtta sistem üzerinden export edilerek oluşturulan dosyanın
maksimum boyutu 1 GB olmak zorundadır.
Bu nedenle sistem üzerinden 1GB üzeri export işlemi yapılırken yapılandırma dosyasında sistemin
dosya boyutu 1GB seviyesini geçtiği zaman yeni dosya oluşturabilmesi için ilgi parametrelerin
eklenmesi gerekmektedir.
Bigquery üzerinde birden çok dosyaya export işlemi yapılabilmesi için konfigürasyon dosyasına
'destinationUri': 'gs://<bucket>/<file>' satırı yerine
'destinationUri': ‘ gs://my_export_files/data-*.json’ eklenmelidir.
İlgili değişiklik yapıldıktan sonra bigquery dosya boyutu 1GB seviyesini aştıkça aşağıdaki gibi yeni
dosyaları otomatik olarak oluşturacaktır.
gs://my_export_files/data-0000.json
gs://my_export_files/data-0001.json
gs://my_export_files/data-0002.json
İş Süreçi,Proje ve Dataset Yönetimi
Jobs: İş Süreçleri uzun süreli işlemleri çalıştırmak için kullanılmaktadır. Örnek vermek gerekirse
sorgulama işlemleri, tablolara veri aktarılması, tablolardan veri çıkarılması işlemleri sayılabilir.
Standart İş Süreci Aşamaları:
 Job.Insert metodu kullanılarak öncelikle bir iş başlatılır. İş süreci başlatıldıktan sonra aynı
metot üzerinden işin durumunun ilerleyen zamanlarda takip edilebilmesi için JobId üretilir.
 Jobs.Get metodu ve JobId ile iş sürecinin durumu sorgulanır.İş süreç durumu olarak DONE
olarak güncellendiğinde iş sürecinin çalışması durdurulur.
 Durumun değerinin “Tamamlandı” olarak gelmesi sürecin başarı ile sonuçlandığını garanti
etmez süreç uzun süredir çalışmıyorsa da aynı sonuç dönebilir.
 İş sürecinin başarı ile sonuçlandığının kontrol edilmesi için iş sürecinin status.errorResult
isimli özelliği kullanılır.
Eğer süreç başarısız ise bu parametre içerinde neden başarısız olduğu ile ilgili hata tanımı yer
alacaktır.
Eğer status.ErrorResult parametresi mevcut değilse işlemin başarılı olarak sonuçlandığı
sonucuna varılabilmektedir.
Datasetler:
Datasetler bir veya daha çok tabloyu içerebilen gruplardır be bigquery üzerinde kontrol erişiminin
ayarlandığı en alt seviyedir. Bigquery üzerinde erişim tablo bazında değil dataset bazında
kısıtlanabilmektedir.
Sistem üzerindeki datasetlere bigquery. datasets.list. metodu ile ulaşılabilmektedir.
Örnek Kod:
public static void listDatasets(Bigquery bigquery, String projectId) throws IOException {
Datasets.List datasetRequest = bigquery.datasets().list(projectId);
DatasetList datasetList = datasetRequest.execute();
if (datasetList.getDatasets() != null) {
List datasets = datasetList.getDatasets();
System.out.println("Dataset list:");
for (DatasetList.Datasets dataset : datasets) {
System.out.format("%sn", dataset.getDatasetReference().getDatasetId());
}
}
}
Projeler:
Projeler içerisinde birden fazla dataset yeralabilmektedir. Projelerin yönetimi ve yaratılması API
konsol üzerinden yapılabilmektedir.
bigquery.projects.list. metodu kullanılarak sistem üzerindeki erişim yetkisi bulunulan projelerin listesi
alınabilmektedir.
Örnek
private static void listProjects(Bigquery service) throws IOException {
Bigquery.Projects.List projectListRequest = service.projects().list();
ProjectList projectList = projectListRequest.execute();
if (projectList.getProjects() != null) {
List projects = projectList.getProjects();
System.out.println("Project list:");
for (ProjectList.Projects project : projects) {
System.out.format("%sn", project.getFriendlyName());
}
}
}
Tablolar:
Bigquery üzerindeki tablolar her satırın ayrı kayıt içerdiği ve her kolon için farklı veri tiplerine destek
veren standart 2 boyutlu tablolardır.
Bigquery üzerindeki her bir kolon aşağıdaki özelliklere sahiptir.
İsim: Kolon isimleri büyük ve küçük harfleri ve 0-9 arası sayıları desteklemektedir. Fakat ilk karakter
harf olmak zorundadır.
Veri Tipi: Kolonlar tarafından desteklenen veri tipleri aşağıdaki gibidir.
o STRING
o INTEGER
o FLOAT
o BOOLEAN
o RECORD -JSON
 mode
o NULLABLE
o REQUIRED
o REPEATED -JSON
Yeni Tablo Oluşturulması
Bigquery üzerinde iki şekilde tablo oluşturulabilir.
CSV veya JSON formatında veri yüklenmek suretiyle veya sorgu çalıştırılması sonucu sorgu
sonuçlarının kaydedilmesi ile tablo oluşturulması şeklindedir.
BigQuery API
Bildirinin bu bölümünde BigQuery üzerindeki örnek bir data set üzerinden sorgu çalıştırılıp
sonuçlarının gösterildiği örnek uygulamanın bigquery adi kullanılarak nasıl yapılabileceği anlatılmıştır.
Adım 1: Bigquery Projesi Oluşturma:
Uygulama üzerinden Bigquery Servisini kullanabilmek için öncelikle Google API konsol üzerinden yeni
bir proje oluşturulması gerekmektedir.
Proje tarafından hem uygulamanın google tarafından tanınabilmesi hem de Bigquery API
kütüphanesinin kullanılabilmesi için üç farklı değer üretilir. Bu değerler Project Number, client ID ve
client secret değerleridir.
”Project number” sorguların çalıştırıldığı projeyi tanımlamaktadır.
“Client Id” ve “Client secret ”değerleri ise uygulamanın google ve bigquery servislerini kullanabilmesi
için gerekli olan üzerine yetkilendirme işlemlerinde kullanılmaktadır.
Yeni Proje Oluşturma sırasında izlenecek adımlar aşağıda belirtilmiştir.
 Google API Console sayfasına bağlantı kurularak BigQuery isimli yeni bir proje yaratılır.
 Projemiz oluşturulduktan sonra Services sekmesi altından BigQuery API özelliği etkinleştirilir.
 Son olarak ta API Console üzerinde proje URL si üzerinden proje numarası not edilir.
Örnek URL:
(https://code.google.com/apis/console/#project:12345XXXXXXX).
Proje Numarası, Bigquery API ile bağlantı kurulduğunda kullanılacaktır.
 Client Id ve Client secret değerleri oluşturmak için Console üzerinde API Access butonuna
tıklandıktan sonra Create an OAuth2.0 client ID butonuna tıklanır.
 Uygulama tipinin seçilebileceği sayfa açılır açılan sayfadan “installed application” seçeneği
seçildikten sonra Create client ID butonuna tıklanarak clientId ve client secret değerleri
oluşturulur.
 Download Json butonuna basılarak uygulamanın BigQuery servislerini kullanabilmesi için
gerekli olan client_secret.json dosyası kaydedilir.
client_secret.json örnek dosyası:
{
"installed": {
"client_id": "XXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com",
"client_secret": "XXXXXXXXXXXXXXXXXXXX",
"redirect_uris": ["urn:ietf:wg:oauth:2.0:oob"],
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token"
}
}
Adım 2: Google API Client Kütüphanelerinin Yüklenmesi
Örnek uygulamamızda Bigquery servislerini kullanabilmemiz için Google API client kütüphaneleri
aşağıdaki linklerden yüklenmelidir.
 Java: Google APIs Client Library for Java, and the Generated BigQuery Java Client library.
 Python: Google APIs Client Library for Python
Uygulamamızı JAVA yazılım dili ile geliştireceğimiz için JAVA için gerekli kütüphaneler yüklenmelidir.
Adım 3: Bigquery API Erişimi
Bigquery servisine erişim sağlanabilmesi için Google API Console vasıtasıyla oluşturulmuş olan
client_secrets.json dosyasından clientId ve client_secret değerlerinin okunması için gerekli kodun
yazılması gereklidir.
Örnek Kod:
// Enter your Google Developer Project number or string id.
private static final String PROJECT_ID = "name_of_project";
// Use a Google APIs Client standard client_secrets.json OAuth 2.0 parameters file.
private static final String CLIENTSECRETS_LOCATION = "client_secrets.json";
// Objects for handling HTTP transport and JSON formatting of API calls.
private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
private static final JsonFactory JSON_FACTORY = new JacksonFactory();
public static void main(String[] args) throws IOException {
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(new JacksonFactory(),
new InputStreamReader(ApiQuickstart.class.getResourceAsStream(CLIENTSECRETS_LOCATION)));
Credential credential = getCredentials(clientSecrets, new Scanner(System.in));
Bigquery bigquery = new Bigquery(HTTP_TRANSPORT, JSON_FACTORY, credential);
String query = "SELECT TOP( title, 10) as title, COUNT(*) as revision_count "
+ "FROM [publicdata:samples.wikipedia] WHERE wp_namespace = 0;";
runQueryRpcAndPrint(bigquery, PROJECT_ID, query, System.out);
}
ClientId ve client _secret değerleri kullanılarak kullanıcının API üzerine erişimi sağlanır .Erişim sonucu
başarılı olduğunda Google API üzerinden dönen erişim kodu kullanılarak Bigquery servislerinin
kullanabilmek için Bigquery client nesnesi yaratılmaktadır.
Örnek Kod:
static Credential getCredentials(GoogleClientSecrets clientSecrets, Scanner scanner)
throws IOException {
String authorizeUrl = new GoogleAuthorizationCodeRequestUrl(
clientSecrets, clientSecrets.getInstalled().getRedirectUris().get(0),
Collections.singleton(BigqueryScopes.BIGQUERY)).build();
System.out.println(
"Paste this URL into a web browser to authorize BigQuery Access:n" + authorizeUrl);
System.out.println("... and paste the code you received here: ");
String authorizationCode = scanner.nextLine();
// Exchange the auth code for an access token.
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, Arrays.asList(BigqueryScopes.BIGQUERY))
.build();
GoogleTokenResponse response = flow.newTokenRequest(authorizationCode)
.setRedirectUri(clientSecrets.getInstalled().getRedirectUris().get(0)).execute();
return flow.createAndStoreCredential(response, null);
}
Adım 4: Sorgu Çalıştırma
Bigquery üzerinde sorgu çalıştırabilmek için Senkron ve asenkron olmak üzere iki farklı metodu
kullanıma sunulmaktadır.
Senkron Sorgu yöntemi kullanıldığında api üzerinden sorgu başlatılır ve sonuç için sorgunun
tamamlanmasını veya sorgu süresi için bir timeout süresi verilmiş ise timeout süresinin dolması
beklenmelidir.
Asenkron Sorgu Yönteminde ise sorgu için bir iş süreci başlatılmakta ve süreç başlatıldıktan sonra
sistem tarafından verilen jobId ile iş sürecininin durumu kontrol edilebilmektedir. İşlem
tamamlandıktan sonra sorgu sonuçları alınmaktadır. Senkron sorgu yönteminin aksine bu yöntemde
sorgu sonucu beklenirken başka iş süreçleri kontrol edilebilmektedir.
Örnek uygulamamızda Bigquery tarafından desteklenen metotlardan senkron sorgu yöntemi
kullanılmıştır.
Senkron sorgulamayı başlatmak için API vasıtasıyla “runQueryRpcAndPrint” metoduna sorgu
cümlesi ve proje numarası string olarak gönderilir.
Örnek Kod:
/**
* Runs a synchronous BigQuery query and displays the result.
*
* @param bigquery An authorized BigQuery client
* @param projectId The current project id
* @param query A String containing a BigQuery SQL statement
* @param out A PrintStream for output, normally System.out
*/
static void runQueryRpcAndPrint(
Bigquery bigquery, String projectId, String query, PrintStream out) throws IOException {
QueryRequest queryRequest = new QueryRequest().setQuery(query);
QueryResponse queryResponse = bigquery.jobs().query(projectId, queryRequest).execute();
if (queryResponse.getJobComplete()) {
printRows(queryResponse.getRows(), out);
if (null == queryResponse.getPageToken()) {
return;
}
}
Adım 5: Sorgu Sonuçlarının Gösterilmesi
Sorgu tamamlandıktan sonra API üzerinden sorgu sonuçları JSON formatında dönmektedir. Uygulama
tarafından servis tarafından gönderilen json formatındaki sorgu sonuçları ayrıştırılarak uygulama
üzerinde gösterilir.
Örnek Kod:
private static void printRows(List<TableRow> rows, PrintStream out) {
if (rows != null) {
for (TableRow row : rows) {
for (TableCell cell : row.getF()) {
// Data.isNull() is the recommended way to check for the 'null object' in TableCell.
out.printf("%s, ", Data.isNull(cell.getV()) ? "null" : cell.getV().toString());
}
out.println();
}
}
}
Bigquery Servisine Tarayıcı Üzerinden Erişim
Sağlanması:
Bigquery API üzerinde üçüncü parti uygulamanın erişimine izin vermesinin yanında veri yükleme, veri
çıkarma, sorgu çalıştırma iş süreçlerinin yönetilmesi gibi birçok işlevin yapılabilmesine olanak
sağlayan web arayüz biriminide kullanıcılarına sunmaktadır.
https://bigquery.cloud.google.com/ adresi üzerinden kullanıcı bilgileri girilmek suretiyle bigquery
yönetim konsoluna erişilebilmektedir.
Bigquery Yönetim konsolu kullanılarak gerçekleştirilebilecek işlemler ana başlıkları aşağıda
belirtilmiştir.
Proje İşlemleri
Projeler Arasında Geçiş Yapılması
Tablo İşlemleri
 Tablo İçeriğine Gözatma(Veri ,Şema)
 Yeni Tablo Oluşturma,
 Tablo Silme,
 Tablo Kopyalama,
 Tablo Üzerine Veri Ekleme,
Sorgu İşlemleri
 Sorgu Oluşturma,
 Sorgu Çalıştırma,
 Sorgu Sonuçlarının Tablo olarak kaydedilmesi
 Sorgu Sonuçlarının CSV dosyası olarak kaydedilmesi (Sorgu sonucu 16.000 den
küçükse)
 Sorgu Tarihçesine Erişilmesi
DataSet İşlemleri
 Yeni DataSet Oluşturma
 Dataset Silme
 DataSet İçeriğine Gözatma,
 Seçili Datasetin Kullanıcı Bazlı Paylaşımı
Veri Dışarı Çıkarma İşlemleri:
 Tablo içeriğinin Google Disk Sunucuları üzerine export edilmesi
Bigquery Servisine Excel Üzerinden Erişim
Sağlanması:
Microsoft Excel aracı analiz vb. işler üzerine çalışılan sektörlerde oldukça yaygın olarak
kullanılmaktadır. Bigquery tarafından sağlanan bu servisle excel sayfası üzerinden oluşturulan
sorgular bigquery üzerinde çalıştırılabilmektedir.
Bigquery Excel Connector özelliğini kullanabilmek için öncelikle aşağıdaki önkoşulların sağlanması
gerekmektedir.
Önkoşullar:
https://bigquery-connector.appspot.com/download adresinden ilgili dosya (Microsoft Excel Web
Sorgusu Dosyası) indirilir.
https://bigquery-connector.appspot.com/ sayfasında Microsoft Excel Web Sorgusu Dosyasını
kullanabilmek için “Creating a Key” bölümünden anahtar kod oluşturulur.
İşlem Adımları:
1. Önkoşullar tamamlandıktan sonra boş bir excel sayfası açılır ve aşağıdaki görselde görüldüğü gibi
sayfanın ilk üç satırına sırasıyla Bigquery üzerinde oluşturulmuş olan Proje Id numarası, iki
numaralı önkoşul gerçekleştirildikten sonra elde edilen anahtar ve SQL sorgu cümlesi yazılır.
2. Excel Programı üzerinde Veri(Data) >>Var Olan Bağlantılar(Get External Data) Yolu izlenir.
3. Varolan Bağlantılar Penceresinde Daha Fazlası için Gözat (Browse More ) butonuna basılarak
Önkoşul 1 de indirilen Microsoft Excel Web Sorgusu Dosyası gösterilmelidir.
4. Microsoft Excel Web Sorgusu Dosyası (connector.iqy) gösterildikten sonra açılan ekrandan
bigquery üzerinden çekilen verilerin yerleştirileceği çalışma sayfası seçilir.
5. Excel Sayfasında daha önceden girmiş olduğumuz Project ID, Unique Key, Query değerleri
sırasıyla seçilir.
6. Tüm parametrelerin excel üzerinde değerleri girildikten sonra bigquery üzerinde sorgu çalıştırılıp
sonuçlar excel üzerinde seçili sayfada görüntülenmektedir.
Üçüncü Parti Araçlar:
Endüstride yaygın olarak kullanılmakta olan bir çok popüler Veri Yükleme, Veri Dönüştürme ve
Görselleştirme araçları Bigquery yapısını desteklemektedir.
Bu konuda Bigquery ile entegre çalışan popüler yazılımlar aşağıda belirtilmiştir.
Görselleştirme ve İş Zekası Araçları Kategorisi:
ETL (Veri Yükleme ve Dönüştürme) Kategorisi:
İkinci Bölüm:
Bildirinin bu bölümünde Google Bigquery Servisi ile uyumlu iş zekası çözümü BIME aracı ve kullanımı
hakkında bilgi verilecektir.
BIME Nedir:
BIME geleneksel yüksek yatırım ve teknik altyapı gerektiren iş zekası çözümlerinin aksine hızlı analitik
ve görselleştirme yeteneklerine sahip yeni nesil bir iş zekası modelidir.
Bime SAAS tabanlı bir servistir. SAAS tabanlı olmasının getirdiği yetenekler sayesinde Bilme
üzerinden online olarak veri kümelerine bağlanılıp veriler üzerinde sorgulama yapılabilmesine olanak
sağlamaktadır.
Bime üzerinde veri kümesi ile bağlantı kurulduktan sonra ilgili sorgular hızlı bir şekilde oluşturulup
sonuçlar görselleştirilebilmektedir.
Görselleştirilen sonuçlar hızlı ulaşılabilmesi için dashboard olarak adlandırılan izleme amaçlı ekranlara
aktarılıp yetkili kullanıcıların erişimine açılabilmektedir.
Bime kullanılarak var olan CRM, ERP vb. uygulamaların veri tabanlarına bağlanılıp online olarak
istenen veriler kolaylıkla izlenebilmektedir.
Bime anlam olarak “BI for me” kelimelerinini birleştirilmesi ile elde edilmiştir.
BI (Businnes Intelligince) geleneksel iş zekası çözümlerinin aksine ek bir sitem kaynağına veya bilgisine
ihtiyaç duymamaktadır.
Bime teknik olarak bakıldığında Saas çözümüdür. Bu nedenle geleneksel çözümlerle kıyaslandığında
daha erişilebilir bir çözümdür.
Bime ile çok çeşitlik veri kaynaklarına bağlanmak oldukça kolaydır. Hem lokal kaynaklara(ilişkisel veri
tabanları, excel dosyaları vb. ) hem de onlline veri kaynaklarına(google bigquery vb.) kolaylıkla
erişilebilmektedir.
BIME üzerinde veri analizi iki moda sahiptir
1. Memory Mode
2. Delegated Mode
Memory mod ile kullanıcı tarafında memory üzerinde yer alan veri miktarını analiz edebilirken
delegate mod da veritabanın kapasitesinin tamamı kullanılabilmektedir.
Delegated Mod da kullanıcı öncelikle istekte bulunur. Bime kullanıcı isteğine göre SQL sorgularını
oluşturur ve veri tabanına ilgili sorguyu gönderir sonucun dada dönen değerler üzerinde işlem
yapmaktadır.
Memory modda ise kullanıcı isteğinden sonra veri tabanındaki tüm verinin memory kapasitesi kadarı
memory üzerine kaydedilir analiz memory üzerindeki veri üzerinden gerçekleştirilir.
Delegated modun dezavantajları aşağıda belirtilmektedir.
1. Sadece sorgu sonucunun anlık görüntüsü alınabildiği için veri snapshot teknolojileri (Dejavu
vb.) kullanılamayacaktır.
2. İlişkisel veritabanındaki yük arttırılacağı için sistemin yavaşlamasına neden olabilir.
Bildirinin ilerleyen bölümlerinde bigquery üzerine yüklemiş olduğumuz veri üzerinde yapılan
sorgulara ait sonuçların görsel olarak takip edilebilmesi için bime ile nasıl entegre edebileceğimiz
hakkında bilgi verilecektir.
http://www.bimeanalytics.com/ adresi üzerinden bime hesabı açıldıktan sonra kullanıcı konsoluna
erişim linki sistem tarafından oluşturulur.
Sistem üzerinden kullanıcıya özel oluşturulan link vasıtasıyla bime yönetim konsoluna erişilmektedir.
Konsol üzerinde Create Connection butonun basılarak açılan sayfadan bağlantı yapılmak istenen data
kaynağı seçilir.
Açılan Pencerede veri kaynağını Bigquery olarak seçiyoruz. Veri kaynağı seçildikten sonra açılan
pencerede Google Bigquery hesabına bağlanabilmemiz için kullanıcı bilgileri girilerek bigquery
üzerinde analiz yapılmak istenen veri kaynağına bağlanır.
Şema tabı üzerinden veri kaynağı üzerindeki hangi alanların analiz sekmesinde görünür olup
olmayacağı belirlenir.
Bu aşamadan sonra Kaydet butonuna basılarak Analiz Sekmesine geçilir.
Veri bağlantısı sağlandıktan sonra tüm veri üzerinde bime arayüzü üzerinden istenilen sorgulamalar
yapılabilir. Analiz ekranı tarafından sunulan görsel ara yüz üzerinden istenen sorgular sürükle-bırak
yöntemi ile kolaylıkla oluşturulabilmektedir.
Örnek Proje:
Bildirinin önceki bölümlerinde anlatıldığı gibi Bime ara yüzü üzerinden bağlantı şeklini BigQuery
olarak seçip, genel sekmesinde google hesabımıza bağlanmak için sahip olduğumuz kullanıcı bilgilerini
giriyoruz.
Sonraki adımda bağlantı sağlandıktan sonra Table alanından açılan seçeneklerden sırasıyla
publicdata:samples seçeneğini ardından da shakespeare isimli örnek tabloyu seçiyoruz.
Analiz sekmesine geçtiğimizde artık aşağıdaki gibi seçmiş olduğumuz shakespeare isimli tablo ile ilgili
alanların geldiği görülür.
Bu arayüz vasıtasıyla sürükle bırak işlemi ilgili kolonları oluşturmak istediğimiz sorguya göre ilgili
Rows,Columns,Explode,Measure,Filter alanlarına taşıyarak sorgumuzu oluşturabiliriz.
Shakespeare eserlerinde eser adı ve eserde geçen kelime sayısına göre örnek analiz sonucu aşağıdaki
resimde görülmektedir.
Analiz ekranında Rows,Explode,Measures,Columns,Filters olmak üzere 5 adet eksen vardır.
Explode alanı sürüklenen alan içerisindeki her bir değer için ayrı ayrı gösterimin istendiği durumlarda
kullanılır.
Measures Alanı ile alan içerisindeki değer üzerinde hesaplama yaptırılmak istendiği durumlarda
kullanılır. Measure alanı içerisinde açılır menü üzerinden aşağıdaki seçenekler seçilebilmektedir.
Verilen örnekte shakespeare eserlerinde geçen kelimelerin toplam sayısı görülmek istendiği için
“SUM” opsiyonu seçilmiştir.
Filter Opsiyonu sorgu sonucunda gösterilecek alanlar seçilebildiği alandır.
Bime tarafından kullanıcılara sunulan önemli bir yenilikte sorgu sonuçlarının grid dışında farklı grafik
görselleri üzerinde gösterilmesine olanak sağlamasıdır. Analiz ekranında Grid butonu tıklanmak
suretiyle sorgu sonuçlarının seçili grafik görseli üzerinde görülebilmesi sağlanabilmektedir.
Yukarıdaki resim dede görüldüğü gibi Bar grafikten Geo Spatial olarak gösterilmesine kadar çok çeşitli
gösterim alternatifleri sistem tarafından sağlanabilmektedir.
Veri Kümesi ile yapılan analizler sonucunda elde edilen örnek gösterimler aşağıda gösterilmiştir.
Pie Gösterimi:
Bar Gösterimi:
Gauge Gösterimi
Funnel Gösterimi:
DASHBOARD:
Bime sistemi Dashboard olarak isimlendirilen izleme ekranları sayesinde yaratılarak biden çok veri
kaynağı üzerinde gerçekleştirilen eş zamanlı sorgu sonuçları seçilen grafiksel gösterimle son
kullanıcıya sunulabilmesine imkan vermektedir.
Ara yüz üzerinden dashboard ekranlarının oluşturulması, düzenlenmesi işlemleri
gerçekleştirilebilmektedir.
Sistem üzerinde dashboard ekranı oluşturmak veya varolan sorgu sonucunu dashboard ekranı olarak
kaydetmek için Sorgu sonucu tamamlandıktan sonra Save butonuna basılır ve çıkan menüden
ToDashboard opsiyonu seçilmelidir.
Sistemin oluşturulan Dashboard ekranının public erişime açılabilmesinin yanında sistem tarafından
yetki verilen kullanıcılarında erişimi sağlanabilmektedir.
Üçüncü Bölüm:
Bildirinin bu bölümünde google bigquery üzerinde gerçekleştirilen verilerin android tabanlı mobil
cihazlar üzerinden nasıl erişilebileceği üzerine bilgi verilecektir.
Google bigquery veri tabanı üzerinde gerçekleştirdiğimiz sorguları Servis tabanlı İş zekası çözümü
olarak geliştirilen BIME isimli servisi kullandık.
Görselleştirdiğimiz verilere android tabanlı cihazlar üzerinden erişebilmemiz için iki yöntem
kullanabiliriz.
Yöntem 1 :
BIME üzerinde bildirinin BIME ileilgili bolumunda anlatıldığı gibi sorgu sonuclarının dashboard olarak
kaydedilip ilgili linki açan basit bir android web browser uygulaması geliştirmek suretiyle
Yöntem 2:
Google play üzerinden
https://play.google.com/store/apps/details?id=air.com.bimeanalytics.bimemobile linki üzerinden
BIME servisini kullanabilmek için geliştirilen uygulamayı tabletimize kurmak suretiyle android tabanlı
mobil cihaz üzerinden erişebiliriz.
Uygulama Örnek Görüntüleri:

Más contenido relacionado

La actualidad más candente

Bigtable: A Distributed Storage System for Structured Data
Bigtable: A Distributed Storage System for Structured DataBigtable: A Distributed Storage System for Structured Data
Bigtable: A Distributed Storage System for Structured Dataelliando dias
 
Bucketing 2.0: Improve Spark SQL Performance by Removing Shuffle
Bucketing 2.0: Improve Spark SQL Performance by Removing ShuffleBucketing 2.0: Improve Spark SQL Performance by Removing Shuffle
Bucketing 2.0: Improve Spark SQL Performance by Removing ShuffleDatabricks
 
Google BigQuery for Everyday Developer
Google BigQuery for Everyday DeveloperGoogle BigQuery for Everyday Developer
Google BigQuery for Everyday DeveloperMárton Kodok
 
Postgresql stored procedure
Postgresql stored procedurePostgresql stored procedure
Postgresql stored procedureJong Woo Rhee
 
WTM-2023-Looker Studio.pdf
WTM-2023-Looker Studio.pdfWTM-2023-Looker Studio.pdf
WTM-2023-Looker Studio.pdfPyariKumaran
 
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.euDatabase migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.eualdaschwede80
 
You might be paying too much for BigQuery
You might be paying too much for BigQueryYou might be paying too much for BigQuery
You might be paying too much for BigQueryRyuji Tamagawa
 
Data profiling with Apache Calcite
Data profiling with Apache CalciteData profiling with Apache Calcite
Data profiling with Apache CalciteJulian Hyde
 
BigQuery best practices and recommendations to reduce costs with BI Engine, S...
BigQuery best practices and recommendations to reduce costs with BI Engine, S...BigQuery best practices and recommendations to reduce costs with BI Engine, S...
BigQuery best practices and recommendations to reduce costs with BI Engine, S...Márton Kodok
 
Practical Partitioning in Production with Postgres
Practical Partitioning in Production with PostgresPractical Partitioning in Production with Postgres
Practical Partitioning in Production with PostgresJimmy Angelakos
 
Getting started with BigQuery
Getting started with BigQueryGetting started with BigQuery
Getting started with BigQueryPradeep Bhadani
 
Building a Data Pipeline using Apache Airflow (on AWS / GCP)
Building a Data Pipeline using Apache Airflow (on AWS / GCP)Building a Data Pipeline using Apache Airflow (on AWS / GCP)
Building a Data Pipeline using Apache Airflow (on AWS / GCP)Yohei Onishi
 
Introduction of ssis
Introduction of ssisIntroduction of ssis
Introduction of ssisdeepakk073
 
感人故事
感人故事感人故事
感人故事Grace How
 
Changing your huge table's data types in production
Changing your huge table's data types in productionChanging your huge table's data types in production
Changing your huge table's data types in productionJimmy Angelakos
 

La actualidad más candente (20)

Bigtable: A Distributed Storage System for Structured Data
Bigtable: A Distributed Storage System for Structured DataBigtable: A Distributed Storage System for Structured Data
Bigtable: A Distributed Storage System for Structured Data
 
Big query
Big queryBig query
Big query
 
Bucketing 2.0: Improve Spark SQL Performance by Removing Shuffle
Bucketing 2.0: Improve Spark SQL Performance by Removing ShuffleBucketing 2.0: Improve Spark SQL Performance by Removing Shuffle
Bucketing 2.0: Improve Spark SQL Performance by Removing Shuffle
 
Google BigQuery for Everyday Developer
Google BigQuery for Everyday DeveloperGoogle BigQuery for Everyday Developer
Google BigQuery for Everyday Developer
 
Postgresql stored procedure
Postgresql stored procedurePostgresql stored procedure
Postgresql stored procedure
 
WTM-2023-Looker Studio.pdf
WTM-2023-Looker Studio.pdfWTM-2023-Looker Studio.pdf
WTM-2023-Looker Studio.pdf
 
Google BigQuery
Google BigQueryGoogle BigQuery
Google BigQuery
 
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.euDatabase migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
Database migration from Sybase ASE to PostgreSQL @2013.pgconf.eu
 
You might be paying too much for BigQuery
You might be paying too much for BigQueryYou might be paying too much for BigQuery
You might be paying too much for BigQuery
 
Introduction to HDFS
Introduction to HDFSIntroduction to HDFS
Introduction to HDFS
 
SSIS Presentation
SSIS PresentationSSIS Presentation
SSIS Presentation
 
Data profiling with Apache Calcite
Data profiling with Apache CalciteData profiling with Apache Calcite
Data profiling with Apache Calcite
 
BigQuery best practices and recommendations to reduce costs with BI Engine, S...
BigQuery best practices and recommendations to reduce costs with BI Engine, S...BigQuery best practices and recommendations to reduce costs with BI Engine, S...
BigQuery best practices and recommendations to reduce costs with BI Engine, S...
 
Practical Partitioning in Production with Postgres
Practical Partitioning in Production with PostgresPractical Partitioning in Production with Postgres
Practical Partitioning in Production with Postgres
 
Getting started with BigQuery
Getting started with BigQueryGetting started with BigQuery
Getting started with BigQuery
 
Building a Data Pipeline using Apache Airflow (on AWS / GCP)
Building a Data Pipeline using Apache Airflow (on AWS / GCP)Building a Data Pipeline using Apache Airflow (on AWS / GCP)
Building a Data Pipeline using Apache Airflow (on AWS / GCP)
 
Introduction of ssis
Introduction of ssisIntroduction of ssis
Introduction of ssis
 
感人故事
感人故事感人故事
感人故事
 
P5js syracuse dev meetup 20181218
P5js syracuse dev meetup 20181218P5js syracuse dev meetup 20181218
P5js syracuse dev meetup 20181218
 
Changing your huge table's data types in production
Changing your huge table's data types in productionChanging your huge table's data types in production
Changing your huge table's data types in production
 

Similar a Google BigQuery Servisi İle Büyük Veri İşlemleri Ve Sorgu Sonuçlarının BIME İş Zekası Ürünü İle Görselleştirilip Android Tabanlı Mobil Cihazlar Üzerinden İzlenmesi

Windows Azure ile Cloud Computing Uygulamaları - 7
Windows Azure ile Cloud Computing Uygulamaları - 7Windows Azure ile Cloud Computing Uygulamaları - 7
Windows Azure ile Cloud Computing Uygulamaları - 7İbrahim ATAY
 
Büyük veri(bigdata)
Büyük veri(bigdata)Büyük veri(bigdata)
Büyük veri(bigdata)Hülya Soylu
 
Windows Azure ile Cloud Computing Uygulamaları - 8
Windows Azure ile Cloud Computing Uygulamaları - 8Windows Azure ile Cloud Computing Uygulamaları - 8
Windows Azure ile Cloud Computing Uygulamaları - 8İbrahim ATAY
 
Windows Azure ile Cloud Computing Uygulamaları
Windows Azure ile Cloud Computing UygulamalarıWindows Azure ile Cloud Computing Uygulamaları
Windows Azure ile Cloud Computing Uygulamalarıİbrahim ATAY
 
Büyük Veri İşlemleri ve Hadoop
Büyük Veri İşlemleri ve HadoopBüyük Veri İşlemleri ve Hadoop
Büyük Veri İşlemleri ve HadoopCenk Derinozlu
 
Cloud computing and technologies
Cloud computing and technologiesCloud computing and technologies
Cloud computing and technologiesBilal Dursun
 
Bulutbilisim sunum
Bulutbilisim sunumBulutbilisim sunum
Bulutbilisim sunumugurbudak
 
Windows Azure ile Cloud Computing Uygulamaları - 2
Windows Azure ile Cloud Computing Uygulamaları - 2Windows Azure ile Cloud Computing Uygulamaları - 2
Windows Azure ile Cloud Computing Uygulamaları - 2İbrahim ATAY
 
Developer Tools
Developer ToolsDeveloper Tools
Developer ToolsBurak Erol
 
İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19Cihan Özhan
 
TBD Bilişim 2014 Veri Analitiği
TBD Bilişim 2014 Veri AnalitiğiTBD Bilişim 2014 Veri Analitiği
TBD Bilişim 2014 Veri Analitiğiisa ölmez
 
En Iyi Is Takip Programi Tavsiyesi ve Onerisi
En Iyi Is Takip Programi Tavsiyesi ve OnerisiEn Iyi Is Takip Programi Tavsiyesi ve Onerisi
En Iyi Is Takip Programi Tavsiyesi ve OnerisiBacklink Paketleri
 
BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...
BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...
BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...Levent Sabah
 
JİRA'ya Giriş / Atlassian
JİRA'ya Giriş / AtlassianJİRA'ya Giriş / Atlassian
JİRA'ya Giriş / AtlassianCansu Kaya
 
Loglari nerede saklayalım?
Loglari nerede saklayalım?Loglari nerede saklayalım?
Loglari nerede saklayalım?Ertugrul Akbas
 

Similar a Google BigQuery Servisi İle Büyük Veri İşlemleri Ve Sorgu Sonuçlarının BIME İş Zekası Ürünü İle Görselleştirilip Android Tabanlı Mobil Cihazlar Üzerinden İzlenmesi (20)

Hayrettin kunuk
Hayrettin kunukHayrettin kunuk
Hayrettin kunuk
 
Windows Azure ile Cloud Computing Uygulamaları - 7
Windows Azure ile Cloud Computing Uygulamaları - 7Windows Azure ile Cloud Computing Uygulamaları - 7
Windows Azure ile Cloud Computing Uygulamaları - 7
 
Büyük veri(bigdata)
Büyük veri(bigdata)Büyük veri(bigdata)
Büyük veri(bigdata)
 
Windows Azure ile Cloud Computing Uygulamaları - 8
Windows Azure ile Cloud Computing Uygulamaları - 8Windows Azure ile Cloud Computing Uygulamaları - 8
Windows Azure ile Cloud Computing Uygulamaları - 8
 
Cloud_Computer
Cloud_ComputerCloud_Computer
Cloud_Computer
 
Windows Azure ile Cloud Computing Uygulamaları
Windows Azure ile Cloud Computing UygulamalarıWindows Azure ile Cloud Computing Uygulamaları
Windows Azure ile Cloud Computing Uygulamaları
 
Büyük Veri İşlemleri ve Hadoop
Büyük Veri İşlemleri ve HadoopBüyük Veri İşlemleri ve Hadoop
Büyük Veri İşlemleri ve Hadoop
 
Cloud computing and technologies
Cloud computing and technologiesCloud computing and technologies
Cloud computing and technologies
 
Bulutbilisim sunum
Bulutbilisim sunumBulutbilisim sunum
Bulutbilisim sunum
 
Sunu
SunuSunu
Sunu
 
Windows Azure ile Cloud Computing Uygulamaları - 2
Windows Azure ile Cloud Computing Uygulamaları - 2Windows Azure ile Cloud Computing Uygulamaları - 2
Windows Azure ile Cloud Computing Uygulamaları - 2
 
Developer Tools
Developer ToolsDeveloper Tools
Developer Tools
 
Web2.0 Sunu
Web2.0 SunuWeb2.0 Sunu
Web2.0 Sunu
 
İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19
 
TBD Bilişim 2014 Veri Analitiği
TBD Bilişim 2014 Veri AnalitiğiTBD Bilişim 2014 Veri Analitiği
TBD Bilişim 2014 Veri Analitiği
 
En Iyi Is Takip Programi Tavsiyesi ve Onerisi
En Iyi Is Takip Programi Tavsiyesi ve OnerisiEn Iyi Is Takip Programi Tavsiyesi ve Onerisi
En Iyi Is Takip Programi Tavsiyesi ve Onerisi
 
BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...
BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...
BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...
 
JİRA'ya Giriş / Atlassian
JİRA'ya Giriş / AtlassianJİRA'ya Giriş / Atlassian
JİRA'ya Giriş / Atlassian
 
Microsoft SQL 2014
Microsoft SQL 2014Microsoft SQL 2014
Microsoft SQL 2014
 
Loglari nerede saklayalım?
Loglari nerede saklayalım?Loglari nerede saklayalım?
Loglari nerede saklayalım?
 

Google BigQuery Servisi İle Büyük Veri İşlemleri Ve Sorgu Sonuçlarının BIME İş Zekası Ürünü İle Görselleştirilip Android Tabanlı Mobil Cihazlar Üzerinden İzlenmesi

  • 1. Google BigQuery Servisi İle Büyük Veri İşlemleri Ve Sorgu Sonuçlarının BIME İş Zekası Ürünü İle Görselleştirilip Android Tabanlı Mobil Cihazlar Üzerinden İzlenmesi Cenk DERİNÖZLÜ cenkder@gmail.com Özet: Günümüzde internet teknolojileri ve buna bağlı olarak mobil teknolojilerdeki gelişim sonucunda üretilen veri miktarı her geçen gün büyümektedir. Artan rekabet sonucunda kurumlar için farkındalık yaratabilmek için büyük ve yapısal olmayan veri bloklarının analiz edilmesi, sonuçların raporlanması ve kullanılabilir olması oldukça önemlidir. Bu durumda büyük verinin analizi, görsel olarak raporlanması ve mobil cihazlar üzerinden anlık olarak izlenebilir hale getirilmesi olmak üzere üç temel konunun çözüme ulaştırılması gerekmektedir. Bu bildiride yukarıda bahsedilen problemlerin çözümü için tercih edilen büyük veri analizi için Google BigQuery, Analiz edilen verilerin görsel olarak raporlanması için SAAS tabanlı iş zekası çözümlerinden BIME, Google BigQuery ile BIME bağlantısı ve sonuçların mobil olarak izlenebilmesi için gerçekleştirilebilecek android uyumlu çözümlerden bahsedilmiştir. Anahtar Sözcükler: Büyük Veri, Android,Bigquery,Bime,Big Data, Google BigQuery, Mobil Yazılım, Veri Analiz, Veri Raporlama,BIME,İş Zekası Giriş: Büyük veri blokları üzerinde ihtiyaç duyulan verilerin sorgulanması ve sonuçların raporlanması işlemi doğru donanım ve altyapı olmadığında zaman bakımından oldukça uzun süreler aldığından hızlı veriye ulaşımın önemli olduğu günümüzde sorun teşkil etmektedir. Bildiri üç bölümden oluşmaktadır. Birinci bölümde Google BigQuery Servisinden, ikinci bölümde Saas tabanlı iş zekası çözümü BIME servisinden ve BIME –BigQuery entegrasyonundan üçüncü bölümde de android tabanlı cihazlar üzerinden BIME servislerine nasıl ulaşılacağından bahsedilecektir.
  • 2. Birinci Bölüm: Google BigQuery Nedir? Google Big Query google tarafından 2012 yılında başlatılan bulut bilişim hizmetlerinden birisidir. BigQuery servisi ,büyük veri üzerindeki sorgu işlemlerinin google altyapısı kullanılarak hızlı bir şekilde yapılabilmesine olanak sağlamaktadır. BigQuery Google çekirdek altyapılarından olan bulut destekli paralel sorgu servisi Dremel’i kullanmaktadır. Google BigQuery servisin tercih edilmesinde önemli bir etkende altyapısında Google tarafından geliştirilen ve kullanılan Dremel altyapısının kullanılmasıdır. Dremel altyapısıda MapReduce altyapısı gibi Google tarafından gerçekleştirilmiş ve mapreduce altyapısına göre üç temel avantaj sağlamaktadır. Hız bakımından; Dremel, Map reduce deki satır bazlı veri yapısı yerine kolon bazlı veri yapısına sahiptir. Bu nedenle büyük veri üzerindeki analitik işlemlerde çok daha hızlıdır. Aşağıda kolon bazlı veri modeli ile satır bazlı veri modelleri hakkında özet bilgi verilmiştir. Yukarıdaki resimde de görüldüğü gibi milyonlarca kayıt bulunan bir tablodaki verilerden col1 isimli kolondaki verileri grupladığımızda satır bazlı veri modelini kullandığımızda tüm kayıtlara erişmek için tüm satırların okunması gerekirken, Sütun bazlı veri modelinde sadece col1 isimli bölümler okunarak istenen verilere erişilebilmektedir. Bu sayede veri boyutu ile doğru orantılı olarak performans artışı gerçekleşecektir. Sütun bazlı veri modelinde kolon bazında tutulan isim verilerinin tutulduğunu düşünürsek tekrar eden veri sayesinde sıkıştırma işleminde satır bazlı veri modeline göre avantaj sağlayacaktır.
  • 3. Sütun bazlı veri modellerinin dezavantajına gelince, az veri içeren sorgular çektiğimizde veriye birden çok okuma ile ulaşacağımız için sorgu performansımız düşecektir. Sonuç olarak sütun bazlı veri modelinin büyük veri okurken ve tüm sütunlar yerine belli başlı sütunlardaki veriye erişim yapılması gerektiği durumlarda tercih edilmesi performans artışı sağlayacaktır. Kullanılabilirlik Bakımından; Dremel sorgu dili formatı SQL benzeridir.Bu nedenle mapreduce uyumlu sistemlerdeki gibi SQL formatında sorgulama yapılabilmesine olanak sağlayan Hive,Pig tarzı dillere ihtiyaç yoktur.Bu sayede sorgulama işlemlerinde mapreduce uyumlu yapılara göre daha hızlıdır. Ölçeklenebilirlik Bakımından; Google ‘a göre Dremel büyük ölçekli sistemlerde test edilmiş tek metottur. Ücretlendirme Politikası: BigQuery servisleri ile büyük veri analizi Google sunucuları üzerinde gerçekleştirildiğinden ayrıca bir veri merkezi kurulması için sermaye ayrılmasına gerek yoktur. BigQuery servislerinde ücretlendirme de sorgulama ve veri saklama olmak üzere iki temel kriter bulunmaktadır. Ödeme esnektir. Servis kullanıldıkça veri miktarına göre aylık ödemeler şeklinde gerçekleştirilmektedir. 2014 yılı ücretlendirme özetini gösteren tablo aşağıdadır. Kaynak Ücretlendirme Veri Yükleme Ücretsiz Veri Çıkarma Ücretsiz Tablo İçerik Gözatma Ücretsiz Veri Saklama $80 (1 TB/aylık) İnteraktif Sorgular $35 (1 TB işlem) Batch Sorgular $20 (1 TB işlem) Streaming Kayıt Ekleme Ücretsiz Haziran 1, 2014 e kadar 1 Hazirandan sonra $0.01 (10,000 satır) BigQuery veri yapısı kolon bazlıdır. Bu nedenle ücretlendirme de tablodaki tüm kolonlar değil ,sorgu içerisinde belirtilen kolonlar baz alınmaktadır. Bu nedenle seçili kolonlarda işlenen toplam veri miktarına göre ücretlendirme yapılmaktadır.
  • 4. Google BigQuery Servisi Nasıl Kullanılır? BigQuery üzerinde veri işlemleri yapabilmek için öncelikle işlem yapılacak veri bloğu Google Sunucular üzerinde ayrılan veri alanına yüklenmelidir. Bu aşamadan sonra ihtiyaç oldukça sorgulama ,izleme işlemleri için veri bloğuna bağlanılabilir. BigQuery servisine erişmek için; https://bigquery.cloud.google.com/ adresi vasıtasıyla tarayıcı üzerinden, https://developers.google.com/bigquery/bq-command-line-tool adresi üzerinden indirilebilecek olan komut programıyla BigQuery API kullanılabilir. BigQuery Bileşenler ve Erişim Seviyeleri: Bigquery üzerinde projeler, datasetler ve tablolar olmak üzere üç temel bileşen yer almaktadır. Bildirinin bu bölümünde sistem üzerindeki temel bileşenlerden ve bileşenler üzerindeki erişim hakları hakkında bilgi verilecektir. 1. Projeler: Projeler, Google Bulut Platformlarının içinde en üst seviyedir. Projeler alanı içinde ücretlendirme ile ilgili bilgiler, yetkili kullanıcı bilgileri ve bigquery veri bloğu yer almaktadır. Bigquery ödeme sistemi, proje tabanlıdır. Şirket açısından bakıldığında kolaylık amacıyla her şirket için bir adet proje yaratılması genellikle kullanılan çözümdür. Servis ücretli bir servis olduğu için sistem içerisinden sisteme kimin erişeceği ile ilgili ayarlar yine Projeler alanı altından yapılabilir. Proje Erişim Hakları: Proje erişim hakları ile ilgili ayarlar Google API Console üzerinden “Team paneli” kullanılarak gerçekleştirilebilmektedir. Bu panel kullanılarak projeye erişecek kullanıcılar ve kullanıcıların kaç kere projeye erişebileceği belirlenebilmektedir. Proje Erişim Seviyeleri: Projelere erişim sağlayacak kişilerin proje üzerinde yapabileceklerini belirleyebilmek için üç temel yetki seviyesi bulunmaktadır. Yetki seviyeleri ve içerdikleri yetkiler aşağıda belirtilmektedir.
  • 5. Can View: Bu yetkiye sahip kullanıcılar okuma yetkisine sahip olmakla birlikte  Proje üzerinde iş çalıştırabilir,  Projede başlatmış oluğu işlerin listesini alabilir  Proje içerisinde herhangi bir veri kümesine okuma yetkisi ile erişebilir. Can Edit: Bu yetkiye sahip kullanıcılar yazma yetkisine sahip olmakla birlikte  Can View yetkisine ek olarak proje içerisindeki veri kümesi üzerinde yazma işlemi yapabilir.  Proje içerisinde herhangi yeni oluşturulmuş veri kümesi üzerinde de yazma yetkisine sahiptir. Is Owner: Bu yetkiye sahip kullanıcı Can Edit yetkisine ek olarak  Projedeki tüm veri kümelerini listelemeye,  Projedeki herhangi bir veri kümelerini silmeye  Proje üzerindeki tüm iş parçacıklarını (kendine ait olan ve başka kullanıcılar tarafından çalıştırılan) izlemeye yetkilidir. 2. Veri Bloğu( DataSet ): BiqQuery servisi Proje erişim yetkilerinin yanında proje içerisinde oluşturulan veri bloğu seviyesinde yetkilendirme olanağı da sağlamaktadır. Belirlenen veri bloğu üzerinde kullanıcılara özel erişim hakları tanımlanabilmektedir. Veri Bloğu seviyesinde tanımlanan erişim yetkileri proje erişim yetkilerinin üzerindedir. Veri Bloğu Haklar: Veri Bloğu seviyesinde kişilere tanımlanabilecek erişim hakları da projelerde olduğu gibi üç çeşittir. READ(OKUMA): Datası üzerindeki tablo, tablo verisi çağırma, dataset içindeki tabloları okuma ile ilgili işleri çalıştırma WRITE(YAZMA): Okuma yetkisine ek olarak;  Dataset üzerinde herhangi bir tablo üzerinde kayıt ekleme, güncelleme, silme işlemlerini gerçekleştirme  Dataset üzerinde ekleme veya güncelleme ile ilgili iş parçacıklarını çalıştırma
  • 6. OWNER(SAHİPLİK): Yazma yetkisine ek olarak;  Tüm dataset üzerindeki güncelleme işlemlerini yapabilir  Dataset Silme işlemini gerçekleştirebilir. 3. Tablolar: BigQuery içinde yüklenen tüm veriler tablolar içerisinde tutulmaktadır. Sistem farklı şekillerde yeni tablo yaratılmasına olanak sağlamaktadır. BigQuery üzerinde erişim seviyesi bakımından tablo bazlı bir erişim kısıtlaması bulunmamaktadır. Kişi dataset erişim hakkında sahipse dataset üzerindeki tüm tablolar üzerinde de aynı haklara sahiptir. Big Query içerisine Veri Yüklenmesi: Üretilen büyük hacimli ve yapısal olmayan verilerin analiz edilebilmesi için öncelikle bigquery üzerine yüklenmesi gerekmektedir. Bigquery üzerindeki tabloların organize edilmesi ve erişimin kontrol edilmesi için datasetler kullanılır. Sistem üzerine veri transfer edilmeden önce tabloların yaratılması için en az bir dataset oluşturulması gerekmektedir. Bigquery Sistemleri üzerinde veri yükleme, veri export, sorgu vb. işlemler gibi asenkron görevler “job” olarak adlandırılan iş süreçleri tarafından gerçekleştirilmektedir. Birden çok eşzamanlı iş sürecininin çalışması sistem tarafından desteklenmektedir. Sistem Üzerine Veri Yükleme Yöntemleri: Bigquery sistemi üzerine veri ; 1) Job adı verilen iş süreçleri vasıtasıyla verilerin topluca yüklenmesi 2) Yeni veri eklendikçe eklenen verinin big query üzerine gönderilmesi şeklinde olmak üzere iki şekilde gerçekleştirilebilmektedir. Yüklenen veriler oluşturulan yeni tabloya eklenebildiği gibi, varolan tabloya eklenebilir veya olan bir tablodaki verilerin üzerine yazılabilir. Çeşitli kaynaklardan gelen veriler ayrı ayrı iş süreçleri (job) vasıtasıyla sistem üzerine eklenebilmektedir. Konfigurasyon dosyasındaki SourceURI parametresi kullanılarak kolaylıkla veri kaynakları değiştirilebilmektedir.
  • 7. Sisteme Yüklenecek Verinin Hazırlanması: Aktarılacak verinin yapısına göre big query ile uyumlu olacak şekilde hazırlanması gerekmektedir. Aktarılacak verinin formatı farklı olabilir bu durumda verinin uygun bir formata getirilmesi gerekmektedir. Big query tarafından iki tip veri formatı desteklenmektedir.Bunlar; -CSV -JSON (newline-delimited). Bu iki veri format seçilirken aşağıdaki kriterler göz önünde bulundurulmalıdır. Veri Formatı Seçimini Etkileyen Faktörler:  CSV VE JSON her ikiside flat yani düz metin yapısındaki veriyi desteklemektedir.  Düz metin yapısı yani flat veriler sorgu bakımından hızlı olmasına rağmen boyut olarak büyük alanlar kaplamaları dezavantajdır.  JSON veri formatı ise flat veri desteğine ek olarak ek olarak içiçe ve tekrarlanan yapıları destekler bu sayede tekrarlana veriler tekrarlanarak mümkün olduğunca veriler arasında ilişki azaltılarak hem performans hemde kayıt alanı bakımından avantaj sağlamaktadır.  Embedded newlines: Gönderilecek her bir veri ayrı bir satırda bulunuyorsa bigquery üzerine yüklenme süresi çok daha hızlı olmaktadır. Veri seçimini etkileyen önemli faktörde veri üreten sistemin türüdür. Sistemin desteklediği veri çıkarma formatı bağlayıcı kriterdir. Sonuç olarak Performansı açısından bakıldığında JSON formatlı verilerin aktarım hızı csv formatına göre daha hızlı olmaktadır. CSV ve JSON arasında seçim yapılabiliyorsa JSON formatının tercih edilmesi performans açısından avantaj sağlayacaktır. Veri Format Limitleri açısından JSON - CSV karşılaştırması aşağıdaki tabloda görülebilmektedir. CSV and JSON Satır ve hücrenin sahip olabileceği maksimum büyüklük açısından; Data formatı Maximum Limit CSV 1 MB (satır ve hücre boyutu) JSON 20 MB (satır boyutu) CSV and JSON Dosya Boyutu açısından; Dosya Tipi Sıkıştırılmış Sıkıştırılmamış CSV 1 GB  Yeni Satır : 4 GB  Yeni Satır Olmaksızın: 1 TB, JSON 1 GB 1 TB
  • 8. Tekrarlanan/içiçe alanlardan oluşan JSON nesnesi örneği aşağıda görülmektedir. {"kind": "person", "full Name": "John Doe", "age": 22, "gender": "Male", "citiesLived": [{ "place": "Seattle", "numberOfYears": 5}, {"place": "Stockholm", "numberOfYears": 6}]} Desteklenen Data Tipleri: Bigquery String, integer, float, boolen ,nested/repeated kayıtlar ve tarih zaman formatlarındaki verileri desteklemektedir. Data Sıkıştırma Seçimini Etkileyen Faktörler: Sıkıştırılmamış dosyalar sıkıştırılmış dosyalara çok daha hızlı bir şekilde bigquery üzerine yüklenebilmektedir. Buna karşın sıkıştırılmamış dosyaların boyutlarındaki büyüklük hem işlem sırasında ihtiyaç duyulan band genişliği ihtiyacını yükseltmekte hem de bulut üzerinde daha büyük alana ihtiyaç duyulduğu için maliyetleri yükseltmektedir. Sonuç olarak bandgenişliği limitli sistemlerde veri Google bulut sunucularına yüklenmeden önce sıkıştırılması tercih edilirken yükleme hızının önemli olduğu ve band genişliğinin yeterli olduğu durumlarda dosyaların sıkıştırılmadan bulut sunucular üzerine yüklenmesi tercih edilmelidir. Veri Dönüştürme BigQuery JSON ve CSV formatlarını desteklemektedir. JSON veya CSV formatına dönüştürülmeye uyumlu servislerden bigquery üzerine aktarım oldukça basit olmasına rağmen XML formatında saklanan büyük verilerin aktarım için hazır hale getirilmesi daha karmaşık işlemlerin yapılmasını gerektirmektedir. Büyük dataset üzerinde XML formatının yaygın olarak kullanılmakta olmasına rağmen Bigquery doğrudan xml formatındaki verinin aktarılmasını desteklememektedir. Bu nedenden dolayı XML formatındaki büyük verininin aktarımdan önce JSON veya CSV formatına dönüştürülmesine ihtiyaç vardır. Büyük boyuttaki xml dosyaları üzerinde ayrıştırma işlemi için kullanılacak parser tipinin seçimi önemlidir. Büyük boyutlu dosyaların parse edilme işlemi sırasında DOM tabanlı parser kullanılması tercih etmek yerine SAX tabanlı parser tercih edilmelidir. DOM Parser kullanıldığında işlem yapmak için tüm dosyanın yüklenmesi gerektiğinden memory kullanımı dosya boyutuna göre oldukça yüksek olacağı için SAX tabanlı parser kullanılması daha etkin olmaktadır. Bazı durumlarda kaynak dosyada yer alan bazı alanların formatını bigquery üzerine aktarmadan daha uygun başka bir formata dönüştürmek sorgu performansını arttırmaktadır.
  • 9. Örnek vermek gerekirse; Tarih Saat belirten alanlar içerisinde tutulan ve anlaşılır olması açısından tercih edilen ISO 8601 formatını (YYYY-MM-DDTHH:MM:SS) POSIX formatına dönüştürmek verilebilir. ISO 8601 formatında bigquery üzerine gönderilen veriler Bigquery üzerinde string veri tipi olarak aktarılmaktadır. String formatındaki veriler büyük sorgularda sorgu zamanın yükselmesine neden olmaktadır. Bu nedenle ISO 8601 formatındaki verilerin integer karşılığı olan POSIX formatına dönüştürülerek bigquery üzerine aktarılması ileride yapılacak sorguların daha hızlı çalışmasını sağlamaktadır. Örnek Kod: # Example source data 201473587,737,2008,urn:nimsp:transaction,3254081d1bd4dd611e4b48d439ddd34c,"","",f,50.00,2008-10-19T10:13:29,"BOYD, RYAN" # Use GNU awk to convert the timestamp field to posix using mktime() cat iso8601.csv | gawk -F , 'BEGIN {FS=",";OFS=",";} {timestamp = $10; gsub(/[-:T]/, " ", timestamp); $10 = mktime(timestamp);} { print }' > posix.csv # Result data 201473587,737,2008,urn:nimsp:transaction,3254081d1bd4dd611e4b48d439ddd34c,"","",f,50.00,1224436409,"BOYD, RYAN" BigQuery Üzerine Stream Yöntemi İle Veri Gönderilmesi İş paracıkları kullanarak Bigquery üzerine verilerin toplu olarak yüklenebilmesinin yanında Tablo üzerine veri yüklendikçe bigquery üzerine kaydedilmesi işleminin gerçekleştirilebilmesi için tabledata().insertAll() metodunu kullanıcılara sunmaktadır. Bu sayede verinin yüklenmesi sırasında oluşan gecikme olmaksızın bigquey üzerinde güncel veri üzerinde çalışılabilmektedir. Bu yaklaşım kullanılmaya karar vermeden önce aşağıda belirtilen noktalar üzerinde düşünülmesi faydalı olacaktır. 1. Erişim Kontrol: Öncelikle hedef tabloyu içeren dataset üzerinde yazma erişim hakkının verilmesi gerekmektedir. 2. Kota Politikası:  Tablo üzerindeki her yeni oluşturulan kayıt için maksimum değerler göz önünde bulundurulmalıdır.  Maximum Satır Boyutu:20KB  Her bir insert işleminde kayıt edilebilecek maximum veri boyutu 1 MB  Her bir tablo üzerinde oluşturulacak maksimum satır sayısı 1000 satırı geçememelidir.
  • 10. Yukarıda belirtilen maksimum değeri geçildiği takdirde kota aşım hatası (quota_exceeded) oluşacaktır. 3. Veri Erişim Durumu Veri Bigquery üzerinde yer alan ilgili tabloya ilk olarak eklendikten sonra eklenen veriye erişim 2 dakika sonra sağlanabilmektedir. Bu süre sadece ilk kayıt ekleme işlemi için geçerlidir. Bu süre warm-up süresi olarak adlandırılmaktadır. İlk işlemden sonra yapılan eklemelerden sonra warm-up süresinden kaynaklanan gecikme gerçekleşmez. Fakat kayıt işleminden sonra 1-2 saat herhangi bir kayıt işlemi gerçekleşmezse sistem bu sureden sonraki ilk kayıt işlemi için warm-up süresini tekrar uygulayacaktır. 4. Veri Dayanıklılık: Veri Bigquery üzerine stream edildikten sonra normal durumda birkaç dakika ile bir saat arasında buffer üzerinde tutulmaktadır. Tampon bölge üzerindeki verilerin kopyaları veri kaybının önlenmesi için ek bölgeler üzerine replike edilmektedir. 5. Veri Tutarlılığı: Bigquery sistemleri veri tutarlılığını arttırmak için her yeni satır eklendiğinde eklenen satır ile ilgili InsertId oluşturur. Bigquery bu idleri birkaç dakikalık süreç boyunca hatırlar ve eğer belirli zaman dilimi içinde aynı satırlar kaydedilmek istenirse InsertID parametresini set ederek benzer kayıt oluşmasını engeller. Örnek vermek gerekirse; Networkten kaynaklanan bir problem gerçekleştiğinde stream edilen kayıtın başarılı ve başarısız olduğu ile ilgili sistem üzerinden herhangi bir cevap dönmeyeceği için kaydetme işlemi başarılı olsa bile karşı taraf a bilgi gitmediği için aynı kayıt tekrar biqquery üzerine gönderilebilir. Bu durumda InsertId parametresi sayesinde bigquery üzerinde birden çok aynı kayıtın oluşması engellenecektir. Bigquery Üzerindeki Verinin Sorgulanması BigQuery üzerinde sorgu yazılırken standart SQL ifadelerinin varyasyonları kullanıldığı için sorgular için farklı bir dil öğrenilmesine gerek yoktur. Hem senkron hemde asenkron sorgu metotlarını desteklemektedir. Tüm sorgu sonuçları tablo olarak kaydedilir. Sorgu sonucunda sonuçların kaydedildiği tablolar kalıcı veya geçici olmak üzere 2 tiptir. Kalıcı(Persistent) Tablolar: Yazma iznine sahip olunan herhangi bir dataset içerisinde yeni bir tablo veya varolan bir tablo olabilir.
  • 11. Temporary(Geçici) Tablolar: Belirli bir dataset üzerinde rasgele isimle oluşturulan tablolardır. Bu tip tabloların ortalama ömrü 24 saattir. Paylaşım amacıyla kullanılamazlar. Senkron soruların sonuçlarının tümü geçici olarak yaratılan tablolara kaydedilmektedir. Eğer sonuçların daha uzun süreli olarak tutulacağı kalıcı tablolar üzerine yazılması isteniyorsa query asenkron olarak tekrar çalıştırılmalıdır. BigQuery Üzerinden Veri Çıkarılması Bigquery, yüklenen verilerin Google bulut üzerindeki saklama alanına CSV veya JSON formatında çıkarılabilmesine imkan sağlamaktadır. Bigquery üzerindeki verilerin başka bir yerde kullanabilmek için dışarı çıkarılması için sistem üzerindeki iş süreçleri kullanılmaktadır. Sistem üzerindeki veriyi dışarıya çıkarmadan önce dikkat edilmesi gerekli olan ihtiyaçlar aşağıda listelenmektedir. Erişim kontrol yetkileri bakımından; Verinin dışarı çıkarılabilmesi için bigquery üzerinde ilgili dataset üzerinde en az okuma yetkisine ve verinin çıkarılacağı google bulut üzerindeki saklama alanı üzerinde de yazma yetkisine sahip olunması gerekmektedir. Kota Politikası bakımından; Bigquery üzerinden veri çıkarılması için çalıştırılabilecek maksimum iş sayısı günlük 50 adetle sınırlandırılmıştır. Örnek: JSON formatında veri çıkarılması için tanımlanması gereken iş yapılandırma dosya örneği aşağıda gösterilmektedir. jobData = { 'projectId': projectId, 'configuration': { 'extract': { 'sourceTable': { 'projectId': projectId, 'datasetId': datasetId, 'tableId': tableId }, 'destinationUri': 'gs://<bucket>/<file>', 'destinationFormat': 'NEWLINE_DELIMITED_JSON' } } }
  • 12. Bigquery üzerindeki diğer bir kısıtta sistem üzerinden export edilerek oluşturulan dosyanın maksimum boyutu 1 GB olmak zorundadır. Bu nedenle sistem üzerinden 1GB üzeri export işlemi yapılırken yapılandırma dosyasında sistemin dosya boyutu 1GB seviyesini geçtiği zaman yeni dosya oluşturabilmesi için ilgi parametrelerin eklenmesi gerekmektedir. Bigquery üzerinde birden çok dosyaya export işlemi yapılabilmesi için konfigürasyon dosyasına 'destinationUri': 'gs://<bucket>/<file>' satırı yerine 'destinationUri': ‘ gs://my_export_files/data-*.json’ eklenmelidir. İlgili değişiklik yapıldıktan sonra bigquery dosya boyutu 1GB seviyesini aştıkça aşağıdaki gibi yeni dosyaları otomatik olarak oluşturacaktır. gs://my_export_files/data-0000.json gs://my_export_files/data-0001.json gs://my_export_files/data-0002.json İş Süreçi,Proje ve Dataset Yönetimi Jobs: İş Süreçleri uzun süreli işlemleri çalıştırmak için kullanılmaktadır. Örnek vermek gerekirse sorgulama işlemleri, tablolara veri aktarılması, tablolardan veri çıkarılması işlemleri sayılabilir. Standart İş Süreci Aşamaları:  Job.Insert metodu kullanılarak öncelikle bir iş başlatılır. İş süreci başlatıldıktan sonra aynı metot üzerinden işin durumunun ilerleyen zamanlarda takip edilebilmesi için JobId üretilir.  Jobs.Get metodu ve JobId ile iş sürecinin durumu sorgulanır.İş süreç durumu olarak DONE olarak güncellendiğinde iş sürecinin çalışması durdurulur.  Durumun değerinin “Tamamlandı” olarak gelmesi sürecin başarı ile sonuçlandığını garanti etmez süreç uzun süredir çalışmıyorsa da aynı sonuç dönebilir.  İş sürecinin başarı ile sonuçlandığının kontrol edilmesi için iş sürecinin status.errorResult isimli özelliği kullanılır. Eğer süreç başarısız ise bu parametre içerinde neden başarısız olduğu ile ilgili hata tanımı yer alacaktır. Eğer status.ErrorResult parametresi mevcut değilse işlemin başarılı olarak sonuçlandığı sonucuna varılabilmektedir. Datasetler:
  • 13. Datasetler bir veya daha çok tabloyu içerebilen gruplardır be bigquery üzerinde kontrol erişiminin ayarlandığı en alt seviyedir. Bigquery üzerinde erişim tablo bazında değil dataset bazında kısıtlanabilmektedir. Sistem üzerindeki datasetlere bigquery. datasets.list. metodu ile ulaşılabilmektedir. Örnek Kod: public static void listDatasets(Bigquery bigquery, String projectId) throws IOException { Datasets.List datasetRequest = bigquery.datasets().list(projectId); DatasetList datasetList = datasetRequest.execute(); if (datasetList.getDatasets() != null) { List datasets = datasetList.getDatasets(); System.out.println("Dataset list:"); for (DatasetList.Datasets dataset : datasets) { System.out.format("%sn", dataset.getDatasetReference().getDatasetId()); } } } Projeler: Projeler içerisinde birden fazla dataset yeralabilmektedir. Projelerin yönetimi ve yaratılması API konsol üzerinden yapılabilmektedir. bigquery.projects.list. metodu kullanılarak sistem üzerindeki erişim yetkisi bulunulan projelerin listesi alınabilmektedir. Örnek private static void listProjects(Bigquery service) throws IOException { Bigquery.Projects.List projectListRequest = service.projects().list(); ProjectList projectList = projectListRequest.execute(); if (projectList.getProjects() != null) { List projects = projectList.getProjects(); System.out.println("Project list:"); for (ProjectList.Projects project : projects) { System.out.format("%sn", project.getFriendlyName()); } } } Tablolar: Bigquery üzerindeki tablolar her satırın ayrı kayıt içerdiği ve her kolon için farklı veri tiplerine destek veren standart 2 boyutlu tablolardır.
  • 14. Bigquery üzerindeki her bir kolon aşağıdaki özelliklere sahiptir. İsim: Kolon isimleri büyük ve küçük harfleri ve 0-9 arası sayıları desteklemektedir. Fakat ilk karakter harf olmak zorundadır. Veri Tipi: Kolonlar tarafından desteklenen veri tipleri aşağıdaki gibidir. o STRING o INTEGER o FLOAT o BOOLEAN o RECORD -JSON  mode o NULLABLE o REQUIRED o REPEATED -JSON Yeni Tablo Oluşturulması Bigquery üzerinde iki şekilde tablo oluşturulabilir. CSV veya JSON formatında veri yüklenmek suretiyle veya sorgu çalıştırılması sonucu sorgu sonuçlarının kaydedilmesi ile tablo oluşturulması şeklindedir. BigQuery API Bildirinin bu bölümünde BigQuery üzerindeki örnek bir data set üzerinden sorgu çalıştırılıp sonuçlarının gösterildiği örnek uygulamanın bigquery adi kullanılarak nasıl yapılabileceği anlatılmıştır. Adım 1: Bigquery Projesi Oluşturma: Uygulama üzerinden Bigquery Servisini kullanabilmek için öncelikle Google API konsol üzerinden yeni bir proje oluşturulması gerekmektedir. Proje tarafından hem uygulamanın google tarafından tanınabilmesi hem de Bigquery API kütüphanesinin kullanılabilmesi için üç farklı değer üretilir. Bu değerler Project Number, client ID ve client secret değerleridir. ”Project number” sorguların çalıştırıldığı projeyi tanımlamaktadır. “Client Id” ve “Client secret ”değerleri ise uygulamanın google ve bigquery servislerini kullanabilmesi için gerekli olan üzerine yetkilendirme işlemlerinde kullanılmaktadır.
  • 15. Yeni Proje Oluşturma sırasında izlenecek adımlar aşağıda belirtilmiştir.  Google API Console sayfasına bağlantı kurularak BigQuery isimli yeni bir proje yaratılır.  Projemiz oluşturulduktan sonra Services sekmesi altından BigQuery API özelliği etkinleştirilir.  Son olarak ta API Console üzerinde proje URL si üzerinden proje numarası not edilir. Örnek URL: (https://code.google.com/apis/console/#project:12345XXXXXXX). Proje Numarası, Bigquery API ile bağlantı kurulduğunda kullanılacaktır.  Client Id ve Client secret değerleri oluşturmak için Console üzerinde API Access butonuna tıklandıktan sonra Create an OAuth2.0 client ID butonuna tıklanır.  Uygulama tipinin seçilebileceği sayfa açılır açılan sayfadan “installed application” seçeneği seçildikten sonra Create client ID butonuna tıklanarak clientId ve client secret değerleri oluşturulur.  Download Json butonuna basılarak uygulamanın BigQuery servislerini kullanabilmesi için gerekli olan client_secret.json dosyası kaydedilir. client_secret.json örnek dosyası: { "installed": { "client_id": "XXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com", "client_secret": "XXXXXXXXXXXXXXXXXXXX", "redirect_uris": ["urn:ietf:wg:oauth:2.0:oob"], "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token" } } Adım 2: Google API Client Kütüphanelerinin Yüklenmesi Örnek uygulamamızda Bigquery servislerini kullanabilmemiz için Google API client kütüphaneleri aşağıdaki linklerden yüklenmelidir.  Java: Google APIs Client Library for Java, and the Generated BigQuery Java Client library.  Python: Google APIs Client Library for Python Uygulamamızı JAVA yazılım dili ile geliştireceğimiz için JAVA için gerekli kütüphaneler yüklenmelidir. Adım 3: Bigquery API Erişimi Bigquery servisine erişim sağlanabilmesi için Google API Console vasıtasıyla oluşturulmuş olan client_secrets.json dosyasından clientId ve client_secret değerlerinin okunması için gerekli kodun yazılması gereklidir.
  • 16. Örnek Kod: // Enter your Google Developer Project number or string id. private static final String PROJECT_ID = "name_of_project"; // Use a Google APIs Client standard client_secrets.json OAuth 2.0 parameters file. private static final String CLIENTSECRETS_LOCATION = "client_secrets.json"; // Objects for handling HTTP transport and JSON formatting of API calls. private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport(); private static final JsonFactory JSON_FACTORY = new JacksonFactory(); public static void main(String[] args) throws IOException { GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(new JacksonFactory(), new InputStreamReader(ApiQuickstart.class.getResourceAsStream(CLIENTSECRETS_LOCATION))); Credential credential = getCredentials(clientSecrets, new Scanner(System.in)); Bigquery bigquery = new Bigquery(HTTP_TRANSPORT, JSON_FACTORY, credential); String query = "SELECT TOP( title, 10) as title, COUNT(*) as revision_count " + "FROM [publicdata:samples.wikipedia] WHERE wp_namespace = 0;"; runQueryRpcAndPrint(bigquery, PROJECT_ID, query, System.out); } ClientId ve client _secret değerleri kullanılarak kullanıcının API üzerine erişimi sağlanır .Erişim sonucu başarılı olduğunda Google API üzerinden dönen erişim kodu kullanılarak Bigquery servislerinin kullanabilmek için Bigquery client nesnesi yaratılmaktadır. Örnek Kod: static Credential getCredentials(GoogleClientSecrets clientSecrets, Scanner scanner) throws IOException { String authorizeUrl = new GoogleAuthorizationCodeRequestUrl( clientSecrets, clientSecrets.getInstalled().getRedirectUris().get(0), Collections.singleton(BigqueryScopes.BIGQUERY)).build(); System.out.println( "Paste this URL into a web browser to authorize BigQuery Access:n" + authorizeUrl); System.out.println("... and paste the code you received here: "); String authorizationCode = scanner.nextLine(); // Exchange the auth code for an access token. GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, Arrays.asList(BigqueryScopes.BIGQUERY)) .build(); GoogleTokenResponse response = flow.newTokenRequest(authorizationCode) .setRedirectUri(clientSecrets.getInstalled().getRedirectUris().get(0)).execute(); return flow.createAndStoreCredential(response, null); }
  • 17. Adım 4: Sorgu Çalıştırma Bigquery üzerinde sorgu çalıştırabilmek için Senkron ve asenkron olmak üzere iki farklı metodu kullanıma sunulmaktadır. Senkron Sorgu yöntemi kullanıldığında api üzerinden sorgu başlatılır ve sonuç için sorgunun tamamlanmasını veya sorgu süresi için bir timeout süresi verilmiş ise timeout süresinin dolması beklenmelidir. Asenkron Sorgu Yönteminde ise sorgu için bir iş süreci başlatılmakta ve süreç başlatıldıktan sonra sistem tarafından verilen jobId ile iş sürecininin durumu kontrol edilebilmektedir. İşlem tamamlandıktan sonra sorgu sonuçları alınmaktadır. Senkron sorgu yönteminin aksine bu yöntemde sorgu sonucu beklenirken başka iş süreçleri kontrol edilebilmektedir. Örnek uygulamamızda Bigquery tarafından desteklenen metotlardan senkron sorgu yöntemi kullanılmıştır. Senkron sorgulamayı başlatmak için API vasıtasıyla “runQueryRpcAndPrint” metoduna sorgu cümlesi ve proje numarası string olarak gönderilir. Örnek Kod: /** * Runs a synchronous BigQuery query and displays the result. * * @param bigquery An authorized BigQuery client * @param projectId The current project id * @param query A String containing a BigQuery SQL statement * @param out A PrintStream for output, normally System.out */ static void runQueryRpcAndPrint( Bigquery bigquery, String projectId, String query, PrintStream out) throws IOException { QueryRequest queryRequest = new QueryRequest().setQuery(query); QueryResponse queryResponse = bigquery.jobs().query(projectId, queryRequest).execute(); if (queryResponse.getJobComplete()) { printRows(queryResponse.getRows(), out); if (null == queryResponse.getPageToken()) { return; } }
  • 18. Adım 5: Sorgu Sonuçlarının Gösterilmesi Sorgu tamamlandıktan sonra API üzerinden sorgu sonuçları JSON formatında dönmektedir. Uygulama tarafından servis tarafından gönderilen json formatındaki sorgu sonuçları ayrıştırılarak uygulama üzerinde gösterilir. Örnek Kod: private static void printRows(List<TableRow> rows, PrintStream out) { if (rows != null) { for (TableRow row : rows) { for (TableCell cell : row.getF()) { // Data.isNull() is the recommended way to check for the 'null object' in TableCell. out.printf("%s, ", Data.isNull(cell.getV()) ? "null" : cell.getV().toString()); } out.println(); } } } Bigquery Servisine Tarayıcı Üzerinden Erişim Sağlanması: Bigquery API üzerinde üçüncü parti uygulamanın erişimine izin vermesinin yanında veri yükleme, veri çıkarma, sorgu çalıştırma iş süreçlerinin yönetilmesi gibi birçok işlevin yapılabilmesine olanak sağlayan web arayüz biriminide kullanıcılarına sunmaktadır. https://bigquery.cloud.google.com/ adresi üzerinden kullanıcı bilgileri girilmek suretiyle bigquery yönetim konsoluna erişilebilmektedir. Bigquery Yönetim konsolu kullanılarak gerçekleştirilebilecek işlemler ana başlıkları aşağıda belirtilmiştir. Proje İşlemleri Projeler Arasında Geçiş Yapılması Tablo İşlemleri  Tablo İçeriğine Gözatma(Veri ,Şema)  Yeni Tablo Oluşturma,  Tablo Silme,  Tablo Kopyalama,  Tablo Üzerine Veri Ekleme,
  • 19. Sorgu İşlemleri  Sorgu Oluşturma,  Sorgu Çalıştırma,  Sorgu Sonuçlarının Tablo olarak kaydedilmesi  Sorgu Sonuçlarının CSV dosyası olarak kaydedilmesi (Sorgu sonucu 16.000 den küçükse)  Sorgu Tarihçesine Erişilmesi DataSet İşlemleri  Yeni DataSet Oluşturma  Dataset Silme  DataSet İçeriğine Gözatma,  Seçili Datasetin Kullanıcı Bazlı Paylaşımı Veri Dışarı Çıkarma İşlemleri:  Tablo içeriğinin Google Disk Sunucuları üzerine export edilmesi Bigquery Servisine Excel Üzerinden Erişim Sağlanması: Microsoft Excel aracı analiz vb. işler üzerine çalışılan sektörlerde oldukça yaygın olarak kullanılmaktadır. Bigquery tarafından sağlanan bu servisle excel sayfası üzerinden oluşturulan sorgular bigquery üzerinde çalıştırılabilmektedir. Bigquery Excel Connector özelliğini kullanabilmek için öncelikle aşağıdaki önkoşulların sağlanması gerekmektedir. Önkoşullar: https://bigquery-connector.appspot.com/download adresinden ilgili dosya (Microsoft Excel Web Sorgusu Dosyası) indirilir. https://bigquery-connector.appspot.com/ sayfasında Microsoft Excel Web Sorgusu Dosyasını kullanabilmek için “Creating a Key” bölümünden anahtar kod oluşturulur. İşlem Adımları: 1. Önkoşullar tamamlandıktan sonra boş bir excel sayfası açılır ve aşağıdaki görselde görüldüğü gibi sayfanın ilk üç satırına sırasıyla Bigquery üzerinde oluşturulmuş olan Proje Id numarası, iki numaralı önkoşul gerçekleştirildikten sonra elde edilen anahtar ve SQL sorgu cümlesi yazılır.
  • 20. 2. Excel Programı üzerinde Veri(Data) >>Var Olan Bağlantılar(Get External Data) Yolu izlenir. 3. Varolan Bağlantılar Penceresinde Daha Fazlası için Gözat (Browse More ) butonuna basılarak Önkoşul 1 de indirilen Microsoft Excel Web Sorgusu Dosyası gösterilmelidir.
  • 21. 4. Microsoft Excel Web Sorgusu Dosyası (connector.iqy) gösterildikten sonra açılan ekrandan bigquery üzerinden çekilen verilerin yerleştirileceği çalışma sayfası seçilir. 5. Excel Sayfasında daha önceden girmiş olduğumuz Project ID, Unique Key, Query değerleri sırasıyla seçilir.
  • 22. 6. Tüm parametrelerin excel üzerinde değerleri girildikten sonra bigquery üzerinde sorgu çalıştırılıp sonuçlar excel üzerinde seçili sayfada görüntülenmektedir.
  • 23. Üçüncü Parti Araçlar: Endüstride yaygın olarak kullanılmakta olan bir çok popüler Veri Yükleme, Veri Dönüştürme ve Görselleştirme araçları Bigquery yapısını desteklemektedir. Bu konuda Bigquery ile entegre çalışan popüler yazılımlar aşağıda belirtilmiştir. Görselleştirme ve İş Zekası Araçları Kategorisi: ETL (Veri Yükleme ve Dönüştürme) Kategorisi:
  • 24. İkinci Bölüm: Bildirinin bu bölümünde Google Bigquery Servisi ile uyumlu iş zekası çözümü BIME aracı ve kullanımı hakkında bilgi verilecektir. BIME Nedir: BIME geleneksel yüksek yatırım ve teknik altyapı gerektiren iş zekası çözümlerinin aksine hızlı analitik ve görselleştirme yeteneklerine sahip yeni nesil bir iş zekası modelidir. Bime SAAS tabanlı bir servistir. SAAS tabanlı olmasının getirdiği yetenekler sayesinde Bilme üzerinden online olarak veri kümelerine bağlanılıp veriler üzerinde sorgulama yapılabilmesine olanak sağlamaktadır. Bime üzerinde veri kümesi ile bağlantı kurulduktan sonra ilgili sorgular hızlı bir şekilde oluşturulup sonuçlar görselleştirilebilmektedir. Görselleştirilen sonuçlar hızlı ulaşılabilmesi için dashboard olarak adlandırılan izleme amaçlı ekranlara aktarılıp yetkili kullanıcıların erişimine açılabilmektedir. Bime kullanılarak var olan CRM, ERP vb. uygulamaların veri tabanlarına bağlanılıp online olarak istenen veriler kolaylıkla izlenebilmektedir. Bime anlam olarak “BI for me” kelimelerinini birleştirilmesi ile elde edilmiştir. BI (Businnes Intelligince) geleneksel iş zekası çözümlerinin aksine ek bir sitem kaynağına veya bilgisine ihtiyaç duymamaktadır. Bime teknik olarak bakıldığında Saas çözümüdür. Bu nedenle geleneksel çözümlerle kıyaslandığında daha erişilebilir bir çözümdür. Bime ile çok çeşitlik veri kaynaklarına bağlanmak oldukça kolaydır. Hem lokal kaynaklara(ilişkisel veri tabanları, excel dosyaları vb. ) hem de onlline veri kaynaklarına(google bigquery vb.) kolaylıkla erişilebilmektedir.
  • 25. BIME üzerinde veri analizi iki moda sahiptir 1. Memory Mode 2. Delegated Mode Memory mod ile kullanıcı tarafında memory üzerinde yer alan veri miktarını analiz edebilirken delegate mod da veritabanın kapasitesinin tamamı kullanılabilmektedir. Delegated Mod da kullanıcı öncelikle istekte bulunur. Bime kullanıcı isteğine göre SQL sorgularını oluşturur ve veri tabanına ilgili sorguyu gönderir sonucun dada dönen değerler üzerinde işlem yapmaktadır. Memory modda ise kullanıcı isteğinden sonra veri tabanındaki tüm verinin memory kapasitesi kadarı memory üzerine kaydedilir analiz memory üzerindeki veri üzerinden gerçekleştirilir.
  • 26. Delegated modun dezavantajları aşağıda belirtilmektedir. 1. Sadece sorgu sonucunun anlık görüntüsü alınabildiği için veri snapshot teknolojileri (Dejavu vb.) kullanılamayacaktır. 2. İlişkisel veritabanındaki yük arttırılacağı için sistemin yavaşlamasına neden olabilir. Bildirinin ilerleyen bölümlerinde bigquery üzerine yüklemiş olduğumuz veri üzerinde yapılan sorgulara ait sonuçların görsel olarak takip edilebilmesi için bime ile nasıl entegre edebileceğimiz hakkında bilgi verilecektir. http://www.bimeanalytics.com/ adresi üzerinden bime hesabı açıldıktan sonra kullanıcı konsoluna erişim linki sistem tarafından oluşturulur. Sistem üzerinden kullanıcıya özel oluşturulan link vasıtasıyla bime yönetim konsoluna erişilmektedir.
  • 27. Konsol üzerinde Create Connection butonun basılarak açılan sayfadan bağlantı yapılmak istenen data kaynağı seçilir. Açılan Pencerede veri kaynağını Bigquery olarak seçiyoruz. Veri kaynağı seçildikten sonra açılan pencerede Google Bigquery hesabına bağlanabilmemiz için kullanıcı bilgileri girilerek bigquery üzerinde analiz yapılmak istenen veri kaynağına bağlanır.
  • 28. Şema tabı üzerinden veri kaynağı üzerindeki hangi alanların analiz sekmesinde görünür olup olmayacağı belirlenir. Bu aşamadan sonra Kaydet butonuna basılarak Analiz Sekmesine geçilir.
  • 29. Veri bağlantısı sağlandıktan sonra tüm veri üzerinde bime arayüzü üzerinden istenilen sorgulamalar yapılabilir. Analiz ekranı tarafından sunulan görsel ara yüz üzerinden istenen sorgular sürükle-bırak yöntemi ile kolaylıkla oluşturulabilmektedir. Örnek Proje: Bildirinin önceki bölümlerinde anlatıldığı gibi Bime ara yüzü üzerinden bağlantı şeklini BigQuery olarak seçip, genel sekmesinde google hesabımıza bağlanmak için sahip olduğumuz kullanıcı bilgilerini giriyoruz. Sonraki adımda bağlantı sağlandıktan sonra Table alanından açılan seçeneklerden sırasıyla publicdata:samples seçeneğini ardından da shakespeare isimli örnek tabloyu seçiyoruz. Analiz sekmesine geçtiğimizde artık aşağıdaki gibi seçmiş olduğumuz shakespeare isimli tablo ile ilgili alanların geldiği görülür. Bu arayüz vasıtasıyla sürükle bırak işlemi ilgili kolonları oluşturmak istediğimiz sorguya göre ilgili Rows,Columns,Explode,Measure,Filter alanlarına taşıyarak sorgumuzu oluşturabiliriz. Shakespeare eserlerinde eser adı ve eserde geçen kelime sayısına göre örnek analiz sonucu aşağıdaki resimde görülmektedir.
  • 30. Analiz ekranında Rows,Explode,Measures,Columns,Filters olmak üzere 5 adet eksen vardır. Explode alanı sürüklenen alan içerisindeki her bir değer için ayrı ayrı gösterimin istendiği durumlarda kullanılır. Measures Alanı ile alan içerisindeki değer üzerinde hesaplama yaptırılmak istendiği durumlarda kullanılır. Measure alanı içerisinde açılır menü üzerinden aşağıdaki seçenekler seçilebilmektedir. Verilen örnekte shakespeare eserlerinde geçen kelimelerin toplam sayısı görülmek istendiği için “SUM” opsiyonu seçilmiştir. Filter Opsiyonu sorgu sonucunda gösterilecek alanlar seçilebildiği alandır.
  • 31. Bime tarafından kullanıcılara sunulan önemli bir yenilikte sorgu sonuçlarının grid dışında farklı grafik görselleri üzerinde gösterilmesine olanak sağlamasıdır. Analiz ekranında Grid butonu tıklanmak suretiyle sorgu sonuçlarının seçili grafik görseli üzerinde görülebilmesi sağlanabilmektedir. Yukarıdaki resim dede görüldüğü gibi Bar grafikten Geo Spatial olarak gösterilmesine kadar çok çeşitli gösterim alternatifleri sistem tarafından sağlanabilmektedir. Veri Kümesi ile yapılan analizler sonucunda elde edilen örnek gösterimler aşağıda gösterilmiştir. Pie Gösterimi:
  • 33. DASHBOARD: Bime sistemi Dashboard olarak isimlendirilen izleme ekranları sayesinde yaratılarak biden çok veri kaynağı üzerinde gerçekleştirilen eş zamanlı sorgu sonuçları seçilen grafiksel gösterimle son kullanıcıya sunulabilmesine imkan vermektedir. Ara yüz üzerinden dashboard ekranlarının oluşturulması, düzenlenmesi işlemleri gerçekleştirilebilmektedir. Sistem üzerinde dashboard ekranı oluşturmak veya varolan sorgu sonucunu dashboard ekranı olarak kaydetmek için Sorgu sonucu tamamlandıktan sonra Save butonuna basılır ve çıkan menüden ToDashboard opsiyonu seçilmelidir. Sistemin oluşturulan Dashboard ekranının public erişime açılabilmesinin yanında sistem tarafından yetki verilen kullanıcılarında erişimi sağlanabilmektedir.
  • 34. Üçüncü Bölüm: Bildirinin bu bölümünde google bigquery üzerinde gerçekleştirilen verilerin android tabanlı mobil cihazlar üzerinden nasıl erişilebileceği üzerine bilgi verilecektir. Google bigquery veri tabanı üzerinde gerçekleştirdiğimiz sorguları Servis tabanlı İş zekası çözümü olarak geliştirilen BIME isimli servisi kullandık. Görselleştirdiğimiz verilere android tabanlı cihazlar üzerinden erişebilmemiz için iki yöntem kullanabiliriz. Yöntem 1 : BIME üzerinde bildirinin BIME ileilgili bolumunda anlatıldığı gibi sorgu sonuclarının dashboard olarak kaydedilip ilgili linki açan basit bir android web browser uygulaması geliştirmek suretiyle Yöntem 2: Google play üzerinden https://play.google.com/store/apps/details?id=air.com.bimeanalytics.bimemobile linki üzerinden BIME servisini kullanabilmek için geliştirilen uygulamayı tabletimize kurmak suretiyle android tabanlı mobil cihaz üzerinden erişebiliriz. Uygulama Örnek Görüntüleri: