xref: /aosp_15_r20/external/perfetto/docs/analysis/pivot-tables.md (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard Worker# Pivot Tables
2*6dbdd20aSAndroid Build Coastguard Worker
3*6dbdd20aSAndroid Build Coastguard WorkerPivot Tables are a way to summarize and aggregate information about selected
4*6dbdd20aSAndroid Build Coastguard Workerslices in a configurable way. It is available in canary and autopush channels by
5*6dbdd20aSAndroid Build Coastguard Workerdefault, and can be enabled in stable by toggling a corresponding flag
6*6dbdd20aSAndroid Build Coastguard Worker(Support > Flags > Pivot tables V2).
7*6dbdd20aSAndroid Build Coastguard Worker
8*6dbdd20aSAndroid Build Coastguard WorkerTo create a pivot table, you need to select a timeline area that contains
9*6dbdd20aSAndroid Build Coastguard Workerslices. The table will then show an aggregation of the selected slices.
10*6dbdd20aSAndroid Build Coastguard Worker
11*6dbdd20aSAndroid Build Coastguard Worker## Conceptual model
12*6dbdd20aSAndroid Build Coastguard Worker
13*6dbdd20aSAndroid Build Coastguard WorkerPivot tables have two types of columns: pivots and aggregations. Conceptually,
14*6dbdd20aSAndroid Build Coastguard Workerthe UI requests all the data from columns of both types and then computes
15*6dbdd20aSAndroid Build Coastguard Workeraggregate values for aggregation columns for every distinct tuple of pivot
16*6dbdd20aSAndroid Build Coastguard Workercolumn values.
17*6dbdd20aSAndroid Build Coastguard Worker
18*6dbdd20aSAndroid Build Coastguard WorkerPivots are hierarchical, and the aggregate values are also computed for all the
19*6dbdd20aSAndroid Build Coastguard Workerprefixes of pivot column values. For example, if you select process name,
20*6dbdd20aSAndroid Build Coastguard Workercategory, and event name (in that order) as pivots and have duration sum as the
21*6dbdd20aSAndroid Build Coastguard Workeronly aggregation columns, the following aggregate values will be computed:
22*6dbdd20aSAndroid Build Coastguard Worker
23*6dbdd20aSAndroid Build Coastguard Worker*   Total duration for each process
24*6dbdd20aSAndroid Build Coastguard Worker*   Total duration for each process and category
25*6dbdd20aSAndroid Build Coastguard Worker*   Total duration for each process, category, and event name
26*6dbdd20aSAndroid Build Coastguard Worker
27*6dbdd20aSAndroid Build Coastguard WorkerThe table rows are appropriately nested in the UI, from more general to more
28*6dbdd20aSAndroid Build Coastguard Workerspecific. Portions of the table can be collapsed and expanded.
29*6dbdd20aSAndroid Build Coastguard Worker
30*6dbdd20aSAndroid Build Coastguard Worker## Working with pivot table
31*6dbdd20aSAndroid Build Coastguard Worker
32*6dbdd20aSAndroid Build Coastguard WorkerPivot tables can be configured using dropdown menus in the table header cells.
33*6dbdd20aSAndroid Build Coastguard WorkerThese can be used to:
34*6dbdd20aSAndroid Build Coastguard Worker
35*6dbdd20aSAndroid Build Coastguard Worker*   Add and remove pivots
36*6dbdd20aSAndroid Build Coastguard Worker*   Add and remove aggregations
37*6dbdd20aSAndroid Build Coastguard Worker*   Change aggregation functions
38*6dbdd20aSAndroid Build Coastguard Worker*   Sort by aggregation columns
39