forked from shotgunsoftware/python-api
-
Notifications
You must be signed in to change notification settings - Fork 0
[beta] API summary method
kporangehat edited this page Apr 15, 2011
·
4 revisions
dict summarize(string entity_type, list filters, list summary_fields, string filter_operator, list grouping)
Summarize and optionally group entities based on the given filter and grouping values
-
stringentity_type (required)
The entity type to summarize on (in CamelCase format). Example: TimeLog. -
listfilters (required)
An array of array conditions used to filter the summarize query. You can find the [reference for filter values here][filter syntax].- Each condition should be in the format [ column_name, operator, value1(, value2) ] defined as the following:
- column_name (
string): The system name of the column (not the display name) Examples: “code”, “sg_asset_type”. - operator (
string): the operator as it appears in the query builder. Examples: “is”, “is_not”, "between", “in_last”. - value (mixed): The value to compare the column on.
- value2 (optional for some operators) (
int): The second value for column comparison. This value is specified for operators such as ”between”.
-
listsummary_fields (required) A list of dictionaries defining the field names to summarize, the summary type, and if required, the summary value-
stringfield: The internal field name to summarize -
stringtype: The type of summary to perform on the field -
stringvalue: If the summary type requires an assocated value, provide this here, otherwise it is ignored.
-
-
stringfilter_operator (default="all")
Controls how the filters are matched. There are only two valid options: all and any. You cannot currently combine the two options in the same query. -
listgrouping (default=None)
A list of dictionaries defining how to group the returned summaries. Each grouping dict requires the three key values below. You may specify multiple groupings which are performed in the order specified. Summaries will be calculated for each individual group level as well as the parent group and is meant to mimic the same behavior given in the Shotgun UI when you have column summaries turned on.-
stringfield: The internal field name to group by -
stringdirection (default="asc"): Sorting direction for the returned groups. Valid options are "asc" and "desc". -
stringtype: Type of grouping to perform on this field.
-
-
dictobject containing a 'groups' and 'summaries' key. If a grouping value was provided, the results will be nested in the same pattern within the value of the 'groups' key.-
listgroups: Dictionary of group values and their summary values-
stringgroup_name: Display name of the group -
stringgroup_value: Internal value of the group. This is often the same as the group_name but not always. For example, in cases where the field you are grouping on is an entity field, the group_value will contain the Shotgun entity hash where the group_name will simply contain the name of the entity. The group_value can be easily used in subsequent Shotgun queries. -
dictsummaries: key value pairs of each summary field name and its corresponding summary value -
listgroups: Dictionary of group values and their summary values
-
-
dictsummaries: key value pairs of each summary field name and its corresponding summary value
-
# ----------------------------------------------
# Summarize all Time Logs for Shot 100_0010
# return the total duration and number of Time Logs
# group the results by Pipeline Step
# (remember duration values are returned as minutes)
# ----------------------------------------------
filters = [
['project', 'is', {'type':'Project', 'id':65}],
['entity.Task.entity', 'is', {'type':'Shot', 'id':860}],
]
summaries = [
{ "field": "duration", "type": "sum"},
{ "field": "id", "type": "count"},
]
grouping = [ { "field": "entity.Task.step", "direction": "asc", "type": "exact" } ]
result = sg.summarize(
entity_type="TimeLog",
filters=filters,
summary_fields=summaries,
filter_operator="all",
grouping=grouping
)
example output:
{'groups': [{'group_name': 'Anm',
'group_value': {'id': 5,
'name': 'Anm',
'type': 'Step',
'valid': 'valid'},
'summaries': {'duration': 1800, 'id': 1}},
{'group_name': 'Comp',
'group_value': {'id': 8,
'name': 'Comp',
'type': 'Step',
'valid': 'valid'},
'summaries': {'duration': 840, 'id': 2}},
{'group_name': 'FX',
'group_value': {'id': 6,
'name': 'FX',
'type': 'Step',
'valid': 'valid'},
'summaries': {'duration': 2880, 'id': 4}},
{'group_name': 'Layout',
'group_value': {'id': 13,
'name': 'Layout',
'type': 'Step',
'valid': 'valid'},
'summaries': {'duration': 1980, 'id': 3}},
{'group_name': 'Light',
'group_value': {'id': 7,
'name': 'Light',
'type': 'Step',
'valid': 'valid'},
'summaries': {'duration': 3480, 'id': 5}}],
'summaries': {'duration': 10980, 'id': 15}}