Skip to content

Commit

Permalink
fix: enrich attributes regardless if it is materialized
Browse files Browse the repository at this point in the history
  • Loading branch information
nityanandagohain committed Sep 18, 2024
1 parent 72cbc1a commit da712cc
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 16 deletions.
19 changes: 8 additions & 11 deletions pkg/query-service/app/logs/v3/enrich_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,26 +61,23 @@ func EnrichmentRequired(params *v3.QueryRangeParamsV3) bool {
return false
}

// if the field is timestamp/id/value we don't need to enrich
// if the field is static we don't need to enrich
// for all others we need to enrich
// an attribute/resource can be materialized/dematerialized
// but the query should work regardless and shouldn't fail
func isEnriched(field v3.AttributeKey) bool {
// if it is timestamp/id dont check
if field.Key == "timestamp" || field.Key == "id" || field.Key == constants.SigNozOrderByValue {
return true
}

if field.IsColumn {
// don't need to enrich the static fields as they will be always used a column
if _, ok := constants.StaticFieldsLogsV3[field.Key]; ok && field.IsColumn {
return true
}

if field.Type == v3.AttributeKeyTypeUnspecified || field.DataType == v3.AttributeKeyDataTypeUnspecified {
return false
}

// try to enrich all attributes which doesn't have isColumn = true
if !field.IsColumn {
return false
}

return true
return false
}

func Enrich(params *v3.QueryRangeParamsV3, fields map[string]v3.AttributeKey) {
Expand Down
76 changes: 71 additions & 5 deletions pkg/query-service/app/logs/v3/enrich_query_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ var testEnrichmentRequiredData = []struct {
EnrichmentRequired: true,
},
{
Name: "filter enrichment not required",
Name: "filter enrichment required",
Params: v3.QueryRangeParamsV3{
CompositeQuery: &v3.CompositeQuery{
BuilderQueries: map[string]*v3.BuilderQuery{
Expand Down Expand Up @@ -87,7 +87,7 @@ var testEnrichmentRequiredData = []struct {
EnrichmentRequired: true,
},
{
Name: "filter enrichment not required required json",
Name: "filter enrichment required required json",
Params: v3.QueryRangeParamsV3{
CompositeQuery: &v3.CompositeQuery{
BuilderQueries: map[string]*v3.BuilderQuery{
Expand All @@ -105,7 +105,7 @@ var testEnrichmentRequiredData = []struct {
EnrichmentRequired: true,
},
{
Name: "groupBy enrichment not required",
Name: "groupBy enrichment required",
Params: v3.QueryRangeParamsV3{
CompositeQuery: &v3.CompositeQuery{
BuilderQueries: map[string]*v3.BuilderQuery{
Expand Down Expand Up @@ -194,8 +194,9 @@ var testEnrichmentRequiredData = []struct {
QueryName: "test",
Expression: "test",
DataSource: v3.DataSourceLogs,
GroupBy: []v3.AttributeKey{{Key: "trace_id", DataType: v3.AttributeKeyDataTypeString, Type: v3.AttributeKeyTypeTag}},
OrderBy: []v3.OrderBy{{ColumnName: "#SIGNOZ_VALUE", Order: "ASC"}},
// here we have to fallback to trace_id attribute instead of column
GroupBy: []v3.AttributeKey{{Key: "trace_id", DataType: v3.AttributeKeyDataTypeString, Type: v3.AttributeKeyTypeTag}},
OrderBy: []v3.OrderBy{{ColumnName: "#SIGNOZ_VALUE", Order: "ASC"}},
},
},
},
Expand Down Expand Up @@ -393,6 +394,71 @@ var testEnrichParamsData = []struct {
},
},
},
{
Name: "Enrich if an attribute/resource attribute is materialized/dematerialized",
Params: v3.QueryRangeParamsV3{
CompositeQuery: &v3.CompositeQuery{
BuilderQueries: map[string]*v3.BuilderQuery{
"test": {
QueryName: "test",
Expression: "test",
DataSource: v3.DataSourceLogs,
AggregateAttribute: v3.AttributeKey{
Key: "mat_resource",
Type: v3.AttributeKeyTypeResource,
DataType: v3.AttributeKeyDataTypeInt64,
IsColumn: true,
},
Filters: &v3.FilterSet{Operator: "AND", Items: []v3.FilterItem{
{Key: v3.AttributeKey{Key: "mat_attr", Type: v3.AttributeKeyTypeTag, IsColumn: true}, Value: "test", Operator: "="},
{Key: v3.AttributeKey{Key: "normal_attr", DataType: v3.AttributeKeyDataTypeString, IsColumn: false}, Value: "test1", Operator: "="},
}},
},
},
},
},
Fields: map[string]v3.AttributeKey{
"mat_resource": {
Key: "mat_resource",
Type: v3.AttributeKeyTypeResource,
DataType: v3.AttributeKeyDataTypeInt64,
IsColumn: false,
},
"mat_attr": {
Key: "mat_attr",
Type: v3.AttributeKeyTypeTag,
DataType: v3.AttributeKeyDataTypeString,
IsColumn: false,
},
"normal_attr": {
Key: "normal_attr",
Type: v3.AttributeKeyTypeTag,
DataType: v3.AttributeKeyDataTypeString,
IsColumn: true,
},
},
Result: v3.QueryRangeParamsV3{
CompositeQuery: &v3.CompositeQuery{
BuilderQueries: map[string]*v3.BuilderQuery{
"test": {
QueryName: "test",
Expression: "test",
DataSource: v3.DataSourceLogs,
AggregateAttribute: v3.AttributeKey{
Key: "mat_resource",
Type: v3.AttributeKeyTypeResource,
DataType: v3.AttributeKeyDataTypeInt64,
IsColumn: false,
},
Filters: &v3.FilterSet{Operator: "AND", Items: []v3.FilterItem{
{Key: v3.AttributeKey{Key: "mat_attr", Type: v3.AttributeKeyTypeTag, DataType: v3.AttributeKeyDataTypeString, IsColumn: false}, Value: "test", Operator: "="},
{Key: v3.AttributeKey{Key: "normal_attr", Type: v3.AttributeKeyTypeTag, DataType: v3.AttributeKeyDataTypeString, IsColumn: true}, Value: "test1", Operator: "="},
}},
},
},
},
},
},
}

func TestEnrichParams(t *testing.T) {
Expand Down

0 comments on commit da712cc

Please sign in to comment.