nodes: 0, module; 1, function_definition; 2, function_name:select_unique; 3, parameters; 4, block; 5, identifier:self; 6, identifier:event_collection; 7, identifier:target_property; 8, default_parameter; 9, default_parameter; 10, default_parameter; 11, default_parameter; 12, default_parameter; 13, default_parameter; 14, default_parameter; 15, default_parameter; 16, expression_statement; 17, expression_statement; 18, return_statement; 19, identifier:timeframe; 20, None; 21, identifier:timezone; 22, None; 23, identifier:interval; 24, None; 25, identifier:filters; 26, None; 27, identifier:group_by; 28, None; 29, identifier:order_by; 30, None; 31, identifier:max_age; 32, None; 33, identifier:limit; 34, None; 35, comment:""" Performs a select unique query
  
          Returns an array of the unique values of a target property for events that meet the given criteria.
  
          :param event_collection: string, the name of the collection to query
          :param target_property: string, the name of the event property you would like use
          :param timeframe: string or dict, the timeframe in which the events
          happened example: "previous_7_days"
          :param timezone: int, the timezone you'd like to use for the timeframe
          and interval in seconds
          :param interval: string, the time interval used for measuring data over
          time example: "daily"
          :param filters: array of dict, contains the filters you'd like to apply to the data
          example: [{"property_name":"device", "operator":"eq", "property_value":"iPhone"}]
          :param group_by: string or array of strings, the name(s) of the properties you would
          like to group your results by.  example: "customer.id" or ["browser","operating_system"]
          :param order_by: dictionary or list of dictionary objects containing the property_name(s)
          to order by and the desired direction(s) of sorting.
          Example: {"property_name":"result", "direction":keen.direction.DESCENDING}
          May not be used without a group_by specified.
          :param limit: positive integer limiting the displayed results of a query using order_by
          :param max_age: an integer, greater than 30 seconds, the maximum 'staleness' you're
          willing to trade for increased query performance, in seconds
  
          """; 36, assignment; 37, call; 38, identifier:params; 39, call; 40, attribute; 41, argument_list; 42, attribute; 43, argument_list; 44, attribute; 45, identifier:query; 46, string:"select_unique"; 47, identifier:params; 48, identifier:self; 49, identifier:get_params; 50, keyword_argument; 51, keyword_argument; 52, keyword_argument; 53, keyword_argument; 54, keyword_argument; 55, keyword_argument; 56, keyword_argument; 57, keyword_argument; 58, keyword_argument; 59, keyword_argument; 60, identifier:self; 61, identifier:api; 62, identifier:event_collection; 63, identifier:event_collection; 64, identifier:timeframe; 65, identifier:timeframe; 66, identifier:timezone; 67, identifier:timezone; 68, identifier:interval; 69, identifier:interval; 70, identifier:filters; 71, identifier:filters; 72, identifier:group_by; 73, identifier:group_by; 74, identifier:order_by; 75, identifier:order_by; 76, identifier:target_property; 77, identifier:target_property; 78, identifier:max_age; 79, identifier:max_age; 80, identifier:limit; 81, identifier:limit
code: def select_unique(self, event_collection, target_property, timeframe=None, timezone=None, interval=None,
                        filters=None, group_by=None, order_by=None, max_age=None, limit=None):
          """ Performs a select unique query
  
          Returns an array of the unique values of a target property for events that meet the given criteria.
  
          :param event_collection: string, the name of the collection to query
          :param target_property: string, the name of the event property you would like use
          :param timeframe: string or dict, the timeframe in which the events
          happened example: "previous_7_days"
          :param timezone: int, the timezone you'd like to use for the timeframe
          and interval in seconds
          :param interval: string, the time interval used for measuring data over
          time example: "daily"
          :param filters: array of dict, contains the filters you'd like to apply to the data
          example: [{"property_name":"device", "operator":"eq", "property_value":"iPhone"}]
          :param group_by: string or array of strings, the name(s) of the properties you would
          like to group your results by.  example: "customer.id" or ["browser","operating_system"]
          :param order_by: dictionary or list of dictionary objects containing the property_name(s)
          to order by and the desired direction(s) of sorting.
          Example: {"property_name":"result", "direction":keen.direction.DESCENDING}
          May not be used without a group_by specified.
          :param limit: positive integer limiting the displayed results of a query using order_by
          :param max_age: an integer, greater than 30 seconds, the maximum 'staleness' you're
          willing to trade for increased query performance, in seconds
  
          """
          params = self.get_params(event_collection=event_collection, timeframe=timeframe, timezone=timezone,
                                   interval=interval, filters=filters, group_by=group_by, order_by=order_by,
                                   target_property=target_property, max_age=max_age, limit=limit)
          return self.api.query("select_unique", params)