Flux 0.109 (#2354)

* added flux 0.109.0 and 0.109.1 release notes

* Document changes to Flux string interpolation (#2326)

* Add new content on string interpolation from SPEC.md

Closes #2314

* added the stringable constraint

* Update content/influxdb/v2.0/reference/flux/language/string-interpolation.md

Co-authored-by: pierwill <pierwill@users.noreply.github.com>
Co-authored-by: Scott Anderson <scott@influxdata.com>
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>

* Add 'mode' parameter to 'csv.from' (#2353)

* updated csv.from with new mode parameter

* minor updates to csv.from

* updated description of raw csv parsing mode

* updated csv.from in cloud, updated raw parse mode description

Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com>
Co-authored-by: pierwill <pierwill@users.noreply.github.com>
pull/2356/head
Scott Anderson 2021-03-26 16:21:18 -06:00 committed by GitHub
parent 0b796c5fed
commit 871c0db598
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 95 additions and 87 deletions

View File

@ -12,72 +12,4 @@ menu:
weight: 202
---
The `csv.from()` function retrieves data from a comma-separated value (CSV) data source.
It returns a stream of tables.
Each unique series is contained within its own table.
Each record in the table represents a single point in the series.
_**Function type:** Input_
```js
import "csv"
csv.from(csv: csvData)
// OR
csv.from(file: "/path/to/data-file.csv")
```
## Parameters
### csv
Annotated CSV text.
{{% note %}}
CSV data must use Annotated CSV syntax and include all
[annotation rows](/influxdb/cloud/reference/syntax/annotated-csv/#annotations).
For more information, see [Annotated CSV](/influxdb/cloud/reference/syntax/annotated-csv/).
{{% /note %}}
_**Data type:** String_
### file
The file path of the CSV file to query.
The path can be absolute or relative.
If relative, it is relative to the working directory of the `fluxd` process.
_The CSV file must exist in the same file system running the `fluxd` process._
{{% warn %}}
**InfluxDB OSS** and **{{< cloud-name "short" >}}** user interfaces do _**not**_ support the `file` parameter.
Neither allow access to the underlying filesystem.
However, the [Flux REPL](/influxdb/cloud/tools/repl/) does support the `file` parameter.
{{% /warn %}}
_**Data type:** String_
## Examples
### Query CSV data from a file
```js
import "csv"
csv.from(file: "/path/to/data-file.csv")
```
### Query raw CSV-formatted text
```js
import "csv"
csvData = "
#datatype,string,long,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,string,string,double
#group,false,false,false,false,false,false,false,false
#default,,,,,,,,
,result,table,_start,_stop,_time,region,host,_value
,mean,0,2018-05-08T20:50:00Z,2018-05-08T20:51:00Z,2018-05-08T20:50:00Z,east,A,15.43
,mean,0,2018-05-08T20:50:00Z,2018-05-08T20:51:00Z,2018-05-08T20:50:20Z,east,B,59.25
,mean,0,2018-05-08T20:50:00Z,2018-05-08T20:51:00Z,2018-05-08T20:50:40Z,east,C,52.62
"
csv.from(csv: csvData)
```
{{< duplicate-oss >}}

View File

@ -27,19 +27,19 @@ name = "John"
// My name is John.
```
{{% note %}}
#### Flux only interpolates string values
Flux currently interpolates only string values ([IMP#1775](https://github.com/influxdata/flux/issues/1775)).
Use the [string() function](/influxdb/v2.0/reference/flux/stdlib/built-in/transformations/type-conversions/string/)
to convert non-string values to strings.
String interpolation expressions must satisfy the
[Stringable constraint](/influxdb/v2.0/reference/flux/language/types/#stringable-constraint).
##### Arbitrary expression interpolation example:
```js
count = 12
n = duration(v: "1m")
"the answer is ${n}"
// the answer is 1m
"I currently have ${string(v: count)} cats."
t0 = time(v: "2016-06-13T17:43:50.1004002Z")
"the answer is ${t0}"
// the answer is 2016-06-13T17:43:50.1004002Z
```
{{% /note %}}
## Use dot notation to interpolate record values
[Records](/influxdb/v2.0/reference/flux/language/expressions/#record-literals) consist of key-value pairs.

View File

@ -273,8 +273,12 @@ Boolean, Integer, Uinteger, Float, String, Duration, and Time types are `Nullabl
Records are the only types that fall under this constraint.
### Negatable Constraint
Negatable types ore those the unary arithmetic operator `-` accepts.
Negatable types are those the unary arithmetic operator `-` accepts.
Integer, Uinteger, Float, and Duration types are `Negatable`.
### Timeable Constraint
Duration and Time types are `Timeable`.
##### Stringable Constraint
Stringable types are those that can be evaluated and expressed in string interpolation.
String, Integer, Uinteger, Float, Boolean, Time, and Duration types are `Stringable`.

View File

@ -22,22 +22,28 @@ _**Function type:** Input_
```js
import "csv"
csv.from(csv: csvData)
csv.from(
csv: csvData,
mode: "annotations"
)
// OR
csv.from(file: "/path/to/data-file.csv")
csv.from(
file: "/path/to/data-file.csv",
mode: "annotations"
)
```
## Parameters
### csv
Annotated CSV text.
CSV data.
Supports [annotated CSV](/influxdb/v2.0/reference/syntax/annotated-csv/) or raw CSV.
Use [`mode`](#mode) to specify the parsing mode.
{{% note %}}
CSV data must use Annotated CSV syntax and include all
[annotation rows](/influxdb/v2.0/reference/syntax/annotated-csv/#annotations).
For more information, see [Annotated CSV](/influxdb/v2.0/reference/syntax/annotated-csv/).
Annotated CSV data must include all [annotation rows](/influxdb/v2.0/reference/syntax/annotated-csv/#annotations).
{{% /note %}}
_**Data type:** String_
@ -56,16 +62,43 @@ However, the [Flux REPL](/influxdb/v2.0/tools/repl/) does support the `file` par
_**Data type:** String_
### mode
CSV parsing mode.
Default is `annotations`.
_**Data type:** String_
##### Available modes
- **annotations:** Use CSV annotations to determine column data types.
- **raw:** Parse all columns as strings and use the first row as the
[header row](/influxdb/v2.0/reference/syntax/annotated-csv/#rows) and all
subsequent rows as data.
## Examples
### Query CSV data from a file
- [Query annotated CSV data from a file](#query-annotated-csv-data-from-a-file)
- [Query raw CSV data from a file](#query-raw-csv-data-from-a-file)
- [Query an annotated CSV string](#query-an-annotated-csv-string)
- [Query a raw CSV string](#query-a-raw-csv-string)
##### Query annotated CSV data from a file
```js
import "csv"
csv.from(file: "/path/to/data-file.csv")
```
### Query raw CSV-formatted text
##### Query raw CSV data from a file
```js
import "csv"
csv.from(
file: "/path/to/data-file.csv",
mode: "raw"
)
```
##### Query an annotated CSV string
```js
import "csv"
@ -81,3 +114,20 @@ csvData = "
csv.from(csv: csvData)
```
##### Query a raw CSV string
```js
import "csv"
csvData = "
_start,_stop,_time,region,host,_value
2018-05-08T20:50:00Z,2018-05-08T20:51:00Z,2018-05-08T20:50:00Z,east,A,15.43
2018-05-08T20:50:00Z,2018-05-08T20:51:00Z,2018-05-08T20:50:20Z,east,B,59.25
2018-05-08T20:50:00Z,2018-05-08T20:51:00Z,2018-05-08T20:50:40Z,east,C,52.62
"
csv.from(
csv: csvData,
mode: "raw"
)
```

View File

@ -8,6 +8,28 @@ menu:
name: Flux
---
## v0.109.1 [2021-03-24]
### Bug fixes
- Perform testing checks as part of query `done`.
- Delimited multi-result encoder properly releases results before checking for errors.
---
## v0.109.0 [2021-03-23]
### Features
- Add support for null values in string interpolation.
- Add support for all basic datatypes in string interpolation.
- Add support for parsing CSV files without annotations.
- Support formatting the AST from `libflux`.
### Bug fixes
- Add error handling for wrong number of fields for raw CSV.
- Change Rust version to be updated manually.
---
## v0.108.1 [2021-03-15]
- _Internal code cleanup._