Bu sayfada, Sorgu sınıfı kullanan grafiklere veri göstermek için Grafik Araçları Veri Kaynağı protokolünü destekleyen bir hizmeti nasıl uygulayabileceğiniz açıklanmaktadır.
İçindekiler
Kitle
Bu sayfa öncelikle, Grafik Araçları Veri Kaynağı Kitaplığı'nın yardımı olmadan kendi veri kaynağını oluşturacak geliştiricilere yöneliktir. Bu yardımcı kitaplığı veya başka bir yardımcı kitaplığı kullanıyorsanız önce kitaplığınızın belgelerini okuyun.
Bu sayfa ayrıca, istemci görselleştirme ile veri kaynağı arasındaki iletişimde kullanılan kablo protokolünü anlamak isteyen okuyucular için de hazırlanmıştır.
Görselleştirme oluşturuyor veya kullanıyorsanız bu sayfayı okumanıza gerek yoktur.
Bu belgeyi okumak için temel JSON ve HTTP isteği söz dizimini anlamanız gerekir. Grafiklerin kullanıcı bakış açısıyla nasıl çalıştığını da öğrendiniz.
Genel bakış
Kendi grafikleriniz veya diğer grafikleriniz için veri kaynağı sağlayıcısı olmak istiyorsanız Grafik Araçları Veri Kaynağı protokolünü uygulayabilirsiniz. Grafik Araçları Veri Kaynağı, bir grafiğin HTTP GET isteklerini gönderebileceği Veri Kaynağı URL'si adlı bir URL gösterir. Buna karşılık olarak veri kaynağı, grafiğin sayfada grafiği oluşturmak için kullanabileceği doğru biçimlendirilmiş verileri döndürür. Bu istek-yanıt protokolü, Google Görselleştirme API'sı kablo protokolü olarak bilinir.
Bir veri kaynağı tarafından sunulan veriler, dosya veya veritabanı gibi çeşitli kaynaklardan çıkarılabilir. Tek kısıtlama, verileri türü yazılmış sütunlar içeren iki boyutlu bir tablo olarak biçimlendirebilmenizdir.
Grafik Araçları Veri Kaynağı olarak bir isteği belirli bir biçimde ayrıştırmanız ve yanıtı belirli bir biçimde döndürmeniz gerekir. Bunu iki genel yöntemden biriyle yapabilirsiniz:
-
İsteği ve yanıtı işlemek için aşağıdaki yardımcı kitaplıklardan birini kullanın ve döndürülecek DataTable'ı oluşturun. Bu kitaplıklardan birini kullanıyorsanız yalnızca verilerinizi tablo biçiminde kitaplığa sunmak için gereken kodu yazmanız gerekir.
- Java Veri Kaynağı Kitaplığı - İsteği ve yanıtı işler, verdiğiniz verilerden yanıt tablosunu oluşturur ve Google Chart Tools SQL sorgu dilini uygular.
-
Python Veri Kaynağı Kitaplığı -
Yanıt söz dizimini barındıran bir yanıt tablosu oluşturur. İsteğin ayrıştırılması veya Google Grafik Araçları SQL sorgu dilinin uygulanması işlemlerini gerçekleştirmez.
VEYA
- İsteği işleyip DataTable oluşturarak ve yanıtı göndererek kendi veri kaynağınızı sıfırdan yazın.
İşleyiş şekli:
- Veri kaynağı, grafiklerin bir HTTP GET isteği gönderdiği veri kaynağı URL'si adlı bir URL gösterir.
- İstemci, döndürülen veriler için hangi biçimin kullanılacağını açıklayan parametreler, isteğe bağlı bir sorgu dizesi ve isteğe bağlı özel parametrelerle bir HTTP GET isteği oluşturur.
- Veri Kaynağı, isteği İstek Biçimi bölümünde açıklandığı gibi alır ve ayrıştırır.
- Veri Kaynağı, verileri istenen biçimde hazırlar. Bu genellikle bir JSON tablosudur. Yanıt biçimleri, Yanıt Biçimi bölümünde ele alınmıştır. Veri Kaynağı isteğe bağlı olarak filtreleme, sıralama ve diğer veri manipülasyon işlemlerini belirten Görselleştirme API'sı sorgu dilini destekleyebilir.
- Veri Kaynağı, serileştirilmiş verileri ve diğer yanıt parametrelerini içeren bir HTTP yanıtı oluşturur ve Yanıt Biçimi'nde açıklandığı gibi istemciye geri gönderir.
Not: Bu belgede istekler ve yanıtlar için listelenen tüm parametreler ve dize sabit değerleri (responseHandler
ve "ok" gibi) küçük harfli ve büyük/küçük harfe duyarlıdır.
Minimum gereksinimler
Grafik Araçları Veri Kaynağı işlevi görmek için minimum gereksinimler şunlardır:
- Veri kaynağı, HTTP GET isteklerini kabul etmeli ve müşterilerinizin kullanımına sunulmalıdır.
- Protokol değişebilir ve sürüm şemasını destekler (mevcut sürüm 0.6'dır). Bu nedenle veri kaynağınız, hem önceki sürümleri hem de mevcut sürümü kullanan istekleri desteklemelidir. En yeni sürüme hızlıca geçen istemcilerin bozulmalarını önlemek için yeni sürümleri yayınlanır yayınlanmaz desteklemeye çalışmalısınız.
- İstek kapsamında bilinmeyen özellikler gönderilirse işlem başarısız olmaz. Bunun nedeni, yeni sürümlerin farkında olmadığınız yeni özellikler sunabilmesidir.
- Yalnızca beklediğiniz özellikleri ayrıştırın. Yeni sürümler yeni özellikler sunsa da istek dizesinin tamamını körü körüne kabul etmeyin ve kullanmayın. Kendinizi kötü amaçlı saldırılara karşı korumak için yalnızca beklediğiniz özellikleri dikkatle ayrıştırıp kullanın.
- Müşteri grafiklerini kendiniz kodlamıyorsanız veri kaynağı gereksinimlerinizi dikkatli bir şekilde belgeleyin. Buna aşağıdaki bilgilerin belgelenmesi de dahildir:
- Kabul ettiğiniz tüm özel parametreler,
- Google Görselleştirme API'si sorgu dilini ayrıştırıp ayrıştıramayacağınız ve
- Ne tür veriler döndürdüğünüz ve bu verilerin yapısı (satırların ve sütunların neyi temsil ettiği ve etiketlemeler).
- Bilinmeyen istemcilerden gelen istekleri kabul eden bir site için tüm standart güvenlik önlemlerini alın. İsteklerin kimliğini doğrulamak veya kötü amaçlı saldırılara karşı güvenliği sağlamaya yardımcı olmak için parametrelerinizde MD5, karma oluşturma ve diğer güvenlik mekanizmalarını makul bir şekilde destekleyebilir ve istemcilerin gereksinimlerinizi bilmelerini ve bunlara yanıt vermelerini bekleyebilirsiniz. Ancak grafikleri kendiniz kodlamıyorsanız tüm gereksinimlerinizi iyi belgelediğinizden emin olun. Aşağıdaki Güvenlikle İlgili Dikkat Edilmesi Gereken Noktalar bölümünü inceleyin.
- Tüm istek ve yanıt dizeleri UTF-8 olarak kodlanmış olmalıdır.
- En önemli yanıt biçimi JSON'dir. Çoğu grafik tarafından kullanılan biçim olduğu için öncelikle JSON'u uyguladığınızdan emin olun. Diğer yanıt türlerini daha sonra ekleyin.
- Görselleştirme API'si sorgu dilini desteklemeniz zorunlu değildir ancak veri kaynağınız müşteriler için daha kullanışlı hale gelir.
- Tüm grafik türlerinden gelen istekleri desteklemeniz zorunlu değildir ve özel grafikler için özel parametreleri destekleyebilirsiniz. Ancak yanıtları aşağıda açıklanan standart biçimde döndürmeniz gerekir.
Güvenlikle İlgili Dikkat Edilmesi Gereken Noktalar
Veri kaynağınızı tasarlarken verilerinizin ne kadar güvenli olması gerektiğini göz önünde bulundurmanız gerekir. Sitenizde, basit şifre erişiminden güvenli çerez kimlik doğrulamasına kadar çeşitli güvenlik şemaları kullanabilirsiniz.
XSSI (siteler arası komut dosyası dahil etme) saldırıları, grafikler için risk teşkil eder. Bir kullanıcı, kötü amaçlı bir komut dosyası içeren bir sayfaya gidebilir. Daha sonra, mevcut kullanıcının kimlik bilgilerini kullanarak veri kaynağı URL'lerine sorgu göndermeye başlar. Kullanıcı bir siteden çıkış yapmadıysa komut dosyasının kimliği geçerli kullanıcı olarak doğrulanır ve o sitede gerekli izinlere sahip olur. <script src> etiketi kullanıldığında kötü amaçlı komut dosyası JSONP'ye benzer şekilde veri kaynağını içerebilir.
Ek bir güvenlik düzeyi olarak istekleri veri kaynağınızla aynı alandan gelen isteklerle kısıtlayabilirsiniz. Bu, veri kaynağınızın görünürlüğünü önemli ölçüde kısıtlar ancak alanınız dışından erişilmemesi gereken çok hassas verileriniz varsa bunu göz önünde bulundurmalısınız. Yalnızca aynı alandan gelen isteklere izin veren bir veri kaynağına, tüm alanlardan gelen sorguları kabul eden kısıtlanmamış veri kaynağı değil, kısıtlanmış veri kaynağı denir. Kısıtlanmış bir veri kaynağının nasıl uygulanacağıyla ilgili bazı ayrıntılar aşağıda verilmiştir:
Bir isteğin dış bir alandan (veya alan adının içinde bulunan XSRF saldırısı altındaki bir tarayıcıdan) değil, gerçekten alan adınızdan geldiğinden emin olmak için:
- İstekte "X-DataSource-Auth" üstbilgisi olduğunu doğrulayın. Bu üst bilgi, Google Görselleştirme API'sı tarafından tanımlanır. Bu üst bilginin içeriğini incelemeniz gerekmez. Yalnızca sayfanın orada olduğunu doğrulamanız gerekir. Google Grafik Araçları Veri Kaynağı kitaplığını kullanıyorsanız kitaplığın bu işlemleri sizin için yapmasını sağlayabilirsiniz.
- İstemcinin kimliğini doğrulamak için çerez kimlik doğrulamasını kullanın. Kimlik doğrulama çerezlerini yerinde tutarken web alanları arası isteğe özel üst bilgi eklemenin bilinen bir yolu yoktur.
- Bir <script src> etiketiyle dahil edildiğinde JavaScript'in yürütülmemesini sağlayın. Bunu yapmak için JSON yanıtınızın önüne )]}' karakteri ve ardından yeni bir satır ekleyin. İstemcinizde ön eki yanıttan kaldırın. XmlHttpRequest için bu yalnızca istek aynı alandan geldiğinde mümkündür.
İstek Biçimi
Bir istemci özel öğeler, isteğe bağlı bir sorgu dizesi, imza ve diğer öğeler dahil olmak üzere çeşitli parametreler içeren bir HTTP GET isteği gönderir. Yalnızca bu bölümde açıklanan parametreleri ayrıştırma sorumluluğu size aittir ve kötü amaçlı saldırılardan kaçınmak için başka parametreler kullanmamaya dikkat etmelisiniz.
İsteğe bağlı parametreler (hem standart hem de özel) için varsayılan değerleriniz olduğundan emin olun ve tüm varsayılan ayarlarınızı site belgelerinizde belirtin.
Birkaç örnek isteği aşağıda bulabilirsiniz (Örnekler bölümünde bu dokümanın sonunda daha fazla istek ve yanıt örneği görebilirsiniz):
Not: Aşağıdaki istek dizeleri ve Örnekler bölümünde gösterilenler, gönderilmeden önce URL çıkışlı olmalıdır.
Basic request, no parameters: http://www.example.com/mydatasource Request with the tqx parameter that contains two properties: http://www.example.com/mydatasource?tqx=reqId:0;sig:4641982796834063168 Request with a query string: http://www.example.com/mydatasource?tq=limit 1
İstek dizesindeki tüm standart parametrelerin listesini burada bulabilirsiniz. Hem parametre adlarının (ör. "sürüm") hem de sabit dize değerlerinin ("ok", "uyarı" ve "not_modified") büyük/küçük harfe duyarlı olduğunu unutmayın. Tabloda, parametrenin gönderilmesinin gerekli olup olmadığı ve gönderilmesi durumunda bunu işlemeniz gerekip gerekmediği de açıklanmaktadır.
Parametre | İstekte Zorunlu mu? |
İşlenecek Veri Kaynağı |
Açıklama |
---|---|---|---|
tq | Hayır |
Hayır |
Google Görselleştirme API'si sorgu dilinde yazılmış ve döndürülen verilerin nasıl filtreleneceğini, sıralanacağını veya başka bir şekilde değiştirileceğini belirten bir sorgu. Dizenin tırnak içine alınması gerekmez. Örnek: |
tqx | Hayır |
Evet |
Standart veya özel parametreler için iki nokta üst üste işaretiyle ayrılmış anahtar/değer çifti kümesi. Çiftler noktalı virgülle ayrılır. Görselleştirme protokolü tarafından tanımlanan standart parametrelerin listesini aşağıda görebilirsiniz:
Örnek: |
tqrt | Hayır |
Hayır |
Ayrılmış: Bu parametreyi yoksayın. Sorguyu göndermek için kullanılan yöntem. |
Yanıt Biçimi
Yanıtın biçimi, isteğin beklenen yanıt türünü belirten out
parametresine bağlıdır. Her istek türüne nasıl yanıt verileceğini öğrenmek için aşağıdaki bölümleri inceleyin:
- JSON - Doldurmak için doğrudan bir
DataTable
oluşturucuya geçirilebilecek JavaScript nesnesindeki verileri içeren bir JSON yanıtı döndürür. Bu, açık arayla en yaygın istek türüdür ve düzgün şekilde uygulanması en önemlidir. - CSV - Tarayıcı tarafından işlenecek, virgülle ayrılmış düz bir değer listesi döndürür.
- TSV - Tarayıcı tarafından işlenecek sekmeyle ayrılmış değer listesini döndürür.
- HTML: Tarayıcı tarafından oluşturulacak bir HTML tablosu döndürür.
Bu çıkış biçimlerini sizin için oluşturmak üzere Google Görselleştirme Veri Kaynağı Kitaplığı'nı (Java) veya görselleştirme Python kitaplığını kullanabilirsiniz.
JSON Yanıt Biçimi
İstek bir "X-DataSource-Auth" üstbilgisi içeriyorsa varsayılan yanıt biçimi JSON, aksi takdirde JSONP olur. Google grafik istemcisinin aslında JSON ve JSONP'nin değiştirilmiş bir sürümünü desteklediğini unutmayın. Java veya Python yardımcı kitaplıklarını kullanıyorsanız bu kitaplıklar sizin için doğru kodu oluşturur. Yanıtları elle ayrıştırıyorsanız aşağıdaki JSON Değişiklikleri bölümüne göz atın.
Aynı alan adına yönelik istekleri zorunlu kılıyorsanız istekte "X-DataSource-Auth" başlığının bulunduğunu doğrulamanız ve yetkilendirme çerezlerini kullanmanız gerekir.
Bu, Google Görselleştirme API'sı yöntemi (google.visualization.Query.send()
) tarafından belirtilen tek yanıt biçimidir.
Bazı örnek JSON isteklerini ve yanıtlarını bu sayfanın sonunda Örnekler bölümünde görebilirsiniz.
Bu yanıt dizesini oluşturmak için Java veya Python yardımcı kitaplıklarını kullanabilirsiniz.
Bu yanıt biçimi, aşağıdaki tabloda yer alan özellikleri içeren (veriler table
özelliğine atanır) UTF-8 kodlu bir JSON nesnesidir (her bir özellik virgülle ayrılmış şekilde ayraç { } ile sarmalanmış bir nesne). Bu JSON nesnesi, istekteki responseHandler
parametre değerinin içine sarmalanmalıdır. Dolayısıyla, isteğin responseHandler
değeri "myHandler" ise şuna benzer bir dize döndürmeniz gerekir (kısaca yalnızca bir özellik gösterilir):
"myHandler({status:ok, ...})"
İstek bir responseHandler
değeri içermiyorsa varsayılan değer "google.Visualization.Query.setResponse" olur. Bu nedenle, şuna benzer bir dize döndürmeniz gerekir (kısaca yalnızca bir özellik gösterilir):
"google.visualization.Query.setResponse({status:ok, ...})"
Kullanılabilir yanıt nesnesi üyeleri şunlardır:
Özellik | Gerekli mi? |
Açıklama |
---|---|---|
sürüm | Hayır |
Google Görselleştirme kablosu protokolü sürüm numarasını belirten bir dize numarası. Belirtilmezse istemci en son sürümü varsayar. Örnek: |
reqId | Evet* |
Bu istemci için isteğin kimliğini belirten dize numarası. İstekte bu belirtilmişse aynı değeri döndürün. Daha fazla bilgi için istek bölümündeki reqId açıklamasını inceleyin. * Bu parametre istekte belirtilmemişse yanıtta ayarlamanız gerekmez. |
status | Evet |
Bu işlemin başarılı veya başarısız olduğunu açıklayan bir dize. Aşağıdaki değerlerden yalnızca biri olmalıdır:
Örnek: |
uyarılar | Yalnızca status=warning |
Her biri önemli olmayan bir sorunu açıklayan bir veya daha fazla nesneden oluşan dizi.
Örnek: |
hatalar | status=error ise zorunludur |
Her biri bir hatayı açıklayan bir veya daha fazla nesneden oluşan dizi. Dizide aşağıdaki dize üyeleri bulunur (her üye için yalnızca bir değer döndürür):
Örnek:
|
sig | Hayır |
Tablo nesnesinin karma değeri. İstemci ile veri kaynağı arasındaki veri aktarımını optimize etmek için kullanışlıdır. İstediğiniz karma oluşturma algoritmasını seçebilirsiniz. Bu özelliği destekliyorsanız hiçbir veri döndürülmezse istemci tarafından iletilen değeri döndürmeniz veya yeni veriler döndürülürse yeni bir karma döndürmeniz gerekir. Örnek: |
masa | Hayır |
Verilerinizi içeren JavaScript düz gösteriminde {cols:[{id:'Col1',label:'',type:'number'}], rows:[{c:[{v:1.0,f:'1'}]}, {c:[{v:2.0,f:'2'}]}, {c:[{v:3.0,f:'3'}]}, {c:[{v:1.0,f:'1'}]} ] }
Örnek: Aşağıdaki Örnekler bölümüne bakın. |
Google'ın yardımcı kitaplıkları ve Google'a gönderilen tüm sorgular katı JSON/JSONP döndürür.
Döndürülen kodu kendiniz ayrıştırmıyorsanız bu durum sizin için önemli olmayacaktır. Bu durumda, JSON dizesini JavaScript nesnesine dönüştürmek için JSON.parse() kullanabilirsiniz. JSON'un API tarafından işlenme şekliyle ilgili tek fark, JSON'un JavaScript Tarih değerlerini desteklememesidir (örneğin, "new Date(2008,1,28,0,31,26)"; API, tarihlerin geçerli bir JSON gösterimini şu biçimde bir dize olarak destekler: Date(year, month, day[,hour, minute, second[, millisecond]])
Günden sonraki her şeyin isteğe bağlı olduğu ve ayların sıfır tabanlı olduğu biçim.
JSON Yanıtlarını Optimize Etme
Bir istemci iki istek gönderirse ve istekler arasında veriler değişmemişse verileri yeniden göndermemek mantıklıdır. Aksi takdirde bant genişliği boşa harcanır. Protokol, istekleri daha verimli hale getirmek için verilerin istemcide önbelleğe alınmasını ve son istekten bu yana veriler değişmediyse yanıtta bir sinyal gönderilmesini destekler. Hesaplama aşağıdaki şekilde yapılır:
- İstemci, veri kaynağına bir istek gönderir.
- Veri kaynağı,
DataTable
nesnesinin karmasını veDataTable
nesnesinin karmasını oluşturur ve yanıtında her ikisini de döndürür (karma,tqx.
sig
parametresinde döndürülür). Google Görselleştirme API'si istemcisiDataTable
vesig
değerlerini önbelleğe alır. - İstemci, önbelleğe alınan
tqx.sig
değerini de içeren başka bir veri isteği gönderir. - Veri kaynağı, aşağıdaki iki yöntemden biriyle yanıt verebilir:
- Önceki istekteki veriler değiştiyse veri kaynağı yeni
DataTable
ve yenisig
değer karmasını geri gönderir. - Veriler önceki isteğe göre değişmediyse veri kaynağı
status=error
,reason=not_modified
vesig=old_sig_value
verilerini geri gönderir.
- Önceki istekteki veriler değiştiyse veri kaynağı yeni
- Her iki durumda da grafiği barındıran sayfa başarılı bir yanıt alır
ve
QueryResponse.getDataTable()
çağrısı yaparakDataTable
öğesini alabilir. Veriler aynıysa yalnızca tablonun önbelleğe alınmış sürümü olur.
Bunun yalnızca Google Görselleştirme API'si üzerine oluşturulmuş grafiklerden gelen JSON istekleri için çalıştığını unutmayın.
CSV Yanıt Biçimi
İstekte out:csv
belirtilirse yanıt, meta veri içermez, yalnızca verilerin CSV temsilini içerir. CSV tablosu genellikle virgülle ayrılmış bir listedir. Her veri satırı, UNIX yeni satır karakteriyle (\n) biten her bir veri satırının virgülle ayrılmış bir değer listesidir. Hücre değerleri, her sütun için aynı türde olmalıdır. İlk satır, sütun etiketleridir. Üç satırlı ve üç sütunlu bir tablo örneğini aşağıda bulabilirsiniz:
A, B, C 1.0, "yes", true 2.0, "no", false 3.0, "maybe", true
CSV biçimi bu protokol tarafından belirtilmemiştir. CSV biçiminin tanımlanmasından veri kaynağı sorumludur. Bununla birlikte yaygın biçim, virgülle (arada boşluk olmadan) ayrılmış bir değer grubu ve her satırın sonunda yeni satır (\n) şeklindedir. Tarayıcı bir CSV dizesi yanıtı aldığında, kullanıcıya dizeyi açmak için hangi uygulamanın kullanılacağını sorabilir veya dizeyi ekranda oluşturabilir. Java ve Python açık kaynak kitaplıkları, DataTable'ı CSV dizesine dönüştürme yöntemi sunar.
İstek, tqx
parametresinin bir outFileName
üyesini içeriyorsa belirtilen dosya adını yanıt başlıklarına dahil etmeyi denemeniz gerekir.
google.visualization.Query
nesnesi, CSV yanıtı isteğini desteklemiyor. Bir müşteri CSV isteğinde bulunmak isterse sayfanıza bir Görselleştirme Araç Çubuğu widget'ı yerleştirebilir veya isteği oluşturmak için özel bir kod kullanabilir ya da aşağıdaki istek URL'sinde gösterildiği gibi, tqx
öğesinin out:csv
özelliğini açıkça ayarlayan bir bağlantı sağlayabilirsiniz:
İstek
http://www.example.com/mydatasource?tqx=reqId:1;out:csv
Yanıt
Label 1,Label2\n1,a\n2,b\n3,c\n4,d
TSV Yanıt Biçimi
İstekte out:tsv-excel
belirtilirse yanıtta meta veri bulunmaz. Bunun yerine, verilerin utf-16 olarak kodlanmış sekmeyle ayrılmış temsili bulunur. İstek, tqx
parametresinin bir outFileName
üyesini içeriyorsa belirtilen dosya adını yanıt başlıklarına dahil etmeyi denemeniz gerekir.
HTML Yanıtı Biçimi
İstekte out:html
değeri belirtilirse yanıt, verilerle bir HTML tablosunu tanımlayan bir HTML sayfası olmalıdır. Tarayıcı, sonucunuzu doğrudan okunabilir bir biçimde oluşturabileceğinden bu yöntem, kodunuzda hata ayıklama konusunda faydalıdır. google.visualization.Query
nesnesini kullanarak HTML yanıtı için sorgu gönderemezsiniz.
Özel kod kullanarak veya tarayıcınızda şuna benzer bir URL yazarak HTML yanıtı için sorgu oluşturmanız gerekir:
İstek
http://www.example.com/mydatasource?tqx=reqId:1;out:html
Yanıt
<html><body><table border='1' cellpadding='2' cellspacing='0'><tr style='font-weight: bold; background-color: #aaa;'><td>label 1</td><td>label 2</td></tr><tr bgcolor='#f0f0f0'><td align='right'>1</td><td>a</td></tr><tr bgcolor='#ffffff'><td align='right'>2</td><td>b</td></tr><tr bgcolor='#f0f0f0'><td align='right'>3</td><td>c</td></tr><tr bgcolor='#ffffff'><td align='right'>4</td><td>d</td></tr></table></body></html>
Örnekler
Bazı örnek istekleri ve yanıtları aşağıda bulabilirsiniz. İsteklerin URL çıkışlı olmadığını unutmayın. Bu işlem genellikle tarayıcı veya google.visualization.Query
nesnesi tarafından yapılır.
Basit istek: Üç sütun ve dört satırlık tablo içeren temel bilgileri döndürür.
Request: http://www.example.com/mydatasource Response google.visualization.Query.setResponse({version:'0.6',reqId:'0',status:'ok',sig:'5982206968295329967',table:{cols:[{id:'Col1',label:'',type:'number'},{id:'Col2',label:'',type:'number'},{id:'Col3',label:'',type:'number'}],rows:[{c:[{v:1.0,f:'1'},{v:2.0,f:'2'},{v:3.0,f:'3'}]},{c:[{v:2.0,f:'2'},{v:3.0,f:'3'},{v:4.0,f:'4'}]},{c:[{v:3.0,f:'3'},{v:4.0,f:'4'},{v:5.0,f:'5'}]},{c:[{v:1.0,f:'1'},{v:2.0,f:'2'},{v:3.0,f:'3'}]}]}});
Yanıt işleyicili basit istek: Farklı veri türlerine sahip üç sütunlu ve üç satırlı tablo döndürür.
Request: http://www.example.com/mydatasource?tqx=responseHandler:myHandlerFunction Response myHandlerFunction({version:'0.6',reqId:'0',status:'ok',sig:'4641982796834063168',table:{cols:[{id:'A',label:'NEW A',type:'string'},{id:'B',label:'B-label',type:'number'},{id:'C',label:'C-label',type:'datetime'}],rows:[{c:[{v:'a'},{v:1.0,f:'1'},{v:new Date(2008,1,28,0,31,26),f:'2/28/08 12:31 AM'}]},{c:[{v:'b'},{v:2.0,f:'2'},{v:new Date(2008,2,30,0,31,26),f:'3/30/08 12:31 AM'}]},{c:[{v:'c'},{v:3.0,f:'3'},{v:new Date(2008,3,30,0,31,26),f:'4/30/08 12:31 AM'}]}]}});
Basit sorgu dizesine sahip sorgu: Tek sütun isteği, dört satırlı tek bir sütun döndürür.
Request: http://www.example.com/mydatasource?tq=select Col1 Response: google.visualization.Query.setResponse({version:'0.6',reqId:'0',status:'ok',sig:'6099996038638149313',table:{cols:[{id:'Col1',label:'',type:'number'}],rows:[{c:[{v:1.0,f:'1'}]},{c:[{v:2.0,f:'2'}]},{c:[{v:3.0,f:'3'}]},{c:[{v:1.0,f:'1'}]}]}});
Veriler değiştirilmedi hatası: not_modified
hatası örneği.
Request: http://www.example.com/mydatasource?tqx=reqId:0;sig:4641982796834063168 Response: google.visualization.Query.setResponse({version:'0.6',reqId:'0',status:'error',errors:[{reason:'not_modified',message:'Data not modified'}]});
Veriler kısaltıldı uyarısı: data_truncated
uyarısı örneği.
İsteğin veri döndürmeye devam ettiğine dikkat edin.
Request: http://www.example.com/mydatasource?tq=limit 1 Response: google.visualization.Query.setResponse({version:'0.6',reqId:'0',status:'warning',warnings:[{reason:'data_truncated',message:'Retrieved data was truncated'}],sig:'1928724788649668508',table:{cols:[{id:'A',label:'NEW A',type:'string'},{id:'B',label:'B-label',type:'number'},{id:'C',label:'C-label',type:'datetime'}],rows:[{c:[{v:'a'},{v:1.0,f:'1'},{v:new Date(2008,1,28,0,31,26),f:'2/28/08 12:31 AM'}]}]}});
Erişim reddedildi hatası: access_denied
hatası örneği.
Request: http://www.example.com/mydatasource Response: google.visualization.Query.setResponse({version:'0.6',reqId:'0',status:'error',errors:[{reason:'access_denied',message:'Access denied',detailed_message:'Access Denied'}]});
Geçersiz sorgu dizesi: Geçersiz sorgu dizesi içeren bir istek örneği. Ayrıntılı mesajın gerçek hata mesajından ziyade genel bir mesaj olduğunu unutmayın.
Request: http://www.example.com/mydatasource?tq=select A Response: google.visualization.Query.setResponse({version:'0.6',reqId:'0',status:'error',errors:[{reason:'invalid_query',message:'Invalid query',detailed_message:'Bad query string.'}]});
Geliştirme Araçları
- Java Datasource Library (Google'dan): İsteği ve yanıtı işler, ona verdiğiniz verilerden yanıt tablosunu oluşturur ve Google Chart Tools SQL sorgu dilini uygular.
- Python Veri Kaynağı Kitaplığı (Google'dan) - Yanıt söz dizimini oluşturan bir yanıt tablosu oluşturur. İsteğin ayrıştırılması veya Google Grafik Araçları SQL sorgu dilinin uygulanması işlemlerini gerçekleştirmez.
- MC-Google_Visualization (Üçüncü taraf): PDO kullanarak MySQL, SQLite ve PostgreSQL veritabanı motorları için Grafik Araçları veri kaynağı uygulamak üzere kullanabileceğiniz bir PHP sunucu tarafı kitaplığıdır.
- bortosky-google-Visualization (Üçüncü taraf): .NET kullanıcıları için Google Görselleştirme API'sı Veri Tablosu oluşturmaya yönelik bir yardımcı kitaplıktır.
- GV Streamer (Üçüncü taraf): GV Streamer, farklı kaynaklardan gelen verileri Google grafiklerine geçerli sorgu yanıtlarına dönüştürebilen sunucu tarafı bir araçtır. GV Streamer çeşitli dilleri (ör. PHP, Java, .NET) ve çeşitli ham veri kaynaklarını (ör. MySql) destekler.
- TracGViz (Üçüncü taraf) - TracGViz, Trac'in grafik widget'larını kullanabilmesini sağlayan bileşenler sağlayan ücretsiz ve açık kaynak bir araçtır. Ayrıca, Trac tarafından yönetilen verileri Google Grafik Araçları veri kaynağı kaynağı olarak uygular.
- vis-table (Üçüncü taraf) - PHP'de Google Chart Tools Veri Kaynağı kullanan kitaplık. Üç ana bölümden oluşur. Veri tablosu uygulamasının kendisi, sorgu dili ayrıştırıcı ve biçimlendiriciler.
- Google Datasource Implementation in Oracle PL/SQL (Üçüncü taraf): Oracle'ın doğrudan veritabanından Veri Kaynakları'nı yayınlamasına olanak tanıyan Oracle PL/SQL paketi. Böylece herhangi bir Oracle sorgusunu Google Grafik Araçları Veri Kaynağı olarak kullanabilirsiniz (paket, verileri içeren bir JSON dosyası döndürür). Google Sorgu Dili için neredeyse tam destek sunar.