Query Seconds
Query Seconds represent computational time against Flipside's data warehouse, canonically referred to as a DataSource. Every QueryRun has the following life cycle.
.png?alt=media&token=c85c7eb7-14b2-4967-abf3-8705cabfe422)
A query run that is in the state
QUERY_STATE_READY
has been queued for execution. Once it begins execution it transitions to QUERY_STATE_RUNNING
. From here it can transition to a number of states. If the query executes against the data source successfully it will transition to QUERY_STATE_STREAMING_RESULTS
and begin downloading the query results for you to export. If the query failed for any reason (syntax error, warehouse issue, etc.) the query will transition to a state of
QUERY_STATE_FAILED
. If the user decides to explicitly cancel the query the query run will be terminated and its state will transition to QUERY_STATE_CANCELED
. Finally, if the QueryRun finishes downloading its results from the data source it will transition to QUERY_STATE_SUCCESS
.Given the above life-cycle for a QueryRun, let's walk thru a real example to determine how you might be billed for a query. Here is a query we're going to execute to find the address associated with an ENS domain.
SELECT
origin_from_address
FROM ethereum.core.fact_event_logs
WHERE
contract_address = lower('0x283af0b28c62c092c9727f1ee09c02ca627eb7f5')
AND event_inputs:name = lower('{ens_domain}')
AND event_name = 'NameRegistered'
AND block_timestamp >= GETDATE() - interval'4 year'
This query will produce four different time stamps:
- 1.TotalElapsedSeconds - the time difference between a terminal state (
QUERY_STATE_SUCCESS
,QUERY_STATE_FAILED
orQUERY_STATE_CANCELED
), andQUERY_STATE_READY
. - 2.StreamingSeconds - the time difference between
QUERY_STATE_SUCCESS
andQUERY_STATE_STREAMING_RESULTS
- 3.ExecutionSeconds - the time difference between
QUERY_STATE_STREAMING_RESULTS
andQUERY_STATE_RUNNING
- 4.QueuedSeconds - the time difference between
QUERY_STATE_READY
andQUERY_STATE_RUNNING
You are only debited/billed for ExecutionSeconds (#3) for a successfully run query. If your query fails or was canceled you are not billed for the ExecutionSeconds.
Let's assume this Query has never been executed, meaning no results exist, and as a result, a billable QueryRun is created.
This QueryRun executes successfully for a total of 18 seconds, here is the breakdown:
Breakdown | Seconds |
---|---|
StreamingSeconds | 4 |
ExecutionSeconds | 12 |
QueuedSeconds | 1 |
Since you are only billed for ExecutionSeconds you would be debited for 12 seconds. At a rate of $0.02 per query second, you would be billed $0.24 (12 Execution Query Seconds * $0.02/query second).
In the next section will discuss controlling query execution (and costs) by using the parameter
maxAgeMinutes
.Last modified 8d ago