From 247230c5c94be7c678e2213055c4b90f454991f5 Mon Sep 17 00:00:00 2001 From: Stephanie Engel <22456349+stephanie-engel@users.noreply.github.com> Date: Fri, 20 Nov 2020 09:52:07 -0600 Subject: [PATCH] keep field name as is for csv timestamp column (#8440) --- plugins/parsers/csv/parser.go | 6 ++++++ plugins/parsers/csv/parser_test.go | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/plugins/parsers/csv/parser.go b/plugins/parsers/csv/parser.go index 87e403273..1c3d511ef 100644 --- a/plugins/parsers/csv/parser.go +++ b/plugins/parsers/csv/parser.go @@ -204,6 +204,12 @@ outer: } } + // If the field name is the timestamp column, then keep field name as is. + if fieldName == p.TimestampColumn { + recordFields[fieldName] = value + continue + } + // Try explicit conversion only when column types is defined. if len(p.ColumnTypes) > 0 { // Throw error if current column count exceeds defined types. diff --git a/plugins/parsers/csv/parser_test.go b/plugins/parsers/csv/parser_test.go index c0f489365..31fd4b02a 100644 --- a/plugins/parsers/csv/parser_test.go +++ b/plugins/parsers/csv/parser_test.go @@ -85,6 +85,26 @@ func TestTimestamp(t *testing.T) { require.Equal(t, metrics[1].Time().UnixNano(), int64(1257609906000000000)) } +func TestTimestampYYYYMMDDHHmm(t *testing.T) { + p, err := NewParser( + &Config{ + HeaderRowCount: 1, + ColumnNames: []string{"first", "second", "third"}, + MeasurementColumn: "third", + TimestampColumn: "first", + TimestampFormat: "200601021504", + TimeFunc: DefaultTime, + }, + ) + testCSV := `line1,line2,line3 +200905231605,70,test_name +200907111605,80,test_name2` + metrics, err := p.Parse([]byte(testCSV)) + + require.NoError(t, err) + require.Equal(t, metrics[0].Time().UnixNano(), int64(1243094700000000000)) + require.Equal(t, metrics[1].Time().UnixNano(), int64(1247328300000000000)) +} func TestTimestampError(t *testing.T) { p, err := NewParser( &Config{