2013-03-18 42 views
1

使用Google可視化API,是否有一種簡單的方法來查看DataView是否爲空?簡單的方法來查看DataView是否爲空?

https://developers.google.com/chart/interactive/docs/reference#DataView

我可以看到也許使用dataView.getValue(0,1)等,以檢查空值,但它也包含列標題。

我猜這是棘手的,因爲dataview可能有很多不同的格式,但是有沒有一個很好的通用方式來檢查空的數據視圖?我正在使用餅圖的數據視圖。

回答

1

如果我沒記錯的話,這可以輕鬆完成這樣

var predata = response.getDataTable(); 
var vals = new Array(); 
var rownum = predata.getNumberOfRows(); 
// Make sure our data isn't empty. 
if (null==predata) // yoda was here 
return; 

返回由數據源返回的數據表。如果 查詢執行失敗並且沒有數據返回,則返回null。

+0

感謝Najzero,它可能只是因爲我的數據表中仍然包含數據,但它是空的。這可能只是我的數據構造奇怪。我使用記錄集生成我的數據服務器端,因此如果行沒有數據,則插入null。也許我的情況是一個邊緣情況,所以爲什麼我發現它很難使用API​​。 – 2013-03-18 12:43:57

1

從閱讀文檔看起來好像你正在尋找dataView.getNumberOfRows()。但是,在調用之前,您需要獲取空值的過濾行,然後隱藏它們。這裏是an example使用谷歌代碼遊樂場,我檢查一列爲空,然後隱藏該行,如果它爲空。取代谷歌代碼默認的JavaScript對於什麼是低於例如:

function drawVisualization() { 
    var dataTable = google.visualization.arrayToDataTable([ 
    ['Name', 'Age', 'Instrument', 'Color'], 
    [null, null,  null, null], 
    ['Paul', 52,  'Sitar',  'Red'], 
    ['George', 16,  'Guitar', 'Green'], 
    ['Ringo', 72,  'Drums',  'White'] 
    ]); 

    var table = new google.visualization.Table(document.getElementById('table')); 
    table.draw(dataTable, null); 

    var dataView = new google.visualization.DataView(dataTable); 

    // Get rows where the 2nd column contains null 
    var filteredRows = dataView.getFilteredRows([{column: 1, value:null}]); 
    console.log(filteredRows); 

    dataView.setColumns([0, 1]); 

    // Hide the filtered rows returned 
    dataView.hideRows(filteredRows); 

    // Check the number of rows that now exist 
    console.log(dataView.getNumberOfRows()); 

    var chart = new google.visualization.ColumnChart(document.getElementById('chart')); 
    chart.draw(dataView, {width: 400, height: 200}); 
} 
+0

謝謝雅各布,我已經試過了,無濟於事,因爲即使行是空的,它仍然會返回行數。這可能就是我構建可數據化json服務器端的方式。 – 2013-03-18 12:43:02

+0

@Alex Key我已經用可能適用於您的示例更新了我的答案。我想你需要先使用getFilteredRows來檢查null,然後隱藏空行。 – 2013-03-18 14:03:49

+0

有趣的方法感謝雅各布。 – 2013-03-18 14:36:56

0

這似乎不太對勁......

也許我應該在0服務器端客戶端之前更換空連看到數據....

我使出:

if (dataView.getValue(0, 1) === null || dataView.getValue(1, 1) === null || dataView.getValue(2, 1)) === null) 

凡我數據視圖strucuture是:

 
Column Title 1 | Data 
Column Title 2 | Data 
Column Title 3 | Data 
+1

'null'通常表示'沒有數據',而0(零)是一個有效的數值(在大多數情況下是有意義的),因此在普通情況下用0替換null不是一個可接受的選項。 – AntonK 2017-10-24 11:47:17

1

getDistinctValues可能會幫助你。當適用於沿Y軸可視化的列時,它適用於線圖。

+0

謝謝,我已經+1了你的答案,但必須承認我的問題來自2013年的前世,所以無法測試出來。但是,謝謝你的幫助。我會讓主持人將它標記爲答案,如果它證明對他人有用的話! – 2017-10-24 15:55:32

相關問題