Hi Shad, You raise a good point, that there is no way to clear the internal cache that is built for a DataView's calculated columns. We should provide a way, however, so you can expect to see a method call for doing this in a not-too-distant future release. But defining a new DataView would not be all that different, actually, in terms of performance. The ideal would be for us to determine only what needs to be updated based on changes to the underlying DataTable, but that can get rather complex.
On Fri, Mar 20, 2015 at 12:03 PM, Shad Torgerson <[email protected]> wrote: > In the DataView documentation, it states that calculated columns are done > on the fly, but it appears that they are only calculated upon the initial > creation. So if I update the underlying DataTable, the DataView calculated > column is not updating. Is there a way to force recalculation or do I have > to create a new DataView on each update? > > On Monday, September 16, 2013 at 9:18:50 AM UTC-5, asgallant wrote: >> >> Forgot link to DataView documentation: https://developers.google.com/ >> chart/interactive/docs/reference#DataView >> >> On Monday, September 16, 2013 10:13:49 AM UTC-4, asgallant wrote: >>> >>> The DataView object has the built-in capability to calculate new columns >>> based on data in the existing columns: >>> >>> // data is the DataTable object to base the view off of >>> var view = new google.visualization.DataView(data); >>> // the #setColumns method takes an array of column indices and objects >>> describing calculated columns, eg: >>> // use the first, second, and third columns in the DataTable, plus a >>> calculated column that shows the average of the second and third: >>> view.setColumns([0, 1, 2, { >>> type: 'number', >>> label: 'average', >>> calc: function (dt, row) { >>> // the function for a calculated column takes two arguments: the >>> DataTable and the row index >>> // use the row index to pull data from the appropriate columns >>> from the DataTable to generate your returned data >>> // eg, return the average of the second and third columns: >>> return (dt.getValue(row, 1) + dt.getValue(row, 2)) / 2; >>> } >>> }]); >>> >>> You then use the DataView in place of a DataTable when you want to draw >>> your visualization. >>> >>> On Monday, September 16, 2013 2:04:33 AM UTC-4, ggm wrote: >>>> >>>> Is there a preferred idiom to do the legal javascript equivalent of: >>>> >>>> map(lambda: x,a,b,c, myfunction(): row[x].col[c] = >>>> my_function(row[x].col[a], row[x].col[b]) for x in range(0,len(row))) >>>> >>>> so we can eg construct on-the-fly smoothed state, differences, % &c &c >>>> from data previously loaded via json? >>>> >>>> I can trivially code it[*]. I just wondered if bitter experience has >>>> led to a safe, sensible way to do it. >>>> >>>> [*] its going to run like a dog, and probably be hugely unsafe, and >>>> have to deal with null args and a whole heap of stuff which smarter people >>>> could do better, But I would have thought we'd all wind up needing to >>>> construct data columns on-the-fly which are a function of other columns we >>>> have in-hand. >>>> >>> -- > You received this message because you are subscribed to the Google Groups > "Google Visualization API" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to > [email protected]. > Visit this group at > http://groups.google.com/group/google-visualization-api. > For more options, visit https://groups.google.com/d/optout. > -- Daniel LaLiberte <https://plus.google.com/100631381223468223275?prsrc=2> - 978-394-1058 [email protected] <[email protected]> 5CC, Cambridge MA [email protected] <[email protected]> 9 Juniper Ridge Road, Acton MA -- You received this message because you are subscribed to the Google Groups "Google Visualization API" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/google-visualization-api. For more options, visit https://groups.google.com/d/optout.
