resolved merge conflicts
commit
068b7b5222
|
@ -72,6 +72,9 @@ v2.x/tags: # Tags specific to each version (replace .x" with the appropriate min
|
|||
related: # Creates links to specific internal and external content at the bottom of the page
|
||||
- /path/to/related/article
|
||||
- https://external-link.com, This is an external link
|
||||
external_url: # Used in children shortcode type="list" for page links that are external
|
||||
list_image: # Image included with article descriptions in children type="articles" shortcode
|
||||
list_note: # Used in children shortcode type="list" to add a small note next to listed links
|
||||
```
|
||||
|
||||
#### Title usage
|
||||
|
@ -390,12 +393,31 @@ or only "page" articles (those with no children) using the `show` argument:
|
|||
|
||||
_By default, it displays both sections and pages._
|
||||
|
||||
There is also a special use-case designed for listing Flux functions using the `type` argument:
|
||||
Use the `type` argument to specify the format of the children list.
|
||||
|
||||
```md
|
||||
{{< children type="functions" >}}
|
||||
```
|
||||
|
||||
The following list types are available:
|
||||
|
||||
- **articles:** lists article titles as headers with the description or summary
|
||||
of the article as a paragraph. Article headers link to the articles.
|
||||
- **list:** lists children article links in an unordered list.
|
||||
- **functions:** a special use-case designed for listing Flux functions.
|
||||
|
||||
#### Children frontmatter
|
||||
Each children list `type` uses [frontmatter properties](#page-frontmatter) when generating the list of articles.
|
||||
The following table shows which children types use which frontmatter properties:
|
||||
|
||||
| Frontmatter | articles | list | functions |
|
||||
|:----------- |:--------:|:----:|:---------:|
|
||||
| `list_title` | ✓ | ✓ | ✓ |
|
||||
| `description` | ✓ | | |
|
||||
| `external_url` | ✓ | ✓ | |
|
||||
| `list_image` | ✓ | | |
|
||||
| `list_note` | | ✓ | |
|
||||
|
||||
### Inline icons
|
||||
The `icon` shortcode allows you to inject icons in paragraph text.
|
||||
It's meant to clarify references to specific elements in the InfluxDB user interface.
|
||||
|
@ -509,6 +531,38 @@ The following options are available:
|
|||
{{< ui-message color="green" text="The message displayed in the notification.">}}
|
||||
```
|
||||
|
||||
### Flexbox-formatted content blocks
|
||||
CSS Flexbox formatting lets you create columns in article content that adjust and
|
||||
flow based on the viewable width.
|
||||
In article content, this helps if you have narrow tables that could be displayed
|
||||
side-by-side, rather than stacked vertically.
|
||||
Use the `{{< flex >}}` shortcode to create the Flexbox wrapper.
|
||||
Use the `{{% flex-content %}}` shortcode to identify each column content block.
|
||||
|
||||
```md
|
||||
{{< flex >}}
|
||||
{{% flex-content %}}
|
||||
Column 1
|
||||
{{% /flex-content %}}
|
||||
{{% flex-content %}}
|
||||
Column 2
|
||||
{{% /flex-content %}}
|
||||
{{< /flex >}}
|
||||
```
|
||||
|
||||
`{{% flex-content %}}` has an optional width argument that determines the maximum
|
||||
width of the column.
|
||||
|
||||
```md
|
||||
{{% flex-content "half" %}}
|
||||
```
|
||||
|
||||
The following options are available:
|
||||
|
||||
- half _(Default)_
|
||||
- third
|
||||
- quarter
|
||||
|
||||
### Reference content
|
||||
The InfluxDB documentation is "task-based," meaning content primarily focuses on
|
||||
what a user is **doing**, not what they are **using**.
|
||||
|
|
|
@ -104,6 +104,7 @@
|
|||
"article/cloud",
|
||||
"article/enterprise",
|
||||
"article/feedback",
|
||||
"article/flex",
|
||||
"article/lists",
|
||||
"article/note",
|
||||
"article/pagination-btns",
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
/////////////////////////// Flex Content Blocks ///////////////////////////
|
||||
|
||||
.flex-wrapper {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.flex-container {
|
||||
margin-right: 1rem;
|
||||
&.half { width: calc(50% - 1rem); }
|
||||
&.third { width: calc(33.33% - 1rem); }
|
||||
&.quarter { width: calc(25% - 1rem); }
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////// MEDIA QUERIES ////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@include media(small) {
|
||||
.flex-container {
|
||||
&.half, &.third { width: calc(100% - 1rem); }
|
||||
&.quarter { width: calc(50% - 1rem); }
|
||||
}
|
||||
}
|
|
@ -45,4 +45,6 @@ li {
|
|||
p + ol {
|
||||
margin: -.9rem 0 .5rem;
|
||||
}
|
||||
|
||||
.list-note { font-size: .85rem }
|
||||
}
|
||||
|
|
|
@ -16,6 +16,43 @@ svg {
|
|||
.st8{font-size:14.2px;}
|
||||
.st9{fill: $svg-table-code-operator;}
|
||||
.st10{fill: $svg-table-code-string;}
|
||||
}
|
||||
|
||||
&[id^='geo-s2-cells-'] {
|
||||
max-width: 250px;
|
||||
.geo-cell{fill:rgba($svg-geo-s2-cell, 0.25);stroke:$svg-geo-s2-cell;stroke-width:3;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||
.geo-region{fill:rgba($svg-geo-region, 0.35);stroke:$svg-geo-region;stroke-width:3;stroke-linejoin:round;stroke-miterlimit:10;}
|
||||
.geo-point{fill:$svg-geo-point;}
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////// Styles for SVG legends ////////////////////////////
|
||||
|
||||
span.key-geo-cell {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin: 0 .5rem .25rem 0;
|
||||
width: 1.1em;
|
||||
height: 1.1em;
|
||||
border: 2px solid $svg-geo-s2-cell;
|
||||
background: rgba($svg-geo-s2-cell, .25);
|
||||
border-radius: 2px;
|
||||
}
|
||||
span.key-geo-region {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin: 0 .5rem .25rem 0;
|
||||
width: 1.1em;
|
||||
height: 1.1em;
|
||||
border: 2px solid $svg-geo-region;
|
||||
background: rgba($svg-geo-region, .35);
|
||||
border-radius: 2px;
|
||||
}
|
||||
span.key-geo-point {
|
||||
display: inline-block;
|
||||
margin: 0 .7rem 0 .25rem;
|
||||
width: .65rem;
|
||||
height: .65rem;
|
||||
border-radius: 50%;
|
||||
background: $svg-geo-point;
|
||||
}
|
||||
|
|
|
@ -192,3 +192,7 @@ $svg-table-code: $cp-munchkin;
|
|||
$svg-table-code-bg: $np-deepnight;
|
||||
$svg-table-code-operator: $b-pool;
|
||||
$svg-table-code-string: $gr-viridian;
|
||||
|
||||
$svg-geo-s2-cell: $b-curious;
|
||||
$svg-geo-region: $m-lavander;
|
||||
$svg-geo-point: $ch-chartreuse;
|
||||
|
|
|
@ -193,3 +193,7 @@ $svg-table-code: $cp-marguerite !default;
|
|||
$svg-table-code-bg: $cp-titan !default;
|
||||
$svg-table-code-operator: $b-dodger !default;
|
||||
$svg-table-code-string: #12A290 !default;
|
||||
|
||||
$svg-geo-s2-cell: $b-malibu !default;
|
||||
$svg-geo-region: $cp-comet !default;
|
||||
$svg-geo-point: $m-heliotrope !default;
|
||||
|
|
|
@ -45,4 +45,4 @@ Guidelines used to estimate costs for default configurations:
|
|||
- **Professional**. For teams monitoring multiple disparate systems or use cases.
|
||||
- **Enterprise**. For teams monitoring multiple domains and use cases accessing a variety of dashboards.
|
||||
5. Adjust the default configuration values to match your number of devices, plugins, metrics, and so on. The **Projected Usage** costs are automatically updated as you adjust your configuration.
|
||||
6. Click **Get started with InfluxDB Cloud** [to get started](https://v2.docs.influxdata.com/v2.0/cloud/get-started/).
|
||||
6. Click **Get started with InfluxDB Cloud** [to get started](/v2.0/cloud/get-started/).
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: Execute queries
|
||||
seotitle: Different ways to query InfluxDB
|
||||
description: There are multiple ways to query data from InfluxDB including the InfluxDB UI, CLI, and API.
|
||||
weight: 102
|
||||
weight: 103
|
||||
menu:
|
||||
v2_0:
|
||||
name: Execute queries
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
---
|
||||
title: Query data with Flux
|
||||
description: Guides that walk through both common and complex queries and use cases for Flux.
|
||||
weight: 102
|
||||
v2.0/tags: [flux, query]
|
||||
menu:
|
||||
v2_0:
|
||||
name: Query with Flux
|
||||
parent: Query data
|
||||
alias:
|
||||
- /v2.0/query-data/guides/
|
||||
---
|
||||
|
||||
The following guides walk through both common and complex queries and use cases for Flux.
|
||||
|
||||
{{% note %}}
|
||||
#### Example data variable
|
||||
Many of the examples provided in the following guides use a `data` variable,
|
||||
which represents a basic query that filters data by measurement and field.
|
||||
`data` is defined as:
|
||||
|
||||
```js
|
||||
data = from(bucket: "example-bucket")
|
||||
|> range(start: -1h)
|
||||
|> filter(fn: (r) =>
|
||||
r._measurement == "example-measurement" and
|
||||
r._field == "example-field"
|
||||
)
|
||||
```
|
||||
{{% /note %}}
|
||||
|
||||
## Flux query guides
|
||||
|
||||
---
|
||||
|
||||
{{< children >}}
|
|
@ -1,15 +1,18 @@
|
|||
---
|
||||
title: Query using conditional logic
|
||||
seotitle: Query using conditional logic in Flux
|
||||
list_title: Use conditional logic
|
||||
description: >
|
||||
This guide describes how to use Flux conditional expressions, such as `if`,
|
||||
`else`, and `then`, to query and transform data.
|
||||
v2.0/tags: [conditionals, flux]
|
||||
menu:
|
||||
v2_0:
|
||||
name: Query using conditionals
|
||||
parent: How-to guides
|
||||
weight: 209
|
||||
name: Use conditional logic
|
||||
parent: Query with Flux
|
||||
weight: 220
|
||||
aliases:
|
||||
- /v2.0/query-data/guides/conditional-logic/
|
||||
---
|
||||
|
||||
Flux provides `if`, `then`, and `else` conditional expressions that allow for powerful and flexible Flux queries.
|
|
@ -0,0 +1,67 @@
|
|||
---
|
||||
title: Query cumulative sum
|
||||
seotitle: Query cumulative sum in Flux
|
||||
list_title: Cumulative sum
|
||||
description: >
|
||||
Use the `cumulativeSum()` function to calculate a running total of values.
|
||||
weight: 210
|
||||
menu:
|
||||
v2_0:
|
||||
parent: Query with Flux
|
||||
name: Query the cumulative sum
|
||||
v2.0/tags: [query, cumulative sum]
|
||||
---
|
||||
|
||||
Use the [`cumulativeSum()` function](/v2.0/reference/flux/stdlib/built-in/transformations/cumulativesum/)
|
||||
to calculate a running total of values.
|
||||
`cumulativeSum` sums the values of subsequent records and returns each row updated with the summed total.
|
||||
|
||||
{{< flex >}}
|
||||
{{% flex-content "half" %}}
|
||||
**Given the following input table:**
|
||||
|
||||
| _time | _value |
|
||||
| ----- |:------:|
|
||||
| 0001 | 1 |
|
||||
| 0002 | 2 |
|
||||
| 0003 | 1 |
|
||||
| 0004 | 3 |
|
||||
{{% /flex-content %}}
|
||||
{{% flex-content "half" %}}
|
||||
**`cumulativeSum()` returns:**
|
||||
|
||||
| _time | _value |
|
||||
| ----- |:------:|
|
||||
| 0001 | 1 |
|
||||
| 0002 | 3 |
|
||||
| 0003 | 4 |
|
||||
| 0004 | 7 |
|
||||
{{% /flex-content %}}
|
||||
{{< /flex >}}
|
||||
|
||||
{{% note %}}
|
||||
The examples below use the [example data variable](/v2.0/query-data/flux/#example-data-variable).
|
||||
{{% /note %}}
|
||||
|
||||
##### Calculate the running total of values
|
||||
```js
|
||||
data
|
||||
|> cumulativeSum()
|
||||
```
|
||||
|
||||
## Use cumulativeSum() with aggregateWindow()
|
||||
[`aggregateWindow()`](/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/aggregatewindow/)
|
||||
segments data into windows of time, aggregates data in each window into a single
|
||||
point, then removes the time-based segmentation.
|
||||
It is primarily used to [downsample data](/v2.0/process-data/common-tasks/downsample-data/).
|
||||
|
||||
`aggregateWindow()` expects an aggregate function that returns a single row for each time window.
|
||||
To use `cumulativeSum()` with `aggregateWindow`, use `sum` in `aggregateWindow()`,
|
||||
then calculate the running total of the aggregate values with `cumulativeSum()`.
|
||||
|
||||
<!-- -->
|
||||
```js
|
||||
data
|
||||
|> aggregateWindow(every: 5m, fn: sum)
|
||||
|> cumulativeSum()
|
||||
```
|
|
@ -5,8 +5,10 @@ v2.0/tags: [functions, custom, flux]
|
|||
menu:
|
||||
v2_0:
|
||||
name: Create custom functions
|
||||
parent: How-to guides
|
||||
weight: 208
|
||||
parent: Query with Flux
|
||||
weight: 220
|
||||
aliases:
|
||||
- /v2.0/query-data/guides/custom-functions/
|
||||
---
|
||||
|
||||
Flux's functional syntax allows for custom functions.
|
|
@ -7,6 +7,8 @@ menu:
|
|||
name: Custom aggregate functions
|
||||
parent: Create custom functions
|
||||
weight: 301
|
||||
aliases:
|
||||
- /v2.0/query-data/guides/custom-functions/custom-aggregate/
|
||||
---
|
||||
|
||||
To aggregate your data, use the Flux
|
|
@ -8,8 +8,10 @@ v2.0/tags: [exists]
|
|||
menu:
|
||||
v2_0:
|
||||
name: Check if a value exists
|
||||
parent: How-to guides
|
||||
weight: 209
|
||||
parent: Query with Flux
|
||||
weight: 220
|
||||
aliases:
|
||||
- /v2.0/query-data/guides/exists/
|
||||
---
|
||||
|
||||
Use the Flux `exists` operator to check if an object contains a key or if that
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: Group data in InfluxDB with Flux
|
||||
list_title: Group data
|
||||
description: >
|
||||
This guide walks through grouping data with Flux by providing examples and
|
||||
illustrating how data is shaped throughout the process.
|
||||
|
@ -7,8 +8,10 @@ v2.0/tags: [group]
|
|||
menu:
|
||||
v2_0:
|
||||
name: Group data
|
||||
parent: How-to guides
|
||||
weight: 203
|
||||
parent: Query with Flux
|
||||
weight: 202
|
||||
aliases:
|
||||
- /v2.0/query-data/guides/group-data/
|
||||
---
|
||||
|
||||
With Flux, you can group data by any column in your queried data set.
|
|
@ -1,12 +1,15 @@
|
|||
---
|
||||
title: Create histograms with Flux
|
||||
list_title: Create histograms
|
||||
description: This guide walks through using the `histogram()` function to create cumulative histograms with Flux.
|
||||
v2.0/tags: [histogram]
|
||||
menu:
|
||||
v2_0:
|
||||
name: Create histograms
|
||||
parent: How-to guides
|
||||
weight: 208
|
||||
parent: Query with Flux
|
||||
weight: 210
|
||||
aliases:
|
||||
- /v2.0/query-data/guides/histograms/
|
||||
---
|
||||
|
||||
Histograms provide valuable insight into the distribution of your data.
|
|
@ -1,13 +1,16 @@
|
|||
---
|
||||
title: Join data with Flux
|
||||
seotitle: Join data in InfluxDB with Flux
|
||||
list_title: Join data
|
||||
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:
|
||||
v2_0:
|
||||
name: Join data
|
||||
parent: How-to guides
|
||||
weight: 205
|
||||
parent: Query with Flux
|
||||
weight: 220
|
||||
aliases:
|
||||
- /v2.0/query-data/guides/join/
|
||||
---
|
||||
|
||||
The [`join()` function](/v2.0/reference/flux/stdlib/built-in/transformations/join) merges two or more
|
|
@ -1,12 +1,15 @@
|
|||
---
|
||||
title: Manipulate timestamps with Flux
|
||||
list_title: Manipulate timestamps
|
||||
description: >
|
||||
Use Flux to process and manipulate timestamps.
|
||||
menu:
|
||||
v2_0:
|
||||
name: Manipulate timestamps
|
||||
parent: How-to guides
|
||||
weight: 209
|
||||
parent: Query with Flux
|
||||
weight: 220
|
||||
aliases:
|
||||
- /v2.0/query-data/guides/manipulate-timestamps/
|
||||
---
|
||||
|
||||
Every point stored in InfluxDB has an associated timestamp.
|
|
@ -1,13 +1,16 @@
|
|||
---
|
||||
title: Transform data with mathematic operations
|
||||
seotitle: Transform data with mathematic operations in Flux
|
||||
list_title: Transform data with math
|
||||
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
|
||||
parent: Query with Flux
|
||||
weight: 205
|
||||
aliases:
|
||||
- /v2.0/query-data/guides/mathematic-operations/
|
||||
---
|
||||
|
||||
[Flux](/v2.0/reference/flux), InfluxData's data scripting and query language,
|
|
@ -0,0 +1,147 @@
|
|||
---
|
||||
title: Find median values
|
||||
seotitle: Find median values in Flux
|
||||
list_title: Median
|
||||
description: >
|
||||
Use the `median()` function to return a value representing the `0.5` quantile
|
||||
(50th percentile) or median of input data.
|
||||
weight: 210
|
||||
menu:
|
||||
v2_0:
|
||||
parent: Query with Flux
|
||||
name: Find the median
|
||||
v2.0/tags: [query, median]
|
||||
related:
|
||||
- /v2.0/query-data/flux/percentile-quantile/
|
||||
---
|
||||
|
||||
Use the [`median()` function](/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/median/)
|
||||
to return a value representing the `0.5` quantile (50th percentile) or median of input data.
|
||||
|
||||
## Select a method for calculating the median
|
||||
Select one of the following methods to calculate the median:
|
||||
|
||||
- [estimate_tdigest](#estimate-tdigest)
|
||||
- [exact_mean](#exact-mean)
|
||||
- [exact_selector](#exact-selector)
|
||||
|
||||
### estimate_tdigest
|
||||
**(Default)** An aggregate method that uses a [t-digest data structure](https://github.com/tdunning/t-digest)
|
||||
to compute an accurate `0.5` quantile estimate on large data sources.
|
||||
Output tables consist of a single row containing the calculated median.
|
||||
|
||||
{{< flex >}}
|
||||
{{% flex-content %}}
|
||||
**Given the following input table:**
|
||||
|
||||
| _time | _value |
|
||||
| ----- |:------:|
|
||||
| 0001 | 1.0 |
|
||||
| 0002 | 1.0 |
|
||||
| 0003 | 2.0 |
|
||||
| 0004 | 3.0 |
|
||||
{{% /flex-content %}}
|
||||
{{% flex-content %}}
|
||||
**`estimate_tdigest` returns:**
|
||||
|
||||
| _value |
|
||||
|:------:|
|
||||
| 1.5 |
|
||||
{{% /flex-content %}}
|
||||
{{< /flex >}}
|
||||
|
||||
### exact_mean
|
||||
An aggregate method that takes the average of the two points closest to the `0.5` quantile value.
|
||||
Output tables consist of a single row containing the calculated median.
|
||||
|
||||
{{< flex >}}
|
||||
{{% flex-content %}}
|
||||
**Given the following input table:**
|
||||
|
||||
| _time | _value |
|
||||
| ----- |:------:|
|
||||
| 0001 | 1.0 |
|
||||
| 0002 | 1.0 |
|
||||
| 0003 | 2.0 |
|
||||
| 0004 | 3.0 |
|
||||
{{% /flex-content %}}
|
||||
{{% flex-content %}}
|
||||
**`exact_mean` returns:**
|
||||
|
||||
| _value |
|
||||
|:------:|
|
||||
| 1.5 |
|
||||
{{% /flex-content %}}
|
||||
{{< /flex >}}
|
||||
|
||||
### exact_selector
|
||||
A selector method that returns the data point for which at least 50% of points are less than.
|
||||
Output tables consist of a single row containing the calculated median.
|
||||
|
||||
{{< flex >}}
|
||||
{{% flex-content %}}
|
||||
**Given the following input table:**
|
||||
|
||||
| _time | _value |
|
||||
| ----- |:------:|
|
||||
| 0001 | 1.0 |
|
||||
| 0002 | 1.0 |
|
||||
| 0003 | 2.0 |
|
||||
| 0004 | 3.0 |
|
||||
{{% /flex-content %}}
|
||||
{{% flex-content %}}
|
||||
**`exact_selector` returns:**
|
||||
|
||||
| _time | _value |
|
||||
| ----- |:------:|
|
||||
| 0002 | 1.0 |
|
||||
{{% /flex-content %}}
|
||||
{{< /flex >}}
|
||||
|
||||
{{% note %}}
|
||||
The examples below use the [example data variable](/v2.0/query-data/flux/#example-data-variable).
|
||||
{{% /note %}}
|
||||
|
||||
## Find the value that represents the median
|
||||
Use the default method, `"estimate_tdigest"`, to return all rows in a table that
|
||||
contain values in the 50th percentile of data in the table.
|
||||
|
||||
```js
|
||||
data
|
||||
|> median()
|
||||
```
|
||||
|
||||
## Find the average of values closest to the median
|
||||
Use the `exact_mean` method to return a single row per input table containing the
|
||||
average of the two values closest to the mathematical median of data in the table.
|
||||
|
||||
```js
|
||||
data
|
||||
|> median(method: "exact_mean")
|
||||
```
|
||||
|
||||
## Find the point with the median value
|
||||
Use the `exact_selector` method to return a single row per input table containing the
|
||||
value that 50% of values in the table are less than.
|
||||
|
||||
```js
|
||||
data
|
||||
|> median(method: "exact_selector")
|
||||
```
|
||||
|
||||
## Use median() with aggregateWindow()
|
||||
[`aggregateWindow()`](/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/aggregatewindow/)
|
||||
segments data into windows of time, aggregates data in each window into a single
|
||||
point, and then removes the time-based segmentation.
|
||||
It is primarily used to [downsample data](/v2.0/process-data/common-tasks/downsample-data/).
|
||||
|
||||
To specify the [median calculation method](#median-calculation-methods) in `aggregateWindow()`, use the
|
||||
[full function syntax](/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/aggregatewindow/#specify-parameters-of-the-aggregate-function):
|
||||
|
||||
```js
|
||||
data
|
||||
|> aggregateWindow(
|
||||
every: 5m,
|
||||
fn: (tables=<-, column) => tables |> median(method: "exact_selector")
|
||||
)
|
||||
```
|
|
@ -6,8 +6,10 @@ v2.0/tags: [states, monitor, flux]
|
|||
menu:
|
||||
v2_0:
|
||||
name: Monitor states
|
||||
parent: How-to guides
|
||||
weight: 209
|
||||
parent: Query with Flux
|
||||
weight: 220
|
||||
aliases:
|
||||
- /v2.0/query-data/guides/monitor-states/
|
||||
---
|
||||
|
||||
Flux helps you monitor states in your metrics and events:
|
|
@ -0,0 +1,163 @@
|
|||
---
|
||||
title: Find percentile and quantile values
|
||||
seotitle: Query percentile and quantile values in Flux
|
||||
list_title: Percentile & quantile
|
||||
description: >
|
||||
Use the `quantile()` function to return all values within the `q` quantile or
|
||||
percentile of input data.
|
||||
weight: 210
|
||||
menu:
|
||||
v2_0:
|
||||
parent: Query with Flux
|
||||
name: Query percentiles & quantiles
|
||||
v2.0/tags: [query, percentile, quantile]
|
||||
related:
|
||||
- /v2.0/query-data/flux/query-median/
|
||||
---
|
||||
|
||||
Use the [`quantile()` function](/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/quantile/)
|
||||
to return a value representing the `q` quantile or percentile of input data.
|
||||
|
||||
## Percentile versus quantile
|
||||
Percentiles and quantiles are very similar, differing only in the number used to calculate return values.
|
||||
A percentile is calculated using numbers between `0` and `100`.
|
||||
A quantile is calculated using numbers between `0.0` and `1.0`.
|
||||
For example, the **`0.5` quantile** is the same as the **50th percentile**.
|
||||
|
||||
## Select a method for calculating the quantile
|
||||
Select one of the following methods to calculate the quantile:
|
||||
|
||||
- [estimate_tdigest](#estimate-tdigest)
|
||||
- [exact_mean](#exact-mean)
|
||||
- [exact_selector](#exact-selector)
|
||||
|
||||
### estimate_tdigest
|
||||
**(Default)** An aggregate method that uses a [t-digest data structure](https://github.com/tdunning/t-digest)
|
||||
to compute a quantile estimate on large data sources.
|
||||
Output tables consist of a single row containing the calculated quantile.
|
||||
|
||||
If calculating the `0.5` quantile or 50th percentile:
|
||||
|
||||
{{< flex >}}
|
||||
{{% flex-content %}}
|
||||
**Given the following input table:**
|
||||
|
||||
| _time | _value |
|
||||
| ----- |:------:|
|
||||
| 0001 | 1.0 |
|
||||
| 0002 | 1.0 |
|
||||
| 0003 | 2.0 |
|
||||
| 0004 | 3.0 |
|
||||
{{% /flex-content %}}
|
||||
{{% flex-content %}}
|
||||
**`estimate_tdigest` returns:**
|
||||
|
||||
| _value |
|
||||
|:------:|
|
||||
| 1.5 |
|
||||
{{% /flex-content %}}
|
||||
{{< /flex >}}
|
||||
|
||||
### exact_mean
|
||||
An aggregate method that takes the average of the two points closest to the quantile value.
|
||||
Output tables consist of a single row containing the calculated quantile.
|
||||
|
||||
If calculating the `0.5` quantile or 50th percentile:
|
||||
|
||||
{{< flex >}}
|
||||
{{% flex-content %}}
|
||||
**Given the following input table:**
|
||||
|
||||
| _time | _value |
|
||||
| ----- |:------:|
|
||||
| 0001 | 1.0 |
|
||||
| 0002 | 1.0 |
|
||||
| 0003 | 2.0 |
|
||||
| 0004 | 3.0 |
|
||||
{{% /flex-content %}}
|
||||
{{% flex-content %}}
|
||||
**`exact_mean` returns:**
|
||||
|
||||
| _value |
|
||||
|:------:|
|
||||
| 1.5 |
|
||||
{{% /flex-content %}}
|
||||
{{< /flex >}}
|
||||
|
||||
### exact_selector
|
||||
A selector method that returns the data point for which at least `q` points are less than.
|
||||
Output tables consist of a single row containing the calculated quantile.
|
||||
|
||||
If calculating the `0.5` quantile or 50th percentile:
|
||||
|
||||
{{< flex >}}
|
||||
{{% flex-content %}}
|
||||
**Given the following input table:**
|
||||
|
||||
| _time | _value |
|
||||
| ----- |:------:|
|
||||
| 0001 | 1.0 |
|
||||
| 0002 | 1.0 |
|
||||
| 0003 | 2.0 |
|
||||
| 0004 | 3.0 |
|
||||
{{% /flex-content %}}
|
||||
{{% flex-content %}}
|
||||
**`exact_selector` returns:**
|
||||
|
||||
| _time | _value |
|
||||
| ----- |:------:|
|
||||
| 0002 | 1.0 |
|
||||
{{% /flex-content %}}
|
||||
{{< /flex >}}
|
||||
|
||||
{{% note %}}
|
||||
The examples below use the [example data variable](/v2.0/query-data/flux/#example-data-variable).
|
||||
{{% /note %}}
|
||||
|
||||
## Find the value representing the 99th percentile
|
||||
Use the default method, `"estimate_tdigest"`, to return all rows in a table that
|
||||
contain values in the 99th percentile of data in the table.
|
||||
|
||||
```js
|
||||
data
|
||||
|> quantile(q: 0.99)
|
||||
```
|
||||
|
||||
## Find the average of values closest to the quantile
|
||||
Use the `exact_mean` method to return a single row per input table containing the
|
||||
average of the two values closest to the mathematical quantile of data in the table.
|
||||
For example, to calculate the `0.99` quantile:
|
||||
|
||||
```js
|
||||
data
|
||||
|> quantile(q: 0.99, method: "exact_mean")
|
||||
```
|
||||
|
||||
## Find the point with the quantile value
|
||||
Use the `exact_selector` method to return a single row per input table containing the
|
||||
value that `q * 100`% of values in the table are less than.
|
||||
For example, to calculate the `0.99` quantile:
|
||||
|
||||
```js
|
||||
data
|
||||
|> quantile(q: 0.99, method: "exact_selector")
|
||||
```
|
||||
|
||||
## Use quantile() with aggregateWindow()
|
||||
[`aggregateWindow()`](/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/aggregatewindow/)
|
||||
segments data into windows of time, aggregates data in each window into a single
|
||||
point, and then removes the time-based segmentation.
|
||||
It is primarily used to [downsample data](/v2.0/process-data/common-tasks/downsample-data/).
|
||||
|
||||
To specify the [quantile calculation method](#quantile-calculation-methods) in
|
||||
`aggregateWindow()`, use the [full function syntax](/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/aggregatewindow/#specify-parameters-of-the-aggregate-function):
|
||||
|
||||
```js
|
||||
data
|
||||
|> aggregateWindow(
|
||||
every: 5m,
|
||||
fn: (tables=<-, column) =>
|
||||
tables
|
||||
|> quantile(q: 0.99, method: "exact_selector")
|
||||
)
|
||||
```
|
|
@ -0,0 +1,67 @@
|
|||
---
|
||||
title: Query fields and tags
|
||||
seotitle: Query fields and tags in InfluxDB using Flux
|
||||
description: >
|
||||
Use the `filter()` function to query data based on fields, tags, or any other column value.
|
||||
`filter()` performs operations similar to the `SELECT` statement and the `WHERE`
|
||||
clause in InfluxQL and other SQL-like query languages.
|
||||
weight: 201
|
||||
menu:
|
||||
v2_0:
|
||||
parent: Query with Flux
|
||||
v2.0/tags: [query, select, where]
|
||||
---
|
||||
|
||||
Use the [`filter()` function](/v2.0/reference/flux/stdlib/built-in/transformations/filter/)
|
||||
to query data based on fields, tags, or any other column value.
|
||||
`filter()` performs operations similar to the `SELECT` statement and the `WHERE`
|
||||
clause in InfluxQL and other SQL-like query languages.
|
||||
|
||||
## The filter() function
|
||||
`filter()` has an `fn` parameter that expects a [predicate function](/v2.0/reference/glossary/#predicate-function),
|
||||
an anonymous function comprised of one or more [predicate expressions](/v2.0/reference/glossary/#predicate-expression).
|
||||
The predicate function evaluates each input row.
|
||||
Rows that evaluate to `true` are **included** in the output data.
|
||||
Rows that evaluate to `false` are **excluded** from the output data.
|
||||
|
||||
```js
|
||||
// ...
|
||||
|> filter(fn: (r) => r._measurement == "example-measurement" )
|
||||
```
|
||||
|
||||
The `fn` predicate function requires an `r` argument, which represents each row
|
||||
as `filter()` iterates over input data.
|
||||
Key-value pairs in the row object represent columns and their values.
|
||||
Use **dot notation** or **bracket notation** to reference specific column values in the predicate function.
|
||||
Use [logical operators](/v2.0/reference/flux/language/operators/#logical-operators)
|
||||
to chain multiple predicate expressions together.
|
||||
|
||||
```js
|
||||
// Row object
|
||||
r = {foo: "bar", baz: "quz"}
|
||||
|
||||
// Example predicate function
|
||||
(r) => r.foo == "bar" and r["baz"] == "quz"
|
||||
|
||||
// Evaluation results
|
||||
(r) => true and true
|
||||
```
|
||||
|
||||
## Filter by fields and tags
|
||||
The combination of [`from()`](/v2.0/reference/flux/stdlib/built-in/inputs/from),
|
||||
[`range()`](/v2.0/reference/flux/stdlib/built-in/transformations/range),
|
||||
and `filter()` represent the most basic Flux query:
|
||||
|
||||
1. Use `from()` to define your [bucket](/v2.0/reference/glossary/#bucket).
|
||||
2. Use `range()` to limit query results by time.
|
||||
3. Use `filter()` to identify what rows of data to output.
|
||||
|
||||
```js
|
||||
from(bucket: "example-bucket")
|
||||
|> range(start: -1h)
|
||||
|> filter(fn: (r) =>
|
||||
r._measurement == "example-measurement" and
|
||||
r._field == "example-field" and
|
||||
r.tag == "example-tag"
|
||||
)
|
||||
```
|
|
@ -1,12 +1,15 @@
|
|||
---
|
||||
title: Use regular expressions in Flux
|
||||
list_title: Use regular expressions
|
||||
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: 210
|
||||
parent: Query with Flux
|
||||
weight: 220
|
||||
aliases:
|
||||
- /v2.0/query-data/guides/regular-expressions/
|
||||
---
|
||||
|
||||
Regular expressions (regexes) are incredibly powerful when matching patterns in large collections of data.
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: Extract scalar values in Flux
|
||||
list_title: Extract scalar values
|
||||
description: >
|
||||
Use Flux stream and table functions to extract scalar values from Flux query output.
|
||||
This lets you, for example, dynamically set variables using query results.
|
||||
|
@ -7,10 +8,12 @@ menu:
|
|||
v2_0:
|
||||
name: Extract scalar values
|
||||
parent: How-to guides
|
||||
weight: 210
|
||||
weight: 220
|
||||
v2.0/tags: [scalar]
|
||||
related:
|
||||
- /v2.0/reference/flux/stdlib/built-in/transformations/stream-table/
|
||||
aliases:
|
||||
- /v2.0/query-data/guides/scalar-values/
|
||||
---
|
||||
|
||||
Use Flux [stream and table functions](/v2.0/reference/flux/stdlib/built-in/transformations/stream-table/)
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
title: Sort and limit data with Flux
|
||||
seotitle: Sort and limit data in InfluxDB with Flux
|
||||
list_title: Sort and limit data
|
||||
description: >
|
||||
This guide walks through sorting and limiting data with Flux and outlines how
|
||||
it shapes your data in the process.
|
||||
|
@ -8,8 +9,10 @@ v2.0/tags: [sort, limit]
|
|||
menu:
|
||||
v2_0:
|
||||
name: Sort and limit data
|
||||
parent: How-to guides
|
||||
weight: 206
|
||||
parent: Query with Flux
|
||||
weight: 203
|
||||
aliases:
|
||||
- /v2.0/query-data/guides/sort-limit/
|
||||
---
|
||||
|
||||
The [`sort()`function](/v2.0/reference/flux/stdlib/built-in/transformations/sort)
|
|
@ -7,8 +7,10 @@ description: >
|
|||
v2.0/tags: [query, flux, sql]
|
||||
menu:
|
||||
v2_0:
|
||||
parent: How-to guides
|
||||
weight: 207
|
||||
parent: Query with Flux
|
||||
weight: 220
|
||||
aliases:
|
||||
- /v2.0/query-data/guides/sql/
|
||||
---
|
||||
|
||||
The [Flux](/v2.0/reference/flux) `sql` package provides functions for working with SQL data sources.
|
|
@ -1,15 +1,18 @@
|
|||
---
|
||||
title: Window and aggregate data with Flux
|
||||
seotitle: Window and aggregate data in InfluxDB with Flux
|
||||
list_title: Window & aggregate data
|
||||
description: >
|
||||
This guide walks through windowing and aggregating data with Flux and outlines
|
||||
how it shapes your data in the process.
|
||||
menu:
|
||||
v2_0:
|
||||
name: Window and aggregate data
|
||||
parent: How-to guides
|
||||
weight: 202
|
||||
name: Window & aggregate data
|
||||
parent: Query with Flux
|
||||
weight: 204
|
||||
v2.0/tags: [flux, aggregates]
|
||||
aliases:
|
||||
- /v2.0/query-data/guides/window-aggregate/
|
||||
---
|
||||
|
||||
A common operation performed with time series data is grouping data into windows of time,
|
|
@ -25,7 +25,7 @@ Flux is designed to be usable, readable, flexible, composable, testable, contrib
|
|||
Its syntax is largely inspired by [2018's most popular scripting language](https://insights.stackoverflow.com/survey/2018#technology),
|
||||
Javascript, and takes a functional approach to data exploration and processing.
|
||||
|
||||
The following example illustrates querying data stored from the last five minutes,
|
||||
The following example illustrates querying data stored from the last hour,
|
||||
filtering by the `cpu` measurement and the `cpu=cpu-total` tag, windowing the data in 1 minute intervals,
|
||||
and calculating the average of each window:
|
||||
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
title: Flux how-to guides
|
||||
description: Helpful guides that walk through both common and complex tasks and use cases for Flux.
|
||||
weight: 103
|
||||
v2.0/tags: [flux, query]
|
||||
menu:
|
||||
v2_0:
|
||||
name: How-to guides
|
||||
parent: Query data
|
||||
---
|
||||
|
||||
The following guides walk through common query uses cases.
|
||||
|
||||
{{< children >}}
|
|
@ -21,9 +21,4 @@ These client libraries are in active development and may not be feature-complete
|
|||
This list will continue to grow as more client libraries are released.
|
||||
{{% /note %}}
|
||||
|
||||
- [C#](https://github.com/influxdata/influxdb-client-csharp)
|
||||
- [Go](https://github.com/influxdata/influxdb-client-go)
|
||||
- [Java](https://github.com/influxdata/influxdb-client-java)
|
||||
- [JavaScript/Node.js](https://github.com/influxdata/influxdb-client-js)
|
||||
- [Python](https://github.com/influxdata/influxdb-client-python)
|
||||
- [Ruby](https://github.com/influxdata/influxdb-client-ruby)
|
||||
{{< children type="list" >}}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
title: InfluxDB Arduino client library
|
||||
list_title: Arduino
|
||||
description: Use the Arduino client library to interact with InfluxDB.
|
||||
external_url: https://github.com/tobiasschuerg/InfluxDB-Client-for-Arduino
|
||||
list_note: _– contributed by [tobiasschuerg](https://github.com/tobiasschuerg)_
|
||||
menu:
|
||||
v2_0_ref:
|
||||
name: Arduino
|
||||
parent: Client libraries
|
||||
url: https://github.com/tobiasschuerg/InfluxDB-Client-for-Arduino
|
||||
weight: 201
|
||||
---
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
title: InfluxDB C# client library
|
||||
list_title: C#
|
||||
description: Use the C# client library to interact with InfluxDB.
|
||||
external_url: https://github.com/influxdata/influxdb-client-csharp
|
||||
menu:
|
||||
v2_0_ref:
|
||||
name: C#
|
||||
parent: Client libraries
|
||||
url: https://github.com/influxdata/influxdb-client-csharp
|
||||
weight: 201
|
||||
---
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
title: InfluxDB Go client library
|
||||
list_title: Go
|
||||
description: Use the Go client library to interact with InfluxDB.
|
||||
external_url: https://github.com/influxdata/influxdb-client-go
|
||||
menu:
|
||||
v2_0_ref:
|
||||
name: Go
|
||||
parent: Client libraries
|
||||
url: https://github.com/influxdata/influxdb-client-go
|
||||
weight: 201
|
||||
---
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
title: InfluxDB Java client library
|
||||
list_title: Java
|
||||
description: Use the Java client library to interact with InfluxDB.
|
||||
external_url: https://github.com/influxdata/influxdb-client-java
|
||||
menu:
|
||||
v2_0_ref:
|
||||
name: Java
|
||||
parent: Client libraries
|
||||
url: https://github.com/influxdata/influxdb-client-java
|
||||
weight: 201
|
||||
---
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
title: InfluxDB JavaScript client library
|
||||
list_title: JavaScript
|
||||
description: Use the JavaScript client library to interact with InfluxDB.
|
||||
external_url: https://github.com/influxdata/influxdb-client-js
|
||||
menu:
|
||||
v2_0_ref:
|
||||
name: JavaScript
|
||||
parent: Client libraries
|
||||
url: https://github.com/influxdata/influxdb-client-js
|
||||
weight: 201
|
||||
---
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
title: InfluxDB PHP client library
|
||||
list_title: PHP
|
||||
description: Use the PHP client library to interact with InfluxDB.
|
||||
external_url: https://github.com/influxdata/influxdb-client-php
|
||||
menu:
|
||||
v2_0_ref:
|
||||
name: PHP
|
||||
parent: Client libraries
|
||||
url: https://github.com/influxdata/influxdb-client-php
|
||||
weight: 201
|
||||
---
|
|
@ -1,13 +1,16 @@
|
|||
---
|
||||
title: Python client library
|
||||
list_title: Python
|
||||
description: >
|
||||
Use the Python client library to interact with InfluxDB.
|
||||
weight: 103
|
||||
menu:
|
||||
v2_0_ref:
|
||||
name: Python client library
|
||||
name: Python
|
||||
parent: Client libraries
|
||||
v2.0/tags: [client libraries, python]
|
||||
aliases:
|
||||
- /v2.0/reference/api/client-libraries/python-cl-guide/
|
||||
weight: 201
|
||||
---
|
||||
|
||||
Use the [InfluxDB Python client libary](https://github.com/influxdata/influxdb-client-python) to integrate InfluxDB into Python scripts and applications.
|
||||
|
@ -100,4 +103,3 @@ write_api = client.write_api(write_options=SYNCHRONOUS)
|
|||
p = influxdb_client.Point("my_measurement").tag("location", "Prague").field("temperature", 25.3)
|
||||
write_api.write(bucket=bucket, org=org, record=p)
|
||||
```
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
title: InfluxDB Ruby client library
|
||||
list_title: Ruby
|
||||
description: Use the Ruby client library to interact with InfluxDB.
|
||||
external_url: https://github.com/influxdata/influxdb-client-ruby
|
||||
menu:
|
||||
v2_0_ref:
|
||||
name: Ruby
|
||||
parent: Client libraries
|
||||
url: https://github.com/influxdata/influxdb-client-ruby
|
||||
weight: 201
|
||||
---
|
|
@ -97,7 +97,7 @@ Function operators facilitate the creation of functions and control the flow of
|
|||
|
||||
---
|
||||
|
||||
_See [Custom functions](/v2.0/query-data/guides/custom-functions) for examples of function operators is use._
|
||||
_See [Custom functions](/v2.0/query-data/flux/custom-functions) for examples of function operators is use._
|
||||
|
||||
---
|
||||
|
||||
|
|
|
@ -49,13 +49,21 @@ Defines the behavior for empty tables.
|
|||
Potential values are `keep` and `drop`.
|
||||
Defaults to `drop`.
|
||||
|
||||
_**Data type:** String_
|
||||
|
||||
##### drop
|
||||
Empty tables are dropped.
|
||||
Tables without rows are dropped.
|
||||
|
||||
##### keep
|
||||
Empty tables are output to the next transformation.
|
||||
Tables without rows are output to the next transformation.
|
||||
|
||||
_**Data type:** String_
|
||||
{{% warn %}}
|
||||
Keeping empty tables with your first `filter()` function can have severe performance
|
||||
costs since it retains empty tables from your entire data set.
|
||||
For higher performance, use your first `filter()` function to do basic filtering,
|
||||
then keep empty tables on subsequent `filter()` calls with smaller data sets.
|
||||
_[See the example below](#keep-empty-tables-when-filtering)._
|
||||
{{% /warn %}}
|
||||
|
||||
## Examples
|
||||
|
||||
|
@ -84,6 +92,14 @@ from(bucket:"example-bucket")
|
|||
|> filter(fn: (r) => r._value > 50.0 and r._value < 65.0 )
|
||||
```
|
||||
|
||||
##### Keep empty tables when filtering
|
||||
```js
|
||||
from(bucket: "example-bucket")
|
||||
|> range(start: -1h)
|
||||
|> filter(fn: (r) => r._measurement == "events" and r._field == "open")
|
||||
|> filter(fn: (r) => r.doorId =~ /^2.*/, onEmpty: "keep")
|
||||
```
|
||||
|
||||
<hr style="margin-top:4rem"/>
|
||||
|
||||
##### Related InfluxQL functions and statements:
|
||||
|
|
|
@ -35,6 +35,28 @@ geo.filterRows(
|
|||
)
|
||||
```
|
||||
|
||||
### Strict and non-strict filtering
|
||||
In most cases, the specified geographic region does not perfectly align with S2 grid cells.
|
||||
|
||||
- **Non-strict filtering** returns points that may be outside of the specified region but
|
||||
inside S2 grid cells partially covered by the region.
|
||||
- **Strict filtering** returns only points inside the specified region.
|
||||
|
||||
<span class="key-geo-cell"></span> S2 grid cell
|
||||
<span class="key-geo-region"></span> Filter region
|
||||
<span class="key-geo-point"></span> Returned point
|
||||
|
||||
{{< flex >}}
|
||||
{{% flex-content %}}
|
||||
**Strict filtering**
|
||||
{{< svg "/static/svgs/geo-strict.svg" >}}
|
||||
{{% /flex-content %}}
|
||||
{{% flex-content %}}
|
||||
**Non-strict filtering**
|
||||
{{< svg "/static/svgs/geo-non-strict.svg" >}}
|
||||
{{% /flex-content %}}
|
||||
{{< /flex >}}
|
||||
|
||||
## Parameters
|
||||
|
||||
### region
|
||||
|
@ -88,6 +110,7 @@ Enable strict geographic data filtering which filters points by longitude (`lon`
|
|||
For S2 grid cells that are partially covered by the defined region, only points
|
||||
with coordinates in the defined region are returned.
|
||||
Default is `true`.
|
||||
_See [Strict and non-strict filtering](#strict-and-non-strict-filtering) above._
|
||||
|
||||
_**Data type:** Boolean_
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ data with coordinates outside the region, but inside S2 grid cells partially cov
|
|||
Use [`toRows()`](/v2.0/reference/flux/stdlib/experimental/geo/toRows/) and
|
||||
[`geo.strictFilter()`](/v2.0/reference/flux/stdlib/experimental/geo/strictfilter/)
|
||||
after `geo.gridFilter()` to precisely filter points.
|
||||
_See [Non-strict and strict filtering](#non-strict-and-strict-filtering) below._
|
||||
{{% /note %}}
|
||||
|
||||
_**Function type:** Transformation_
|
||||
|
@ -38,6 +39,28 @@ geo.gridFilter(
|
|||
)
|
||||
```
|
||||
|
||||
### Non-strict and strict filtering
|
||||
In most cases, the specified geographic region does not perfectly align with S2 grid cells.
|
||||
|
||||
- **Non-strict filtering** returns points that may be outside of the specified region but
|
||||
inside S2 grid cells partially covered by the region.
|
||||
- **Strict filtering** returns only points inside the specified region.
|
||||
|
||||
<span class="key-geo-cell"></span> S2 grid cell
|
||||
<span class="key-geo-region"></span> Filter region
|
||||
<span class="key-geo-point"></span> Returned point
|
||||
|
||||
{{< flex >}}
|
||||
{{% flex-content %}}
|
||||
**Non-strict filtering**
|
||||
{{< svg "/static/svgs/geo-non-strict.svg" >}}
|
||||
{{% /flex-content %}}
|
||||
{{% flex-content %}}
|
||||
**Strict filtering**
|
||||
{{< svg "/static/svgs/geo-strict.svg" >}}
|
||||
{{% /flex-content %}}
|
||||
{{< /flex >}}
|
||||
|
||||
## Parameters
|
||||
|
||||
### region
|
||||
|
|
|
@ -17,12 +17,7 @@ related:
|
|||
The `geo.strictFilter()` function filters data by latitude and longitude in a specified region.
|
||||
This filter is more strict than [`geo.gridFilter()`](/v2.0/reference/flux/stdlib/experimental/geo/gridfilter/),
|
||||
but for the best performance, use `geo.strictFilter()` **after** `geo.gridFilter()`.
|
||||
|
||||
{{% note %}}
|
||||
`geo.strictFilter()` requires `lat` and `lon` columns in each row.
|
||||
Use [`geo.toRows()`](/v2.0/reference/flux/stdlib/experimental/geo/gridfilter/)
|
||||
to pivot `lat` and `lon` fields into each row **before** using `geo.strictFilter()`.
|
||||
{{% /note %}}
|
||||
_See [Strict and non-strict filtering](#strict-and-non-strict-filtering) below._
|
||||
|
||||
_**Function type:** Transformation_
|
||||
|
||||
|
@ -34,6 +29,34 @@ geo.strictFilter(
|
|||
)
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
`geo.strictFilter()` requires `lat` and `lon` columns in each row.
|
||||
Use [`geo.toRows()`](/v2.0/reference/flux/stdlib/experimental/geo/gridfilter/)
|
||||
to pivot `lat` and `lon` fields into each row **before** using `geo.strictFilter()`.
|
||||
{{% /note %}}
|
||||
|
||||
### Strict and non-strict filtering
|
||||
In most cases, the specified geographic region does not perfectly align with S2 grid cells.
|
||||
|
||||
- **Strict filtering** returns only points inside the specified region.
|
||||
- **Non-strict filtering** returns points that may be outside of the specified region but
|
||||
inside S2 grid cells partially covered by the region.
|
||||
|
||||
<span class="key-geo-cell"></span> S2 grid cell
|
||||
<span class="key-geo-region"></span> Filter region
|
||||
<span class="key-geo-point"></span> Returned point
|
||||
|
||||
{{< flex >}}
|
||||
{{% flex-content %}}
|
||||
**Strict filtering**
|
||||
{{< svg "/static/svgs/geo-strict.svg" >}}
|
||||
{{% /flex-content %}}
|
||||
{{% flex-content %}}
|
||||
**Non-strict filtering**
|
||||
{{< svg "/static/svgs/geo-non-strict.svg" >}}
|
||||
{{% /flex-content %}}
|
||||
{{< /flex >}}
|
||||
|
||||
## Parameters
|
||||
|
||||
### region
|
||||
|
|
|
@ -708,6 +708,15 @@ A predicate expression compares two values and returns `true` or `false` based o
|
|||
the relationship between the two values.
|
||||
A predicate expression is comprised of a left operand, a comparison operator, and a right operand.
|
||||
|
||||
### predicate function
|
||||
A Flux predicate function is an anonymous function that returns `true` or `false`
|
||||
based on one or more [predicate expressions](#predicate-expression).
|
||||
|
||||
###### Example predicate function
|
||||
```js
|
||||
(r) => r.foo == "bar" and r.baz != "quz"
|
||||
```
|
||||
|
||||
### process
|
||||
|
||||
A set of predetermined rules.
|
||||
|
@ -918,8 +927,13 @@ Related entries: [bin](#bin)
|
|||
|
||||
### step-plot
|
||||
|
||||
<<<<<<< HEAD
|
||||
A data visualization that displays time series data in a staircase graph.
|
||||
Generate a step-plot using the step [interpolation option for line graphs](/v2.0/visualize-data/visualization-types/graph/#options).
|
||||
=======
|
||||
In InfluxDB 1.x, a [step-plot graph](https://docs.influxdata.com/chronograf/v1.7/guides/visualization-types/#step-plot-graph) displays time series data in a staircase graph.
|
||||
In InfluxDB 2.0, generate a similar graph using the step interpolation option for [line graphs](/v2.0/visualize-data/visualization-types/graph/#options).
|
||||
>>>>>>> master
|
||||
|
||||
### stream
|
||||
|
||||
|
@ -988,7 +1002,7 @@ Related entries: [function](#function)
|
|||
|
||||
A plugin-driven agent that collects, processes, aggregates, and writes metrics.
|
||||
|
||||
Related entries: [Automatically configure Telegraf](https://v2.docs.influxdata.com/v2.0/write-data/use-telegraf/auto-config/), [Manually configure Telegraf](https://v2.docs.influxdata.com/v2.0/write-data/use-telegraf/manual-config/), [Telegraf plugins](https://v2.docs.influxdata.com/v2.0/reference/telegraf-plugins/), [Use Telegraf to collect data](https://v2.docs.influxdata.com/v2.0/write-data/use-telegraf/), [View a Telegraf configuration](https://v2.docs.influxdata.com/v2.0/write-data/use-telegraf/auto-config/view-telegraf-config/)
|
||||
Related entries: [Automatically configure Telegraf](/v2.0/write-data/use-telegraf/auto-config/), [Manually configure Telegraf](/v2.0/write-data/use-telegraf/manual-config/), [Telegraf plugins](/v2.0/reference/telegraf-plugins/), [Use Telegraf to collect data](/v2.0/write-data/use-telegraf/), [View a Telegraf configuration](/v2.0/write-data/use-telegraf/auto-config/view-telegraf-config/)
|
||||
|
||||
### time (data type)
|
||||
|
||||
|
@ -1017,12 +1031,12 @@ Related entries: [point](#point)
|
|||
|
||||
Tokens verify user and organization permissions in InfluxDB.
|
||||
|
||||
Related entries: [Create a token](https://v2.docs.influxdata.com/v2.0/security/tokens/create-token/).
|
||||
Related entries: [Create a token](/v2.0/security/tokens/create-token/).
|
||||
|
||||
### tracing
|
||||
|
||||
By default, tracing is disabled in InfluxDB.
|
||||
To enable tracing or set other InfluxDB configuration options, see [InfluxDB configuration options](https://v2.docs.influxdata.com/v2.0/reference/config-options/).
|
||||
To enable tracing or set other InfluxDB configuration options, see [InfluxDB configuration options](/v2.0/reference/config-options/).
|
||||
|
||||
### transformation
|
||||
|
||||
|
@ -1106,4 +1120,4 @@ Related entries: [tsm](#tsm-time-structured-merge-tree)
|
|||
### windowing
|
||||
|
||||
Grouping data based on specified time intervals.
|
||||
For information about how to window in Flux, see [Window and aggregate data with Flux](https://v2.docs.influxdata.com/v2.0/query-data/guides/window-aggregate/).
|
||||
For information about how to window in Flux, see [Window and aggregate data with Flux](/v2.0/query-data/flux/window-aggregate/).
|
||||
|
|
|
@ -163,11 +163,11 @@ A **point** includes the series key, a field value, and a timestamp. For example
|
|||
|
||||
## Bucket
|
||||
|
||||
All InfluxDB data is stored in a bucket. A **bucket** combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. For more information about buckets, see [Manage buckets](https://v2.docs.influxdata.com/v2.0/organizations/buckets/).
|
||||
All InfluxDB data is stored in a bucket. A **bucket** combines the concept of a database and a retention period (the duration of time that each data point persists). A bucket belongs to an organization. For more information about buckets, see [Manage buckets](/v2.0/organizations/buckets/).
|
||||
|
||||
## Organization
|
||||
|
||||
An InfluxDB **organization** is a workspace for a group of [users](/v2.0/users/). All [dashboards](/v2.0/visualize-data/dashboards/), [tasks](/v2.0/process-data/), buckets, and users belong to an organization. For more information about organizations, see [Manage organizations](https://v2.docs.influxdata.com/v2.0/organizations/).
|
||||
An InfluxDB **organization** is a workspace for a group of [users](/v2.0/users/). All [dashboards](/v2.0/visualize-data/dashboards/), [tasks](/v2.0/process-data/), buckets, and users belong to an organization. For more information about organizations, see [Manage organizations](/v2.0/organizations/).
|
||||
|
||||
If you're just starting out, we recommend taking a look at the following guides:
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ InfluxDB 2.0 uses the following columnar table structure to store data:
|
|||
- **Header row:** describes the data labels for each column in a row.
|
||||
- **Data columns:** include the following columns: annotation, result, and table.
|
||||
- **Data rows:** all rows that contain time series data. For details about the type of data stored in InfluxDB, see [InfluxDB data elements](/v2.0/reference/key-concepts/data-elements/).
|
||||
- **Group keys** determine the contents of output tables in Flux by grouping records that share common values in specified columns. Learn more about [grouping your data with Flux](/v2.0/query-data/guides/group-data/).
|
||||
- **Group keys** determine the contents of output tables in Flux by grouping records that share common values in specified columns. Learn more about [grouping your data with Flux](/v2.0/query-data/flux/group-data/).
|
||||
|
||||
For specifications on the InfluxDB 2.0 table structure, see [Tables](/v2.0/reference/syntax/annotated-csv/#tables).
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ See [Get started with Flux](/v2.0/query-data/get-started) to learn more about Fl
|
|||
- Select a bucket to define your data source.
|
||||
- Edit your time range with the [time range option](#select-time-range) in the dropdown menu.
|
||||
- Add filters to narrow your data by selecting attributes or columns in the dropdown menu.
|
||||
- Select **Group** from the **Filter** dropdown menu to group data into tables. For more about how grouping data in Flux works, see [Group data](/v2.0/query-data/guides/group-data/).
|
||||
- Select **Group** from the **Filter** dropdown menu to group data into tables. For more about how grouping data in Flux works, see [Group data](/v2.0/query-data/flux/group-data/).
|
||||
3. Alternatively, click **Script Editor** to manually edit the query.
|
||||
To switch back to the query builder, click **Query Builder**. Note that your updates from the Script Editor will not be saved.
|
||||
4. Use the **Functions** list to review the available Flux functions.
|
||||
|
|
|
@ -54,7 +54,7 @@ List all unique tag values for a specific tag in a specified bucket.
|
|||
The example below lists all unique values of the `host` tag.
|
||||
|
||||
_**Flux package:** [InfluxDB v1](/v2.0/reference/flux/stdlib/influxdb-v1/)_
|
||||
_**Flux functions:** [v1.measurements()](/v2.0/reference/flux/stdlib/influxdb-v1/measurements/)_
|
||||
_**Flux functions:** [v1.tagValues()](/v2.0/reference/flux/stdlib/influxdb-v1/tagvalues/)_
|
||||
|
||||
```js
|
||||
import "influxdata/influxdb/v1"
|
||||
|
|
|
@ -15,7 +15,10 @@
|
|||
{{ if eq $type "articles" }}
|
||||
|
||||
{{ range $pages.ByWeight }}
|
||||
<h3><a href="{{ .RelPermalink }}" >{{ if .Params.list_title }}{{ .Params.list_title }}{{ else }}{{ .Title }}{{ end }}</a></h3>
|
||||
{{ $title := cond ( isset .Params "list_title" ) .Params.list_title .Title }}
|
||||
{{ $url := cond ( isset .Params "external_url" ) .Params.external_url .RelPermalink }}
|
||||
{{ $target := cond ( isset .Params "external_url" ) "_blank" "" }}
|
||||
<h3><a href="{{ $url }}" target="{{ $target }}">{{ $title }}</a></h3>
|
||||
<p>
|
||||
{{- if .Description }}{{- .Description | markdownify -}}
|
||||
{{ else }}{{- .Summary | markdownify -}}
|
||||
|
@ -43,7 +46,18 @@
|
|||
{{ end }}
|
||||
<ul>
|
||||
|
||||
{{ else if (eq $type "list") }}
|
||||
|
||||
<ul>
|
||||
{{ range $pages.ByWeight }}
|
||||
{{ $title := cond ( isset .Params "list_title" ) .Params.list_title .Title }}
|
||||
{{ $url := cond ( isset .Params "external_url" ) .Params.external_url .RelPermalink }}
|
||||
{{ $target := cond ( isset .Params "external_url" ) "_blank" "" }}
|
||||
{{ $note := cond ( isset .Params "list_note" ) (print "<span class='list-note'>" .Params.list_note "</span>") "" }}
|
||||
<li><a href="{{ $url }}" target="{{ $target }}">{{ $title }}</a> {{ $note | markdownify }}</li>
|
||||
{{ end }}
|
||||
<ul>
|
||||
|
||||
{{ end }}
|
||||
|
||||
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
{{ $width := .Get 0 | default "half" }}
|
||||
{{ $_hugo_config := `{ "version": 1 }` }}
|
||||
<div class="flex-container {{ $width }}">
|
||||
{{ .Inner }}
|
||||
</div>
|
|
@ -0,0 +1,4 @@
|
|||
{{ $_hugo_config := `{ "version": 1 }` }}
|
||||
<div class="flex-wrapper">
|
||||
{{ .Inner }}
|
||||
</div>
|
|
@ -0,0 +1,36 @@
|
|||
<svg version="1.1" id="geo-s2-cells-non-strict" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 300 329.19" style="enable-background:new 0 0 300 329.19;" xml:space="preserve">
|
||||
<g>
|
||||
<polygon class="geo-cell" points="170.66,324.46 5.81,293.56 5.81,110.47 170.66,141.37 "/>
|
||||
<polygon class="geo-cell" points="88.24,125.92 5.81,110.47 5.81,18.93 88.24,34.37 "/>
|
||||
<polygon class="geo-cell" points="170.66,141.37 88.24,125.92 88.24,34.37 170.66,49.82 "/>
|
||||
<polygon class="geo-cell" points="253.08,156.82 170.66,141.37 170.66,49.82 253.08,65.27 "/>
|
||||
<polygon class="geo-cell" points="253.08,248.36 170.66,232.91 170.66,141.37 253.08,156.82 "/>
|
||||
<polygon class="geo-cell" points="211.87,286.41 170.66,278.69 170.66,232.91 211.87,240.64 "/>
|
||||
<polygon class="geo-cell" points="253.08,294.14 211.87,286.41 211.87,240.64 253.08,248.36 "/>
|
||||
<polygon class="geo-cell" points="294.29,301.86 253.08,294.14 253.08,248.36 294.29,256.09 "/>
|
||||
<polygon class="geo-cell" points="294.29,256.09 253.08,248.36 253.08,202.59 294.29,210.31 "/>
|
||||
<polygon class="geo-cell" points="294.29,210.31 253.08,202.59 253.08,156.82 294.29,164.54 "/>
|
||||
<polygon class="geo-cell" points="294.29,164.54 253.08,156.82 253.08,111.04 294.29,118.77 "/>
|
||||
<polygon class="geo-cell" points="294.29,118.77 253.08,111.04 253.08,65.27 294.29,72.99 "/>
|
||||
<polygon class="geo-cell" points="294.29,72.99 253.08,65.27 253.08,19.5 294.29,27.22 "/>
|
||||
<polygon class="geo-cell" points="253.08,65.27 211.87,57.55 211.87,11.77 253.08,19.5 "/>
|
||||
<polygon class="geo-cell" points="211.87,57.55 170.66,49.82 170.66,4.05 211.87,11.77 "/>
|
||||
</g>
|
||||
<rect x="40.85" y="53.82" class="geo-region" width="218.41" height="218.41"/>
|
||||
<circle class="geo-point" cx="111.31" cy="80.8" r="4.81"/>
|
||||
<circle class="geo-point" cx="108.65" cy="199.68" r="4.81"/>
|
||||
<circle class="geo-point" cx="111.31" cy="281.83" r="4.81"/>
|
||||
<circle class="geo-point" cx="40.85" cy="235.82" r="4.81"/>
|
||||
<circle class="geo-point" cx="207.05" cy="111.04" r="4.81"/>
|
||||
<circle class="geo-point" cx="191.26" cy="128.98" r="4.81"/>
|
||||
<circle class="geo-point" cx="151.74" cy="243.55" r="4.81"/>
|
||||
<circle class="geo-point" cx="237.29" cy="256.09" r="4.81"/>
|
||||
<circle class="geo-point" cx="243.06" cy="232.91" r="4.81"/>
|
||||
<circle class="geo-point" cx="283.31" cy="289.32" r="4.81"/>
|
||||
<circle class="geo-point" cx="24.41" cy="272.2" r="4.81"/>
|
||||
<circle class="geo-point" cx="191.26" cy="113.95" r="4.81"/>
|
||||
<circle class="geo-point" cx="180.21" cy="16.59" r="4.81"/>
|
||||
<circle class="geo-point" cx="270.53" cy="181.38" r="4.81"/>
|
||||
<circle class="geo-point" cx="270.53" cy="49.82" r="4.81"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.6 KiB |
|
@ -0,0 +1,30 @@
|
|||
<svg version="1.1" id="geo-s2-cells-strict" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 300 329.19" style="enable-background:new 0 0 300 329.19;" xml:space="preserve">
|
||||
<g>
|
||||
<polygon class="geo-cell" points="170.66,324.46 5.81,293.56 5.81,110.47 170.66,141.37 "/>
|
||||
<polygon class="geo-cell" points="88.24,125.92 5.81,110.47 5.81,18.93 88.24,34.37 "/>
|
||||
<polygon class="geo-cell" points="170.66,141.37 88.24,125.92 88.24,34.37 170.66,49.82 "/>
|
||||
<polygon class="geo-cell" points="253.08,156.82 170.66,141.37 170.66,49.82 253.08,65.27 "/>
|
||||
<polygon class="geo-cell" points="253.08,248.36 170.66,232.91 170.66,141.37 253.08,156.82 "/>
|
||||
<polygon class="geo-cell" points="211.87,286.41 170.66,278.69 170.66,232.91 211.87,240.64 "/>
|
||||
<polygon class="geo-cell" points="253.08,294.14 211.87,286.41 211.87,240.64 253.08,248.36 "/>
|
||||
<polygon class="geo-cell" points="294.29,301.86 253.08,294.14 253.08,248.36 294.29,256.09 "/>
|
||||
<polygon class="geo-cell" points="294.29,256.09 253.08,248.36 253.08,202.59 294.29,210.31 "/>
|
||||
<polygon class="geo-cell" points="294.29,210.31 253.08,202.59 253.08,156.82 294.29,164.54 "/>
|
||||
<polygon class="geo-cell" points="294.29,164.54 253.08,156.82 253.08,111.04 294.29,118.77 "/>
|
||||
<polygon class="geo-cell" points="294.29,118.77 253.08,111.04 253.08,65.27 294.29,72.99 "/>
|
||||
<polygon class="geo-cell" points="294.29,72.99 253.08,65.27 253.08,19.5 294.29,27.22 "/>
|
||||
<polygon class="geo-cell" points="253.08,65.27 211.87,57.55 211.87,11.77 253.08,19.5 "/>
|
||||
<polygon class="geo-cell" points="211.87,57.55 170.66,49.82 170.66,4.05 211.87,11.77 "/>
|
||||
</g>
|
||||
<rect x="40.85" y="53.82" class="geo-region" width="218.41" height="218.41"/>
|
||||
<circle class="geo-point" cx="111.31" cy="80.8" r="4.81"/>
|
||||
<circle class="geo-point" cx="108.65" cy="199.68" r="4.81"/>
|
||||
<circle class="geo-point" cx="40.85" cy="235.82" r="4.81"/>
|
||||
<circle class="geo-point" cx="207.05" cy="111.04" r="4.81"/>
|
||||
<circle class="geo-point" cx="191.26" cy="128.98" r="4.81"/>
|
||||
<circle class="geo-point" cx="151.74" cy="243.55" r="4.81"/>
|
||||
<circle class="geo-point" cx="237.29" cy="256.09" r="4.81"/>
|
||||
<circle class="geo-point" cx="243.06" cy="232.91" r="4.81"/>
|
||||
<circle class="geo-point" cx="191.26" cy="113.95" r="4.81"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
Loading…
Reference in New Issue