def build_snuba_filter( self, query: str, environment: Optional[Environment], params: Optional[Mapping[str, Any]] = None, ) -> Filter: resolve_func = resolve_column(Dataset(self.dataset.value)) aggregations = [self.aggregate] # This aggregation is added to return the total number of sessions in crash # rate alerts that is used to identify if we are below a general minimum alert threshold count_col = re.search(r"(sessions|users)", self.aggregate) if not count_col: raise UnsupportedQuerySubscription( "Only crash free percentage queries are supported for subscriptions" "over the sessions dataset" ) count_col_matched = count_col.group() aggregations += [f"identity({count_col_matched}) AS {CRASH_RATE_ALERT_SESSION_COUNT_ALIAS}"] functions_acl = ["identity"] snuba_filter = get_filter(query, params=params) snuba_filter.update_with( resolve_field_list( aggregations, snuba_filter, auto_fields=False, functions_acl=functions_acl ) ) snuba_filter = resolve_snuba_aliases(snuba_filter, resolve_func)[0] if environment: snuba_filter.conditions.append(["environment", "=", environment.name]) return snuba_filter
def build_snuba_filter(dataset, query, aggregate, environment, params=None): snuba_filter = get_filter(query, params=params) snuba_filter.update_with(resolve_field_list([aggregate], snuba_filter, auto_fields=False)) snuba_filter = resolve_snuba_aliases(snuba_filter, resolve_column(Dataset.Discover))[0] if environment: snuba_filter.conditions.append(["environment", "=", environment.name]) snuba_filter.conditions = apply_dataset_conditions(dataset, snuba_filter.conditions) return snuba_filter
def resolve_discover_aliases(snuba_filter, function_translations=None): """ Resolve the public schema aliases to the discover dataset. Returns a copy of the input structure, and includes a `translated_columns` key containing the selected fields that need to be renamed in the result set. """ return resolve_snuba_aliases(snuba_filter, resolve_discover_column, function_translations=function_translations)
def build_snuba_filter(dataset, query, aggregate, environment, params=None): resolve_func = (resolve_column(Dataset.Events) if dataset == QueryDatasets.EVENTS else resolve_column( Dataset.Transactions)) query = apply_dataset_query_conditions(dataset, query) snuba_filter = get_filter(query, params=params) snuba_filter.update_with( resolve_field_list([aggregate], snuba_filter, auto_fields=False)) snuba_filter = resolve_snuba_aliases(snuba_filter, resolve_func)[0] if environment: snuba_filter.conditions.append(["environment", "=", environment.name]) return snuba_filter
def build_snuba_filter(dataset, query, aggregate, environment, event_types, params=None): resolve_func = { QueryDatasets.EVENTS: resolve_column(Dataset.Events), QueryDatasets.SESSIONS: resolve_column(Dataset.Sessions), QueryDatasets.TRANSACTIONS: resolve_column(Dataset.Transactions), }[dataset] functions_acl = None aggregations = [aggregate] if dataset == QueryDatasets.SESSIONS: # This aggregation is added to return the total number of sessions in crash # rate alerts that is used to identify if we are below a general minimum alert threshold count_col = re.search(r"(sessions|users)", aggregate) count_col_matched = count_col.group() aggregations += [ f"identity({count_col_matched}) AS {CRASH_RATE_ALERT_SESSION_COUNT_ALIAS}" ] functions_acl = ["identity"] query = apply_dataset_query_conditions(dataset, query, event_types) snuba_filter = get_filter(query, params=params) snuba_filter.update_with( resolve_field_list(aggregations, snuba_filter, auto_fields=False, functions_acl=functions_acl)) snuba_filter = resolve_snuba_aliases(snuba_filter, resolve_func)[0] if snuba_filter.group_ids: snuba_filter.conditions.append( ["group_id", "IN", list(map(int, snuba_filter.group_ids))]) if environment: snuba_filter.conditions.append(["environment", "=", environment.name]) return snuba_filter
def build_snuba_filter( self, query: str, environment: Optional[Environment], params: Optional[Mapping[str, Any]] = None, ) -> Filter: resolve_func = resolve_column(Dataset(self.dataset.value)) query = apply_dataset_query_conditions(QueryDatasets(self.dataset), query, self.event_types) snuba_filter = get_filter(query, params=params) snuba_filter.update_with( resolve_field_list([self.aggregate], snuba_filter, auto_fields=False) ) snuba_filter = resolve_snuba_aliases(snuba_filter, resolve_func)[0] if snuba_filter.group_ids: snuba_filter.conditions.append( ["group_id", "IN", list(map(int, snuba_filter.group_ids))] ) if environment: snuba_filter.conditions.append(["environment", "=", environment.name]) return snuba_filter