Bu sayfada, Sorgu sınıfı kullanılarak grafiklere erişilmesi 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ıyla kendi veri kaynağını oluşturacak geliştiricilerin kullanımına yöneliktir. Bunu veya başka bir yardımcı kitaplığı kullanıyorsanız önce kitaplığınızın dokümanlarını okuyun.
Bu sayfa, istemci görselleştirme ile veri kaynağı arasındaki iletişim için kullanılan kablo protokolünü anlamak isteyen okuyuculara da yöneliktir.
Görselleştirme oluşturuyorsanız veya kullanıyorsanız bu sayfayı okumanız gerekmez.
Bu belgeyi okumak için temel JSON ve HTTP isteği söz dizimini anlamanız gerekir. Grafiklerin kullanıcı açısından nasıl çalıştığını da anlamanız gerekir.
Genel bakış
Kendi grafikleriniz veya diğer grafikler için veri kaynağı sağlayıcısı olmak amacıyla Chart Tools Datasource protokolünü uygulayabilirsiniz. Bir Grafik Araçları Veri Kaynağı, Veri Kaynağı URL'si adı verilen ve bir grafiğin HTTP GET istekleri gönderebileceği bir URL'yi açığa çıkarır. Buna karşılık veri kaynağı, grafiğin sayfada 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ı ağ protokolü olarak bilinir.
Veri kaynağı tarafından sunulan veriler, dosya veya veritabanı gibi çeşitli kaynaklardan çıkarılabilir. Tek kısıtlama, türetilmiş sütunların bulunduğu verileri iki boyutlu bir tablo olarak biçimlendirebilmenizdir.
Chart Tools Veri Kaynağı olarak bir isteği belirli bir biçimde ayrıştırıp belirli bir biçimde yanıt döndürmeniz gerekir. Bu sayfaya iki genel şekilde ulaşabilirsiniz:
-
İsteği ve yanıtı ele almak ve DataTable'ı döndürülecek şekilde oluşturmak için aşağıdaki yardımcı kitaplıklardan birini kullanın. Bu kitaplıklardan birini kullanıyorsanız yalnızca verilerinizin bir tablo biçiminde kitaplıkta kullanılabilir olması için gereken kodu yazmanız gerekir.
- Java Veri Kaynağı Kitaplığı: İsteği ve yanıtı ele alır, verdiğiniz verilerden yanıt tablosu oluşturur ve Google Chart Tools SQL sorgu dilini uygular.
-
Python Datasource Kitaplığı -
Yanıt tablosu oluşturan yanıt söz dizimi oluşturulur. İsteği ayrıştırma veya Google Grafik Araçları SQL sorgu dilini uygulama işlemlerini yapmaz.
VEYA
- İsteği işleyerek, 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'yi açığa çıkarır.
- İstemci döndürülen veriler için hangi biçimin kullanılacağını, isteğe bağlı bir sorgu dizesini ve isteğe bağlı özel parametreleri açıklayan parametrelerle bir HTTP GET isteğinde bulunur.
- Veri Kaynağı, İstek Biçimi bölümünde açıklandığı gibi isteği 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ülasyonlarını 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 bu yanıtı Yanıt Biçimi'nde açıklandığı gibi istemciye geri gönderir
Not: İstekler ve yanıtlar (responseHandler
ve "ok" gibi) için bu belgede listelenen tüm parametreler ve dize sabit değerleri küçük harf olup büyük/küçük harfe duyarlıdır.
Minimum Gereksinimler
Grafik Araçları Veri Kaynağı olarak yayınlanması için gereken minimum gereksinimler şunlardır:
- Veri kaynağı, HTTP GET isteklerini kabul etmeli ve müşterileriniz tarafından kullanılabilmelidir.
- Protokol değişebilir ve bir sürüm şemasını destekleyebilir (geçerli sürüm 0.6'dır). Bu nedenle, veri kaynağınız mevcut sürümün yanı sıra önceki sürümleri kullanan istekleri de desteklemelidir. En yeni sürüme geçiş yapan istemcilerin bozulmasını önlemek için yeni sürümleri yayınlanır yayınlanmaz desteklemeye çalışmalısınız.
- İsteğin bir parçası olarak bilinmeyen özellikler gönderilirse bu 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 sunabilir, ancak istek dizesinin tamamını körü körüne kabul edip kullanmayın. Kötü amaçlı saldırılara karşı kendinizi korumak için yalnızca beklediğiniz özellikleri ayrıştırıp kullanın.
- İstemci grafiklerini kendiniz kodlamıyorsanız veri kaynağı gereksinimlerinizi dikkatlice belgeleyin. Buna aşağıdaki bilgilerin belgelenmesi de dahildir:
- Kabul ettiğiniz tüm özel parametreler,
- Google Görselleştirme API'sı 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ır ve sütunların neyi temsil ettiği ve tüm etiketler).
- 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şı korunmanıza yardımcı olmak için MD5, karma oluşturma ve parametrelerinizdeki diğer güvenlik mekanizmalarını makul ölçüde destekleyebilir ve müşterilerin gereksinimlerinizden haberdar olmasını ve bunlara yanıt vermesini bekleyebilirsiniz. Ancak, grafikleri kendiniz kodlamazsanız tüm gereksinimlerinizi iyice belgelediğinizden emin olun. Aşağıdaki Güvenlikle İlgili Dikkat Edilmesi Gerekenler bölümünü inceleyin.
- Tüm istek ve yanıt dizeleri UTF-8 olarak kodlanmalıdır.
- En önemli yanıt biçimi JSON'dır. Çoğu grafik tarafından kullanılan biçim olduğundan, önce JSON'i uyguladığınızdan emin olun. Ardından başka yanıt türleri ekleyin.
- Görselleştirme API'sı sorgu dilini desteklemeniz zorunlu değildir ancak veri kaynağınızı müşteriler için daha kullanışlı hale getirir.
- Tüm grafik türlerinden gelen istekleri desteklemeniz gerekmez 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. Siteniz için basit şifre erişiminden güvenli çerez kimlik doğrulamasına kadar çeşitli güvenlik şemalarını kullanabilirsiniz.
XSSI (siteler arası komut dosyası dahil) saldırıları, grafikler açısından risk teşkil eder. Kullanıcı, kötü amaçlı bir komut dosyası içeren sayfaya gidebilir ve ardından geçerli kullanıcının kimlik bilgilerini kullanarak veri kaynağı URL'lerine sorgu yapmaya başlayabilir. Kullanıcı bir siteden çıkış yapmadıysa komut dosyasının kimliği geçerli kullanıcı olarak doğrulanır ve söz konusu sitede izinlere sahip olur. Kötü amaçlı komut dosyası, <script src> etiketini kullanarak JSONP'ye benzer şekilde veri kaynağını dahil edebilir.
Ek bir güvenlik düzeyi olarak, istekleri veri kaynağınızla aynı alandan gelen isteklerle kısıtlamayı düşünebilirsiniz. Bu durumda veri kaynağınızın görünürlüğü önemli ölçüde kısıtlanır ancak alanınız dışında erişilmemesi gereken son derece hassas verileriniz varsa bu özelliği değerlendirmelisiniz. Herhangi bir alandan gelen sorguları kabul edecek kısıtlanmamış veri kaynağı yerine yalnızca aynı alandan gelen isteklere izin veren veri kaynağına kısıtlanmış veri kaynağı adı verilir. Kısıtlanmış veri kaynağını nasıl uygulayacağınıza dair bazı ayrıntılar aşağıda verilmiştir:
Bir isteğin gerçekten alanınız dışından geldiğinden emin olmak için, (harici bir alandan (veya XSRF saldırısı altındaki alanın içinden bir tarayıcıdan) gelmediğinden emin olmak için):
- İstekte "X-DataSource-Auth" üstbilgisinin olduğunu doğrulayın. Bu başlık, Google Görselleştirme API'sı tarafından tanımlanır; bu başlığın içeriğini incelemeniz gerekmez, yalnızca orada olduğunu doğrulayın. Google Grafik Araçları Veri Kaynağı kitaplığını kullanıyorsanız kitaplık bu işleme sizin için hazırlanabilir.
- İstemcinin kimliğini doğrulamak için çerez kimlik doğrulamasını kullanın. Web alanları arası isteğe özel üstbilgi eklemenin, kimlik doğrulama çerezlerini kullanmaya devam etmenin bilinen bir yolu yoktur.
- Bir <script src> etiketiyle birlikte sunulan JavaScript'in yürütülmemesini sağlayın. Bunu yapmak için JSON yanıtınızın önüne )]} yazın ve ardından yeni satır ekleyin. İstemcinizde öneki öne çıkarın. XmlHttpRequest için bu, yalnızca isteğin aynı alandan kaynaklanması durumunda mümkündür.
İstek Biçimi
Bir istemci özel öğeler, isteğe bağlı sorgu dizesi, imza ve diğer öğeleri de içeren çeşitli parametreleri içeren bir HTTP GET isteği gönderir. Yalnızca bu bölümde açıklanan parametreleri ayrıştırmaktan sorumlusunuz ve kötü amaçlı saldırılardan kaçınmak için başkalarını yapmamaya dikkat edin.
İsteğe bağlı parametreler için varsayılan değerlerin (hem standart hem de özel) olduğundan emin olun ve tüm varsayılanlarınızı site dokümanlarınıza ekleyin.
Aşağıda birkaç örnek istek verilmiştir (Ö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 listesi aşağıda verilmiştir. Hem parametre adlarının (ör. "sürüm") hem de sabit dize değerlerinin ("ok", "warning" ve "not_modified gibi") büyük/küçük harfe duyarlı olduğunu unutmayın. Tabloda, parametrenin gönderilmesi gerekip gerekmediği ve gönderildiyse bunu yapmanız gerekip gerekmediği de açıklanmaktadır.
Parametre | İstekte zorunlu mu? |
Veri Kaynağı Kullanmalı mı? |
Açıklama |
---|---|---|---|
tq | Hayır |
Hayır |
Döndürülen verilerin nasıl filtreleneceğini, sıralanacağını veya değiştirileceğini belirten, Google Görselleştirme API'sı sorgu dilinde yazılmış 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 grubudur. Çiftler noktalı virgülle ayrılır. Görselleştirme protokolü tarafından tanımlanan standart parametrelerin listesi aşağıda verilmiştir:
Ö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 türünü belirten out
parametresine bağlıdır. Her bir istek türüne nasıl yanıt verileceğini öğrenmek için aşağıdaki bölümlere bakın:
- JSON: Doldurmak için doğrudan
DataTable
oluşturucuya iletilebilen JavaScript nesnesindeki verileri içeren bir JSON yanıtı döndürür. Bu, açık farkla en yaygın istek türüdür ve doğru şekilde uygulanması en önemlidir. - CSV - Tarayıcı tarafından işlenecek düz virgülle ayrılmış bir değer listesi döndürür.
- TSV - Tarayıcı tarafından işlenecek sekmeyle ayrılmış değer listesi döndürür.
- HTML - Tarayıcı tarafından oluşturulacak HTML tablosunu 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 "X-DataSource-Auth" başlığı içeriyorsa varsayılan yanıt biçimi JSON, aksi takdirde JSONP'dir. 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 sizin için doğru kodu yerleştirirler. Yanıtları manuel olarak ayrıştırıyorsanız aşağıdaki JSON Değişiklikleri bölümüne bakın.
Aynı alan isteklerini uyguluyorsanı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 sizin için oluşturmak üzere Java veya Python yardımcı kitaplıklarını kullanabilirsiniz.
Bu yanıt biçimi, aşağıdaki tabloda bulunan özellikleri içeren UTF-8 olarak kodlanmış JSON nesnesidir (süreli ayraçla { } sarmalanmış bir nesne). Veriler aşağıdaki tablodaki özellikleri içerir (veriler table
özelliğine atanır). Bu JSON nesnesi, istekten responseHandler
parametresi değerinin içine sarmalanmalıdır. Bu durumda, isteğin responseHandler
değeri "myHandler" ise şöyle bir dize döndürmelisiniz (kısa olması için yalnızca bir özellik gösterilir):
"myHandler({status:ok, ...})"
İstek responseHandler
değeri içermiyorsa varsayılan değer "google.visualization.Query.setResponse" şeklindedir. Bu nedenle, bunun gibi bir dize döndürmelisiniz (kısa olması için yalnızca bir özellik gösterilir):
"google.visualization.Query.setResponse({status:ok, ...})"
Kullanılabilen yanıt nesnesi üyeleri şunlardır:
Özellik | Gerekli mi? |
Açıklama |
---|---|---|
sürüm | Hayır |
Google Görselleştirme bankası protokol sürümü numarasını veren bir dize numarası. Belirtilmezse istemci en son sürümü varsayar. Örnek: |
istek kimliği | Evet* |
Bu istemci için bu isteğin kimliğini belirten bir dize numarası. Bu, istekte bulunduysa aynı değeri döndürün. Daha fazla ayrıntı için istek bölümündeki reqId açıklamasına bakın. * Bu parametre istekte belirtilmemişse yanıtı yanıtta ayarlamanız gerekmez. |
durum | Evet |
Bu işlemin başarısını veya başarısızlığını 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 nesne dizisi.
Örnek: |
errors | status=error için zorunludur |
Her biri bir hatayı açıklayan bir veya daha fazla nesne dizisi. 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 yararlıdır. Dilediğiniz karma algoritmasını seçebilirsiniz. Bu özelliği destekliyorsanız herhangi bir veri döndürülmezse istemci tarafından iletilen değeri, yeni veri döndürülürse yeni bir karma döndürmeniz gerekir. Örnek: |
tablo | Hayır |
Verilerinizle birlikte JavaScript değişmez gösteriminde bir {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 bilgileri döndürür.
Döndürülen kodu kendiniz ayrıştırmıyorsanız bu durum sizin için önemli değildir. Bu durumda JSON dizesini bir JavaScript nesnesine dönüştürmek için JSON.parse() işlevini kullanabilirsiniz. JSON dosyasının API tarafından işlenmesiyle ilgili bir fark, JSON'nin JavaScript Tarih değerlerini desteklememesidir (örneğin, "new Date(2008,1,28,0,31,26)"); API, tarihlerin dize olarak şu biçimde bir geçerli JSON gösterimini destekler: Date(year, month, day[,hour, minute, second[, millisecond]])
JSON yanıtlarını optimize etme
Bir istemci iki istek yaparsa ve veriler istekler arasında değişmediyse verileri yeniden göndermemek mantıklıdır. Bunu yapmak bant genişliğinin boşa harcanmasına neden olur. İstekleri daha verimli hale getirmek için protokol, istemcideki verilerin önbelleğe alınmasını ve veriler son istekten bu yana değişmediyse yanıtta sinyal gönderilmesini destekler. Hesaplama aşağıdaki şekilde yapılır:
- İstemci, veri kaynağına bir istek gönderir.
- Veri kaynağı, hem
DataTable
nesnesinin hem deDataTable
nesnesinin karmasını oluşturur ve her ikisini de yanıtında döndürür. (Karma değeri,tqx.
sig
parametresinde döndürülür.) Google Görselleştirme API'sı istemcisi,DataTable
vesig
değerini önbelleğe alır. - İstemci, önbelleğe alınan
tqx.sig
değeri dahil olmak üzere başka bir veri isteği gönderir. - Veri kaynağı iki şekilde yanıt verebilir:
- Veriler önceki istekten farklı ise veri kaynağı yeni
DataTable
ve yenisig
değer karmasını gönderir. - Veriler önceki istekten değişmediyse veri kaynağı
status=error
,reason=not_modified
,sig=old_sig_value
değerini geri gönderir.
- Veriler önceki istekten farklı ise veri kaynağı yeni
- Her iki durumda da grafiği barındıran sayfa başarılı bir yanıt alır ve
DataTable
öğesiniQueryResponse.getDataTable()
çağrısı yaparak alabilir. Veriler aynıysa tablonun önbelleğe alınan sürümü olacaktır.
Bunun yalnızca Google Görselleştirme API'sında oluşturulan grafiklerden gelen JSON istekleri için çalıştığını unutmayın.
CSV Yanıt Biçimi
İstek out:csv
değerini belirtiyorsa yanıtta meta veri değil, verilerin yalnızca CSV gösterimi bulunur. CSV tablosu genellikle virgülle ayrılmış bir listedir. Burada her veri satırı, UNIX yeni satır karakteriyle (\n) biten virgülle ayrılmış bir değer listesidir. Hücre değerleri her sütun için aynı
türe sahip olmalıdır. İlk satır, sütun etiketleridir. Aşağıda üç satırlık, üç sütunlu tablo örneği verilmiştir:
A, B, C 1.0, "yes", true 2.0, "no", false 3.0, "maybe", true
CSV biçimi bu protokol tarafından belirtilmez; CSV biçiminin belirlenmesinden veri kaynağı sorumludur. Bununla birlikte, ortak biçim, virgülle ayrılmış değer grubudur (ara boşluk bırakmadan) ve her satırın sonunda yeni satır (\n) bulunur. Bir tarayıcı 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ürmek için bir yöntem sunar.
İstek tqx
parametresinin bir outFileName
öğesini içeriyorsa belirtilen dosya adını yanıt başlıklarına eklemeye çalışmalısınız.
google.visualization.Query
nesnesi, bir CSV yanıtı isteğini desteklemez. Bir CSV dosyası için istekte bulunmak isteyen bir müşteri, sayfanıza bir Görselleştirme Araç Çubuğu gadget'ı yerleştirebilir veya isteği oluşturmak için özel kod kullanabilir ya da aşağıdaki istek URL'sinde gösterildiği gibi, tqx
özelliğinin out:csv
özelliğini açık bir şekilde 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
İstek out:tsv-excel
değerini belirtiyorsa yanıtta meta veri bulunmaz. utf-16 kodlu verilerin sekmeyle ayrılmış bir temsili sunulur. İstek tqx
parametresinin bir outFileName
öğesini içeriyorsa belirtilen dosya adını yanıt başlıklarına eklemeye çalışmalısınız.
HTML Yanıt Biçimi
İstek out:html
değerini belirtiyorsa yanıt, verileri içeren bir HTML tablosu tanımlayan bir HTML sayfası olmalıdır. Tarayıcı, sonucunuzu okunabilir bir biçimde doğrudan oluşturabileceğinden bu, kodunuzdaki hata ayıklama için yararlıdır. google.visualization.Query
nesnesini kullanarak bir HTML yanıtı için sorgu gönderemezsiniz.
Özel bir kod kullanarak veya tarayıcınızda aşağıdakine benzer bir URL yazarak bir 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 istekler ve yanıtlar. İsteklerin URL çıkış karaktersiz kodlanmadığını, genellikle tarayıcı veya google.visualization.Query
nesnesi tarafından yapıldığını unutmayın.
Basit istek: Üç sütunlu ve dört satırlı tabloyla 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ürleri içeren üç sütunlu, üç 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 bir sorgu dizesi içeren sorgu: Tek bir sütun için istek, dört satırdan oluşan 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'}]}]}});
Veri 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'}]});
Veri kesimi uyarısı: data_truncated
uyarısı örneği.
İsteğin hâlâ veri döndürdüğüne 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ı yerine 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 Veri Kaynağı Kitaplığı - İsteği ve yanıtı yönetir, verdiğiniz verilerden yanıt tablosunu oluşturur ve Google Grafik Araçları SQL sorgu dilini uygular.
- Python Datasource Library (Google'dan) - Yanıt tablosu oluşturur, yanıt söz dizimi oluşturulur. İsteği ayrıştırma veya Google Chart Tools SQL sorgu dilini uygulama işlemlerini yapmaz.
- MC-Google_Visualization (Üçüncü taraf) - Bu, PDO kullanarak MySQL, SQLite ve PostgreSQL veritabanı motorları için Chart Tools Veri Kaynağı uygulamak amacıyla kullanabileceğiniz bir PHP sunucu tarafı kitaplığıdır.
- bortosky-google-visualization (Üçüncü taraf): Bu, .NET kullanıcıları için Google Görselleştirme API'sı Veri Tablosu oluşturmaya yardımcı olan bir yardımcı kitaplıktır.
- GV Streamer (Üçüncü taraf) - GV Streamer, farklı kaynaklardan gelen verileri geçerli sorgu yanıtlarına Google grafiklerine dönüştürebilen bir sunucu tarafı araçtır. GV Streamer birkaç dili (örneğin, PHP, Java, .NET) ve çeşitli ham veri kaynaklarını (örneğin, MySql) destekler.
- TracGViz (Üçüncü taraf) - TracGViz, bileşenleri sağlayan ücretsiz ve açık kaynaklı bir araçtır. Bu sayede Trac, grafik gadget'larını da kullanabilir ve Trac tarafından yönetilen verileri Google Grafik Araçları Veri Kaynağı kaynağı olarak uygulayabilir.
- vis-table (Üçüncü taraf) - PHP'de bir Google Chart Tools Veri Kaynağı uygulayan kitaplık. Üç ana bölümden oluşur. Veri tablosunun kendisi, sorgu dili ayrıştırıcısı ve biçimlendiriciler.
- Oracle PL/SQL'de Google Veri Kaynağı Uygulaması (Üçüncü taraf) - Oracle'ın, Veri Kaynaklarını doğrudan veritabanından işlemesini sağlayan bir Oracle PL/SQL paketi. Temel olarak herhangi bir Oracle sorgusunu Google Chart Tools Veri Kaynağı olarak kullanabilirsiniz (paket, verilerin olduğu bir JSON dosyası döndürür). Google Sorgu Dili için neredeyse tam destek sunar.