diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9b4cf9b9f..f7250f790 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -337,7 +337,7 @@ Below is a list of available icons (some are aliases): ### InfluxDB UI left navigation icons In many cases, documentation references an item in the left nav of the InfluxDB UI. -To provide a visual example of the the navigation item using the `nav-icon` shortcode. +Provide a visual example of the the navigation item using the `nav-icon` shortcode. ``` {{< nav-icon "Tasks" >}} diff --git a/assets/styles/layouts/_layout-article.scss b/assets/styles/layouts/_layout-article.scss index 52a473722..0c3e97f77 100644 --- a/assets/styles/layouts/_layout-article.scss +++ b/assets/styles/layouts/_layout-article.scss @@ -269,6 +269,7 @@ ////////////////// Blockquotes, Notes, Warnings, & Messages ////////////////// blockquote, + .feedback, .note, .warn, .enterprise-msg { @@ -383,6 +384,11 @@ } } + .feedback { + border-color: rgba($article-note-base, .75); + background: rgba($article-text, .05); + } + ///////////////////////////////// Enterprise ///////////////////////////////// .enterprise-msg { diff --git a/content/v2.0/process-data/manage-tasks/create-task.md b/content/v2.0/process-data/manage-tasks/create-task.md index 5a0a60412..d7d4c4a7f 100644 --- a/content/v2.0/process-data/manage-tasks/create-task.md +++ b/content/v2.0/process-data/manage-tasks/create-task.md @@ -51,6 +51,9 @@ The InfluxDB UI provides multiple ways to create a task: ### Import a task 1. Click on the **Tasks** icon in the left navigation menu. + + {{< nav-icon "tasks" >}} + 2. Click **Import** in the upper right. 3. Drag and drop or select a file to upload. 4. Click **Upload Task**. diff --git a/content/v2.0/query-data/guides/custom-functions.md b/content/v2.0/query-data/guides/custom-functions.md index d55ea67f0..5a92820e6 100644 --- a/content/v2.0/query-data/guides/custom-functions.md +++ b/content/v2.0/query-data/guides/custom-functions.md @@ -1,6 +1,5 @@ --- title: Create custom Flux functions -seotitle: Create custom Flux functions description: Create your own custom Flux functions to transform and manipulate data. v2.0/tags: [functions, custom, flux] menu: diff --git a/content/v2.0/query-data/guides/group-data.md b/content/v2.0/query-data/guides/group-data.md index eacaea303..968ec0312 100644 --- a/content/v2.0/query-data/guides/group-data.md +++ b/content/v2.0/query-data/guides/group-data.md @@ -1,6 +1,5 @@ --- -title: Group data with Flux -seotitle: How to group data with Flux +title: Group data in InfluxDB with Flux description: > This guide walks through grouping data with Flux by providing examples and illustrating how data is shaped throughout the process. diff --git a/content/v2.0/query-data/guides/histograms.md b/content/v2.0/query-data/guides/histograms.md index dbcb05916..76effb095 100644 --- a/content/v2.0/query-data/guides/histograms.md +++ b/content/v2.0/query-data/guides/histograms.md @@ -1,6 +1,5 @@ --- title: Create histograms with Flux -seotitle: How to create histograms with Flux description: This guide walks through using the `histogram()` function to create cumulative histograms with Flux. v2.0/tags: [histogram] menu: diff --git a/content/v2.0/query-data/guides/join.md b/content/v2.0/query-data/guides/join.md index 6ffe20eaf..f83acbd67 100644 --- a/content/v2.0/query-data/guides/join.md +++ b/content/v2.0/query-data/guides/join.md @@ -1,6 +1,6 @@ --- title: Join data with Flux -seotitle: How to join data with Flux +seotitle: Join data in InfluxDB with Flux description: This guide walks through joining data with Flux and outlines how it shapes your data in the process. v2.0/tags: [join, flux] menu: diff --git a/content/v2.0/query-data/guides/mathematic-operations.md b/content/v2.0/query-data/guides/mathematic-operations.md new file mode 100644 index 000000000..b1c8d5a27 --- /dev/null +++ b/content/v2.0/query-data/guides/mathematic-operations.md @@ -0,0 +1,253 @@ +--- +title: Transform data with mathematic operations +seotitle: Transform data with mathematic operations in Flux +description: This guide describes how to use Flux to transform data with mathematic operations. +v2.0/tags: [math, flux] +menu: + v2_0: + name: Transform data with math + parent: How-to guides +weight: 209 +--- + +[Flux](/v2.0/reference/flux), InfluxData's data scripting and query language, +supports mathematic expressions in data transformations. +This article describes how to use [Flux arithmetic operators](/v2.0/reference/flux/language/operators/#arithmetic-operator) +to "map" over data and transform values using mathematic operations. + +##### Basic mathematic operations +```js +// Examples executed using the Flux REPL +> 9 + 9 +18 +> 22 - 14 +8 +> 6 * 5 +30 +> 21 / 7 +3 +``` + +
See Flux read-eval-print-loop (REPL).
+ +{{% note %}} +#### Operands must be the same type +Operands in Flux mathematic operations must be the same data type. +For example, integers cannot be used in operations with floats. +Otherwise, you will get an error similar to: + +``` +Error: type error: float != int +``` + +To convert operands to the same type, use [type-conversion functions](/v2.0/reference/flux/functions/built-in/transformations/type-conversions/) +or manually format operands. +The operand data type determines the output data type. +For example: + +```js +100 // Parsed as an integer +100.0 // Parsed as a float + +// Example evaluations +> 20 / 8 +2 + +> 20.0 / 8.0 +2.5 +``` +{{% /note %}} + +## Custom mathematic functions +Flux lets you [create custom functions](/v2.0/query-data/guides/custom-functions) that use mathematic operations. +View the examples below. + +###### Custom multiplication function +```js +multiply = (x, y) => x * y + +multiply(x: 10, y: 12) +// Returns 120 +``` + +###### Custom percentage function +```js +percent = (sample, total) => (sample / total) * 100.0 + +percent(sample: 20.0, total: 80.0) +// Returns 25.0 +``` + +### Transform values in a data stream +To transform multiple values in an input stream, your function needs to: + +- [Handle piped-forward data](/v2.0/query-data/guides/custom-functions/#functions-that-manipulate-piped-forward-data). +- Use the [`map()` function](/v2.0/reference/flux/functions/built-in/transformations/map) to iterate over each row. + +The example `multiplyByX()` function below includes: + +- A `tables` parameter that represents the input data stream (`<-`). +- An `x` parameter which is the number by which values in the `_value` column are multiplied. +- A `map()` function that iterates over each row in the input stream. + It uses the `_time` value of the input stream to define the `_time` value in the output stream. + It also multiples the `_value` column by `x`. + +```js +multiplyByX = (x, tables=<-) => + tables + |> map(fn: (r) => ({ + _time: r._time, + _value: r._value * x + }) + ) + +data + |> multiplyByX(x: 10) +``` + +## Examples + +### Convert bytes to gigabytes +To convert active memory from bytes to gigabytes (GB), divide the `active` field +in the `mem` measurement by 1,073,741,824. + +The `map()` function iterates over each row in the piped-forward data and defines +a new `_value` by dividing the original `_value` by 1073741824. + +```js +from(bucket: "default") + |> range(start: -10m) + |> filter(fn: (r) => + r._measurement == "mem" and + r._field == "active" + ) + |> map(fn: (r) => ({ + _time: r._time, + _value: r._value / 1073741824 + }) + ) +``` + +You could turn that same calculation into a function: + +```js +bytesToGB = (tables=<-) => + tables + |> map(fn: (r) => ({ + _time: r._time, + _value: r._value / 1073741824 + }) + ) + +data + |> bytesToGB() +``` + +#### Include partial gigabytes +Because the original metric (bytes) is an integer, the output of the operation is an integer and does not include partial GBs. +To calculate partial GBs, convert the `_value` column and its values to floats using the +[`float()` function](/v2.0/reference/flux/functions/built-in/transformations/type-conversions/float) +and format the denominator in the division operation as a float. + +```js +bytesToGB = (tables=<-) => + tables + |> map(fn: (r) => ({ + _time: r._time, + _value: float(v: r._value) / 1073741824.0 + }) + ) +``` + +### Calculate a percentage +To calculate a percentage, use simple division, then multiply the result by 100. + +{{% note %}} +Operands in percentage calculations should always be floats. +{{% /note %}} + +```js +> 1.0 / 4.0 * 100.0 +25.0 +``` + +#### User vs system CPU usage +The example below calculates the percentage of total CPU used by the `user` vs the `system`. + +{{< code-tabs-wrapper >}} +{{% code-tabs %}} +[Comments](#) +[No Comments](#) +{{% /code-tabs %}} + +{{% code-tab-content %}} +```js +// Custom function that converts usage_user and +// usage_system columns to floats +usageToFloat = (tables=<-) => + tables + |> map(fn: (r) => ({ + _time: r._time, + usage_user: float(v: r.usage_user), + usage_system: float(v: r.usage_system) + }) + ) + +// Define the data source and filter user and system CPU usage +// from 'cpu-total' in the 'cpu' measurement +from(bucket: "default") + |> range(start: -1h) + |> filter(fn: (r) => + r._measurement == "cpu" and + r._field == "usage_user" or + r._field == "usage_system" and + r.cpu == "cpu-total" + ) + + // Pivot the output tables so usage_user and usage_system are in each row + |> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value") + + // Convert usage_user and usage_system to floats + |> usageToFloat() + + // Map over each row and calculate the percentage of + // CPU used by the user vs the system + |> map(fn: (r) => ({ + _time: r._time, + usage_user: r.usage_user / (r.usage_user + r.usage_system) * 100.0, + usage_system: r.usage_system / (r.usage_user + r.usage_system) * 100.0 + }) + ) +``` +{{% /code-tab-content %}} + +{{% code-tab-content %}} +```js +usageToFloat = (tables=<-) => + tables + |> map(fn: (r) => ({ + _time: r._time, + usage_user: float(v: r.usage_user), + usage_system: float(v: r.usage_system) + }) + ) + +from(bucket: "default") + |> range(start: timeRangeStart, stop: timeRangeStop) + |> filter(fn: (r) => + r._measurement == "cpu" and + r._field == "usage_user" or + r._field == "usage_system" and + r.cpu == "cpu-total" + ) + |> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value") + |> usageToFloat() + |> map(fn: (r) => ({ + _time: r._time, + usage_user: r.usage_user / (r.usage_user + r.usage_system) * 100.0, + usage_system: r.usage_system / (r.usage_user + r.usage_system) * 100.0 + }) + ) +``` +{{% /code-tab-content %}} +{{< /code-tabs-wrapper >}} diff --git a/content/v2.0/query-data/guides/regular-expressions.md b/content/v2.0/query-data/guides/regular-expressions.md index 976116761..aa844785a 100644 --- a/content/v2.0/query-data/guides/regular-expressions.md +++ b/content/v2.0/query-data/guides/regular-expressions.md @@ -1,13 +1,12 @@ --- title: Use regular expressions in Flux -seotitle: How to use regular expressions in Flux description: This guide walks through using regular expressions in evaluation logic in Flux functions. v2.0/tags: [regex] menu: v2_0: name: Use regular expressions parent: How-to guides -weight: 209 +weight: 210 --- Regular expressions (regexes) are incredibly powerful when matching patterns in large collections of data. diff --git a/content/v2.0/query-data/guides/sort-limit.md b/content/v2.0/query-data/guides/sort-limit.md index 0fe48e620..fc43fb3cb 100644 --- a/content/v2.0/query-data/guides/sort-limit.md +++ b/content/v2.0/query-data/guides/sort-limit.md @@ -1,6 +1,6 @@ --- title: Sort and limit data with Flux -seotitle: How to sort and limit data with Flux +seotitle: Sort and limit data in InfluxDB with Flux description: > This guide walks through sorting and limiting data with Flux and outlines how it shapes your data in the process. diff --git a/content/v2.0/query-data/guides/window-aggregate.md b/content/v2.0/query-data/guides/window-aggregate.md index a09fcaf6b..34af9b6ba 100644 --- a/content/v2.0/query-data/guides/window-aggregate.md +++ b/content/v2.0/query-data/guides/window-aggregate.md @@ -1,6 +1,6 @@ --- title: Window and aggregate data with Flux -seotitle: How to window and aggregate data with Flux +seotitle: Window and aggregate data in InfluxDB with Flux description: > This guide walks through windowing and aggregating data with Flux and outlines how it shapes your data in the process. diff --git a/content/v2.0/reference/flux/functions/influxdb-v1/tagvalues.md b/content/v2.0/reference/flux/functions/influxdb-v1/tagvalues.md index c91c9ddab..7db47cb88 100644 --- a/content/v2.0/reference/flux/functions/influxdb-v1/tagvalues.md +++ b/content/v2.0/reference/flux/functions/influxdb-v1/tagvalues.md @@ -1,6 +1,6 @@ --- title: v1.tagValues() function -description: placeholder +description: The `v1.tagValues()` function returns a list unique values for a given tag. menu: v2_0_ref: name: v1.tagValues @@ -12,7 +12,6 @@ v2.0/tags: [tags] The `v1.tagValues()` function returns a list unique values for a given tag. The return value is always a single table with a single column, `_value`. - ```js import "influxdata/influxdb/v1" diff --git a/content/v2.0/reference/release-notes.md b/content/v2.0/reference/release-notes.md index e0dc78eeb..2c8351263 100644 --- a/content/v2.0/reference/release-notes.md +++ b/content/v2.0/reference/release-notes.md @@ -6,6 +6,22 @@ menu: name: Release notes weight: 1 --- +## v2.0.0-alpha.6 [2019-03-??] + +### Features +- Add labels to cloned tasks. +- Add ability to filter resources by clicking a label. + +### Bug Fixes +- Prevent clipping of code snippets in Firefox. +- Prevent clipping of cell edit menus in dashboards. + +### UI Improvements +- Make code snippet copy functionality easier to use. +- Always show live preview in note cell editor. +- Redesign scraper creation workflow. +- Show warning in Telegraf and scraper lists when user has no buckets. + ## v2.0.0-alpha.4 [2019-02-21] diff --git a/content/v2.0/users/tokens/create-token.md b/content/v2.0/users/tokens/create-token.md index f203324df..2fb9428d1 100644 --- a/content/v2.0/users/tokens/create-token.md +++ b/content/v2.0/users/tokens/create-token.md @@ -12,10 +12,13 @@ draft: true **To view tokens**: -1. Click the ?? icon in the navigation bar. +1. Click the **Influx** tab in the navigation bar. + + {{< nav-icon "admin" >}} + 2. In the right panel labeled **My Settings**, click **Tokens**. All of your account's tokens appear. 3. Click on a token name from the list to view the token and a summary of access permissions. -<Thank you for being willing to help test InfluxDB v2.0 alpha!