====Frame Looping / Splitting====
There are times when you might want to capture details about //multiple// events that occur in a single day. For example, you might want to capture some key analytics all of the individual batches based on batch number.
If you have built up a table of //time frames// (records that contain a 'StartTime' and 'EndTime' attribute, which you can get using layers such as [[get_days|get_days]], [[get_events|get_events]], or [[timeframes|timeframes]]), certain layers will then **loop over those time frames**.
When one layer loops, **all of it's children** will also loop as well.
[[steplist|Layers]] that will loop over time frames include...
[[get_query|get_query]],
[[get_events|get_events]],
[[get_api|get_api]],
[[lookup|lookup]],
[[lookup_event|lookup_event]]
===Example===
//Step 1//
For example, lets start by making a query that gets our Batch Number across the day with the [[get_query|get_query]] function.
[
{ "type": "get_query", "points": ["Production Line.Batch Number"] }
]
//Step 2//
Next, take that batch number and break our day into individual time-frames for each value.
[
{ "type": "get_query", "points": ["Production Line.Batch Number"] },
{ "type": "timeframe", "split": ["Production Line.Batch Number"] }
]
//Step 3//
Finally, we want to query and capture the average amount of power consumed across that batch with a **query** and a **flatten** operation.
[
{ "type": "get_query", "points": ["Production Line.Batch Number"] },
{ "type": "timeframe", "split": "Production Line.Batch Number" },
{ "type": "get_query", "points": ["Main Power Incomer.Power"] },
{ "type": "flatten", "method": "avg" }
]
Layers 3 & 4 of this configuration will **run many times** - once for each batch. Each one of the time frames found by the //timeframe// step (ie. each individual batch) will have their own power query, and each of those will be individually flattened to find the average and captured.