Skip to content

Commit

Permalink
more fixes....
Browse files Browse the repository at this point in the history
  • Loading branch information
Rachel Chen authored and Rachel Chen committed Feb 14, 2025
1 parent 4d57b83 commit ac24c55
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 19 deletions.
49 changes: 36 additions & 13 deletions snuba/web/rpc/v1/endpoint_trace_item_table.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
AttributeConditionalAggregation,
)
from sentry_protos.snuba.v1.endpoint_trace_item_table_pb2 import (
AggregationFilter,
Column,
TraceItemTableRequest,
TraceItemTableResponse,
Expand Down Expand Up @@ -86,26 +87,48 @@ def _transform_request(request: TraceItemTableRequest) -> TraceItemTableRequest:


def convert_to_conditional_aggregation(in_msg: TraceItemTableRequest) -> None:
def _convert(column: Column) -> None:
if column.HasField("aggregation"):
aggregation = column.aggregation
column.conditional_aggregation.CopyFrom(
AttributeConditionalAggregation(
aggregate=aggregation.aggregate,
key=aggregation.key,
label=aggregation.label,
extrapolation_mode=aggregation.extrapolation_mode,
def _convert(input: Column | AggregationFilter) -> None:
if isinstance(input, Column):
if input.HasField("aggregation"):
aggregation = input.aggregation
input.conditional_aggregation.CopyFrom(
AttributeConditionalAggregation(
aggregate=aggregation.aggregate,
key=aggregation.key,
label=aggregation.label,
extrapolation_mode=aggregation.extrapolation_mode,
)
)
)

if column.HasField("formula"):
_convert(column.formula.left)
_convert(column.formula.right)
if input.HasField("formula"):
_convert(input.formula.left)
_convert(input.formula.right)

if isinstance(input, AggregationFilter):
if input.HasField("and_filter"):
for aggregation_filter in input.and_filter.filters:
_convert(aggregation_filter)
if input.HasField("or_filter"):
for aggregation_filter in input.or_filter.filters:
_convert(aggregation_filter)
if input.HasField("comparison_filter"):
if input.comparison_filter.HasField("aggregation"):
aggregation = input.comparison_filter.aggregation
input.comparison_filter.conditional_aggregation.CopyFrom(
AttributeConditionalAggregation(
aggregate=aggregation.aggregate,
key=aggregation.key,
label=aggregation.label,
extrapolation_mode=aggregation.extrapolation_mode,
)
)

for column in in_msg.columns:
_convert(column)
for ob in in_msg.order_by:
_convert(ob.column)
if in_msg.HasField("aggregation_filter"):
_convert(in_msg.aggregation_filter)


class EndpointTraceItemTable(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1916,14 +1916,12 @@ def test_rachel(self) -> None:
],
)
response = EndpointTraceItemTable().execute(message)
print(response.column_values)
assert response.column_values == [
TraceItemColumnValues(
attribute_name="avg_sample(sampling_rate)",
results=[
AttributeValue(val_double=0.475),
],
reliabilities=[Reliability.RELIABILITY_LOW],
),
TraceItemColumnValues(
attribute_name="count()",
Expand Down Expand Up @@ -2791,7 +2789,7 @@ def test_apply_labels_to_columns_backward_compat(self) -> None:
message = TraceItemTableRequest(
columns=[
Column(
aggregation=AttributeAggregation(
conditional_aggregation=AttributeConditionalAggregation(
aggregate=Function.FUNCTION_AVG,
key=AttributeKey(
type=AttributeKey.TYPE_FLOAT, name="custom_measurement"
Expand All @@ -2801,7 +2799,7 @@ def test_apply_labels_to_columns_backward_compat(self) -> None:
)
),
Column(
aggregation=AttributeAggregation(
conditional_aggregation=AttributeConditionalAggregation(
aggregate=Function.FUNCTION_AVG,
key=AttributeKey(
type=AttributeKey.TYPE_FLOAT, name="custom_measurement"
Expand All @@ -2823,7 +2821,7 @@ def test_apply_labels_to_columns(self) -> None:
message = TraceItemTableRequest(
columns=[
Column(
aggregation=AttributeAggregation(
conditional_aggregation=AttributeConditionalAggregation(
aggregate=Function.FUNCTION_AVG,
key=AttributeKey(
type=AttributeKey.TYPE_DOUBLE, name="custom_measurement"
Expand All @@ -2833,7 +2831,7 @@ def test_apply_labels_to_columns(self) -> None:
)
),
Column(
aggregation=AttributeAggregation(
conditional_aggregation=AttributeConditionalAggregation(
aggregate=Function.FUNCTION_AVG,
key=AttributeKey(
type=AttributeKey.TYPE_DOUBLE, name="custom_measurement"
Expand Down

0 comments on commit ac24c55

Please sign in to comment.