BigQuery - counting number of events within a sliding time frame -


i count number of events within sliding time frame.

for example, know how many bids in last 1000 seconds google stock (goog).

i'm trying following query:

select    symbol,   start_date,   start_time,   bid_price,   count(if(max(start_time)-start_time<1000,1,null)) on (partition symbol order start_time asc) cnt [bigquery-samples:nasdaq_stock_quotes.quotes]   symbol = 'goog' 

the logic follow: partition window (by symbol) ordered bid time (leaving alone bid date sake of simplicity). each window (defined row @ "head" of window) count number of rows have start_time less 1000 seconds "head" row time.

i'm trying use max(start_time) top row in window. doesn't seem work , error:

error: max analytic function , must accompanied on clause. 

is possible have 2 analytic functions in 1 column (both count , max in case)? there different solution problem presented?

try using range function.

select    symbol,    start_date,    start_time,    bid_price,    count(market_center) on (partition symbol order start_time range 1000 preceding) cnt   [bigquery-samples:nasdaq_stock_quotes.quotes]    symbol = 'goog'   order 2, 3   

i used market_center counter, additional fields can used well.

note: range function not documented in bigquery query reference, it's standard sql function appears work in case


Comments

Popular posts from this blog

java - Oracle EBS .ClassNotFoundException: oracle.apps.fnd.formsClient.FormsLauncher.class ERROR -

c# - how to use buttonedit in devexpress gridcontrol -

nvd3.js - angularjs-nvd3-directives setting color in legend as well as in chart elements -