Merge branch 'master' into beta-14

pull/1191/head
noramullen1 2020-07-08 14:19:48 -07:00 committed by GitHub
commit 91c849dee0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
93 changed files with 1838 additions and 206 deletions

View File

@ -546,6 +546,18 @@ The following options are available:
- third
- quarter
### Tooltips
Use the `{{< tooltips >}}` shortcode to add tooltips to text.
The **1st** argument is the text shown in the tooltip.
The **2nd** argument is the highlighted text that triggers the tooltip.
```md
I like {{< tooltip "Butterflies are awesome!" "butterflies" >}}.
```
The example above renders as "I like butterflies" with "butterflies" highlighted.
When you hover over "butterflies," a tooltip appears with the text: "Butterflies are awesome!"
### Reference content
The InfluxDB documentation is "task-based," meaning content primarily focuses on
what a user is **doing**, not what they are **using**.

View File

@ -58,7 +58,18 @@ function storeUrl(newUrl, prevUrl) {
Cookies.set('influxdb_url', newUrl)
}
// Preserver URLs in codeblocks that come just after or are inside a div
// Store custom URL session cookie influxdb_custom_url
function storeCustomUrl(customUrl) {
Cookies.set('influxdb_custom_url', customUrl)
$('input#custom[type=radio]').val(customUrl)
}
// Remove custom URL session cookie influxdb_custom_url
function removeCustomUrl() {
Cookies.remove('influxdb_custom_url')
}
// Preserve URLs in codeblocks that come just after or are inside a div
// with the class, .keep-url
function addPreserve() {
$('.keep-url').each(function () {
@ -88,9 +99,6 @@ updateUrls(defaultUrl, getUrl())
// Append URL selector buttons to code blocks
appendUrlSelector(getUrl())
// Set active radio button on page load
setRadioButton(getUrl())
// Update URLs whenever you focus on the browser tab
$(window).focus(function() {
updateUrls(getPrevUrl(), getUrl())
@ -115,3 +123,51 @@ $('button.url-trigger, #callout-url-selector .close').click(function() {
$('#callout-url-selector').fadeOut(200)
}
})
///////////////////////////////// CUSTOM URLs /////////////////////////////////
// Trigger radio button on custom URL field focus
$('input#custom-url-field').focus(function(e) {
$('input#custom[type="radio"]').trigger('click')
})
$("#custom-url").submit(function(e) {
e.preventDefault();
$('#modal-close').trigger('click')
});
// Store the custom InfluxDB URL when exiting the field
$('#custom-url-field').blur(function() {
custUrl = $(this).val()
if (custUrl.length > 0 ) {
storeCustomUrl(custUrl)
updateUrls(getUrl(), custUrl)
storeUrl(custUrl, getPrevUrl())
} else {
$('input#custom').val('http://example.com:8080')
removeCustomUrl();
$('input[name="influxdb-loc"][value="' + defaultUrl + '"]').trigger('click')
}
})
// Populate the custom InfluxDB URL field on page load
if ( Cookies.get('influxdb_custom_url') != undefined ) {
$('input#custom').val(Cookies.get('influxdb_custom_url'))
$('#custom-url-field').val(Cookies.get('influxdb_custom_url'))
}
// Set active radio button on page load
setRadioButton(getUrl())
/////////////////////////// Dynamically update URLs ///////////////////////////
// Extract the protocol and hostname of referrer
referrerHost = document.referrer.match(/^(?:[^\/]*\/){2}[^\/]+/g)[0]
// Check if the referrerHost is one of the cloud URLs
// cloudUrls is built dynamically in layouts/partials/footer/javascript.html
if (cloudUrls.includes(referrerHost)) {
storeUrl(referrerHost, getUrl())
updateUrls(getPrevUrl(), referrerHost)
setRadioButton(referrerHost)
}

View File

@ -136,6 +136,42 @@
}
}
li.custom {
display: flex;
align-items: center;
}
#custom-url {
display: inline-block;
width: 100%;
padding-left: .5rem;
input {
&#custom-url-field {
font-family: $rubik;
font-weight: $medium;
background: $modal-field-bg;
border-radius: $radius;
border: 1px solid $sidebar-search-bg;
padding: .5em;
width: 100%;
color: $sidebar-search-text;
transition-property: border, box-shadow;
transition-duration: .2s;
box-shadow: 2px 2px 6px $sidebar-search-shadow;
&:focus {
outline: none;
border-color: $sidebar-search-highlight;
box-shadow: 1px 1px 10px rgba($sidebar-search-highlight, .5);
border-radius: $radius;
}
&::placeholder {
color: rgba($sidebar-search-text, .45);
font-weight: normal;
font-style: italic;
}
}
}
}
.radio {
position: relative;
display: inline-block;

View File

@ -22,5 +22,5 @@
"layouts/algolia-search-overrides",
"layouts/landing",
"layouts/error-page",
"layouts/cloud-selector",
"layouts/url-selector",
"layouts/feature-callouts";

View File

@ -182,6 +182,9 @@ $tooltip-color-alt: $br-chartreuse;
$tooltip-bg: $br-chartreuse;
$tooltip-text: $g2-kevlar;
// URL Modal colors
$modal-field-bg: $g1-raven;
// SVG colors
$svg-table-header: $g6-smoke;
$svg-table-stroke: $g0-obsidian;

View File

@ -182,6 +182,9 @@ $tooltip-color-alt: $p-twilight !default;
$tooltip-bg: $p-amethyst !default;
$tooltip-text: $g20-white !default;
// URL Modal colors
$modal-field-bg: $g20-white !default;
// SVG colors
$svg-table-header: $g15-platinum !default;
$svg-table-stroke: $g7-graphite !default;

View File

@ -572,7 +572,7 @@ and [Manually update Telegraf configurations](/v2.0/write-data/use-telegraf/manu
#### Scrape data
**InfluxDB OSS** lets you scrape Prometheus-formatted metrics from HTTP endpoints.
For details, see [Scrape data](/v2.0/write-data/scrape-data/).
For details, see [Scrape data](/v2.0/write-data/no-code/scrape-data/).
#### API, CLI, and client libraries
@ -607,7 +607,7 @@ See [Monitor and alert](/v2.0/monitor-alert/).
{{< cloud-name >}} is API-compatible and functionally compatible with InfluxDB OSS 2.0.
The primary differences between InfluxDB OSS 2.0 and InfluxDB Cloud 2.0 are:
- [InfluxDB scrapers](/v2.0/write-data/scrape-data/) that collect data from specified
- [InfluxDB scrapers](/v2.0/write-data/no-code/scrape-data/) that collect data from specified
targets are not available in {{< cloud-name "short" >}}.
- {{< cloud-name "short" >}} instances are currently limited to a single organization.

View File

@ -50,11 +50,6 @@ In **InfluxDB Cloud**, your user account is an organization.
4. Export the template _(see [below](#export-a-template))_.
{{% warn %}}
InfluxDB templates do not support the [table visualization type](/v2.0/visualize-data/visualization-types/table/).
Dashboard cells that use table visualization are not included in exported templates.
{{% /warn %}}
## Export a template
Do one of the following to export a template:

View File

@ -9,15 +9,20 @@ menu:
weight: 202
---
## View buckets in the InfluxDB UI
## View a list of buckets
### View buckets in the InfluxDB UI
1. In the navigation menu on the left, select **Data (Load Data)** > **Buckets**.
{{< nav-icon "data" >}}
2. Click a bucket to open it **Data Explorer**.
A list of buckets with their retention policies and IDs appears.
## View buckets using the influx CLI
2. Click a bucket to open it in the **Data Explorer**.
3. Click the bucket ID to copy it to the clipboard.
### View buckets using the influx CLI
Use the [`influx bucket list` command](/v2.0/reference/cli/influx/bucket/list)
to view a buckets in an organization.

View File

@ -3,7 +3,7 @@ title: Calculate the increase
seotitle: Calculate the increase in Flux
list_title: Increase
description: >
Use the [`increase()` function](/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/increase/)
Use the [`increase()` function](/v2.0/reference/flux/stdlib/built-in/transformations/increase/)
to track increases across multiple columns in a table.
This function is especially useful when tracking changes in counter values that
wrap over time or periodically reset.
@ -18,7 +18,7 @@ related:
list_query_example: increase
---
Use the [`increase()` function](/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/increase/)
Use the [`increase()` function](/v2.0/reference/flux/stdlib/built-in/transformations/increase/)
to track increases across multiple columns in a table.
This function is especially useful when tracking changes in counter values that
wrap over time or periodically reset.

View File

@ -16,7 +16,7 @@ menu:
name: Rate
v2.0/tags: [query, rate]
related:
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/derivative/
- /v2.0/reference/flux/stdlib/built-in/transformations/derivative/
- /v2.0/reference/flux/stdlib/experimental/aggregate/rate/
list_query_example: rate_of_change
---

View File

@ -4,7 +4,8 @@ seotitle: Query SQL data sources with InfluxDB
list_title: Query SQL data
description: >
The Flux `sql` package provides functions for working with SQL data sources.
Use `sql.from()` to query SQL databases like PostgreSQL, MySQL, Snowflake, and SQLite.
Use `sql.from()` to query SQL databases like PostgreSQL, MySQL, Snowflake,
SQLite, Microsoft SQL Server, and Amazon Athena.
v2.0/tags: [query, flux, sql]
menu:
v2_0:
@ -30,8 +31,10 @@ list_code_example: |
The [Flux](/v2.0/reference/flux) `sql` package provides functions for working with SQL data sources.
[`sql.from()`](/v2.0/reference/flux/stdlib/sql/from/) lets you query SQL data sources
like [PostgreSQL](https://www.postgresql.org/), [MySQL](https://www.mysql.com/),
[Snowflake](https://www.snowflake.com/), and [SQLite](https://www.sqlite.org/index.html),
and use the results with InfluxDB dashboards, tasks, and other operations.
[Snowflake](https://www.snowflake.com/), [SQLite](https://www.sqlite.org/index.html),
[Microsoft SQL Server](https://www.microsoft.com/en-us/sql-server/default.aspx),
and [Amazon Athena](https://aws.amazon.com/athena/) and use the results with
InfluxDB dashboards, tasks, and other operations.
- [Query a SQL data source](#query-a-sql-data-source)
- [Join SQL data with data in InfluxDB](#join-sql-data-with-data-in-influxdb)
@ -57,6 +60,7 @@ To query a SQL data source:
[MySQL](#)
[Snowflake](#)
[SQLite](#)
[SQL Server](#)
{{% /code-tabs %}}
{{% code-tab-content %}}
@ -110,6 +114,21 @@ sql.from(
)
```
{{% /code-tab-content %}}
{{% code-tab-content %}}
```js
import "sql"
sql.from(
driverName: "sqlserver",
dataSourceName: "sqlserver://user:password@localhost:1234?database=examplebdb",
query: "GO SELECT * FROM Example.Table"
)
```
_For information about authenticating with SQL Server using ADO-style parameters,
see [SQL Server ADO authentication](/v2.0/reference/flux/stdlib/sql/from/#sql-server-ado-authentication)._
{{% /code-tab-content %}}
{{< /code-tabs-wrapper >}}
_See the [`sql.from()` documentation](/v2.0/reference/flux/stdlib/sql/from/) for

View File

@ -27,6 +27,10 @@ reduce the amount of memory necessary to run a query.
- [range()](/v2.0/reference/flux/stdlib/built-in/transformations/range/)
- [filter()](/v2.0/reference/flux/stdlib/built-in/transformations/filter/)
- [group()](/v2.0/reference/flux/stdlib/built-in/transformations/group/)
- [count()](/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/count/)
- [sum()](/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/sum/)
- [first()](/v2.0/reference/flux/stdlib/built-in/transformations/selectors/first/)
- [last()](/v2.0/reference/flux/stdlib/built-in/transformations/selectors/last/)
Use pushdown functions at the beginning of your query.
Once a non-pushdown function runs, Flux pulls data into memory and runs all

View File

@ -19,8 +19,23 @@ and includes absolute time ranges using the provided `--now` time.
influx transpile [InfluxQL query] [flags]
```
{{% note %}}
The InfluxQL query must be valid and contain both a database and measurement.
See the [InfluxQL documentation](https://docs.influxdata.com/influxdb/latest/query_language/) for more information.
{{% /note %}}
## Flags
| Flag | | Description |
|:---- |:--- |:----------- |
| `-h` | `--help` | Help for the `transpile` command |
| | `--now` | RFC3339Nano timestamp to use as `now()` time (default is current UTC time) |
## Examples
```sh
## Transpile an InfluxQL query that specifies the database,
## retention policy, and measurement.
influx transpile 'SELECT example-field FROM db.rp.measurement'
## Transpile InfluxQL query using default retention policy
influx transpile 'SELECT example-field FROM db..measurement'
```

View File

@ -12,7 +12,7 @@ related:
- /v2.0/reference/flux/stdlib/system/time/
---
The `now()` function returns the current time (UTC).
The `now()` function returns the current time (UTC) or the time defined in the `now` option.
_**Function type:** Date/Time_
_**Output data type:** Time_
@ -22,11 +22,21 @@ now()
```
## Examples
##### Use the current UTC time as a query boundary
```js
data
|> range(start: -10h, stop: now())
```
##### Return the now option time
```js
option now = () => 2020-01-01T00:00:00Z
now()
// Returns 2020-01-01T00:00:00.000000000Z
```
{{% note %}}
#### now() vs system.time()
`now()` returns the current UTC time.

View File

@ -1,7 +1,9 @@
---
title: Flux built-in aggregate functions
list_title: Built-in aggregate functions
description: Flux's built-in aggregate functions take values from an input table and aggregate them in some way.
title: Flux built-in aggregate transformations
list_title: Built-in aggregate transformations
description: >
Flux's aggregate transformations take values from an input table and aggregate them in some way.
Output tables contain a single row with the aggregated value.
aliases:
- /v2.0/reference/flux/functions/transformations/aggregates
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/
@ -16,8 +18,8 @@ related:
- /v2.0/query-data/flux/window-aggregate/
---
Flux's built-in aggregate functions take values from an input table and aggregate them in some way.
The output table contains a single row with the aggregated value.
Flux's built-in aggregate transformations take values from an input table and aggregate them in some way.
Output tables contain a single row with the aggregated value.
Aggregate operations output a table for every input table they receive.
You must provide a column to aggregate.

View File

@ -24,7 +24,7 @@ count(column: "_value")
```
{{% note %}}
#### Count empty tables
#### Empty tables
`count()` returns `0` for empty tables.
To keep empty tables in your data, set the following parameters for the following functions:

View File

@ -27,6 +27,11 @@ If there are multiple modes, it returns all of them in a sorted table.
Mode only considers non-null values.
If there is no mode, `mode()` returns `null`.
{{% warn %}}
#### Empty tables
`mode()` drops empty tables.
{{% /warn %}}
##### Supported data types
- String

View File

@ -5,11 +5,12 @@ description: >
developed by Tushar Chande.
aliases:
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/chandemomentumoscillator/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/chandemomentumoscillator/
menu:
v2_0_ref:
name: chandeMomentumOscillator
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
related:
- https://docs.influxdata.com/influxdb/latest/query_language/functions/#triple-exponential-moving-average, InfluxQL CHANDE_MOMENTUM_OSCILLATOR()
---
@ -17,7 +18,7 @@ related:
The `chandeMomentumOscillator()` function applies the technical momentum indicator
developed by Tushar Chande.
_**Function type:** Aggregate_
_**Function type:** Transformation_
```js
chandeMomentumOscillator(
@ -45,10 +46,16 @@ Defaults to `["_value"]`.
_**Data type: Array of Strings**_
## Output tables
For each input table with `x` rows, `chandeMomentumOscillator()` outputs a table
with `x - n` rows.
## Examples
#### Table transformation with a ten point Chande Momentum Oscillator
{{< flex >}}
{{% flex-content %}}
###### Input table
| _time | _value |
|:-----:|:------:|
@ -81,7 +88,9 @@ _**Data type: Array of Strings**_
| 0027 | 3 |
| 0028 | 2 |
| 0029 | 1 |
{{% /flex-content %}}
{{% flex-content %}}
###### Query
```js
// ...
@ -110,3 +119,5 @@ _**Data type: Array of Strings**_
| 0027 | -100 |
| 0028 | -100 |
| 0029 | -100 |
{{% /flex-content %}}
{{< /flex >}}

View File

@ -4,17 +4,18 @@ description: The `cov()` function computes the covariance between two streams by
aliases:
- /v2.0/reference/flux/functions/transformations/aggregates/cov
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/cov/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/cov/
menu:
v2_0_ref:
name: cov
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
---
The `cov()` function computes the covariance between two streams by first joining the streams,
then performing the covariance operation.
_**Function type:** Aggregate
_**Function type:** Transformation_
_**Output data type:** Float_
```js

View File

@ -4,16 +4,17 @@ description: The `covariance()` function computes the covariance between two col
aliases:
- /v2.0/reference/flux/functions/transformations/aggregates/covariance
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/covariance/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/covariance/
menu:
v2_0_ref:
name: covariance
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
---
The `covariance()` function computes the covariance between two columns.
_**Function type:** Aggregate_
_**Function type:** Transformation_
_**Output data type:** Float_
```js

View File

@ -7,8 +7,10 @@ aliases:
menu:
v2_0_ref:
name: derivative
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
aliases:
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/derivative
related:
- /v2.0/query-data/flux/rate/
- https://docs.influxdata.com/influxdb/latest/query_language/functions/#derivative, InfluxQL DERIVATIVE()
@ -18,13 +20,13 @@ The `derivative()` function computes the rate of change per [`unit`](#unit) of t
It assumes rows are ordered by the `_time` column.
The output table schema is the same as the input table.
_**Function type:** Aggregate_
_**Function type:** Transformation_
_**Output data type:** Float_
```js
derivative(
unit: 1s,
nonNegative: false,
nonNegative: true,
columns: ["_value"],
timeSrc: "_time"
)
@ -39,8 +41,9 @@ Defaults to `1s`.
_**Data type:** Duration_
### nonNegative
Indicates if the derivative is allowed to be negative.
When set to `true`, if a value is less than the previous value, it is assumed the previous value should have been a zero.
Indicates if the derivative is allowed to be negative. Default is `true`.
When `true`, if a value is less than the previous value, it is assumed the
previous value should have been a zero.
_**Data type:** Boolean_
@ -56,6 +59,9 @@ Defaults to `"_time"`.
_**Data type:** String_
## Output tables
For each input table with `n` rows, `derivative()` outputs a table with `n - 1` rows.
## Examples
```js
from(bucket: "example-bucket")

View File

@ -7,8 +7,10 @@ aliases:
menu:
v2_0_ref:
name: difference
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
aliases:
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/difference
related:
- https://docs.influxdata.com/influxdb/latest/query_language/functions/#difference, InfluxQL  DIFFERENCE()
---
@ -16,7 +18,7 @@ related:
The `difference()` function computes the difference between subsequent records.
The user-specified columns of numeric type are subtracted while others are kept intact.
_**Function type:** Aggregate_
_**Function type:** Transformation_
_**Output data type:** Float_
```js
@ -55,6 +57,8 @@ _**Data type:** Boolean_
- Some value `v` minus `null` is `v` minus the last non-null value seen before `v`;
or `null` if `v` is the first non-null value seen.
## Output tables
For each input table with `n` rows, `difference()` outputs a table with `n - 1` rows.
## Examples

View File

@ -6,16 +6,17 @@ description: >
the rate of `exponentialMovingAverage()`.
aliases:
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/doubleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/doubleema/
menu:
v2_0_ref:
name: doubleEMA
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
related:
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/movingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/tripleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/timedmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/exponentialmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/movingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/tripleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/timedmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/exponentialmovingaverage/
- https://docs.influxdata.com/influxdb/latest/query_language/functions/#double-exponential-moving-average, InfluxQL DOUBLE_EXPONENTIAL_MOVING_AVERAGE()
---
@ -23,7 +24,7 @@ The `doubleEMA()` function calculates the exponential moving average of values i
the `_value` column grouped into `n` number of points, giving more weight to recent
data at double the rate of [`exponentialMovingAverage()`](/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/exponentialmovingaverage/).
_**Function type:** Aggregate_
_**Function type:** Transformation_
```js
doubleEMA(n: 5)

View File

@ -5,16 +5,17 @@ description: >
in the `_value` column grouped into `n` number of points, giving more weight to recent data.
aliases:
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/exponentialmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/exponentialmovingaverage/
menu:
v2_0_ref:
name: exponentialMovingAverage
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
related:
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/movingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/timedmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/doubleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/tripleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/movingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/timedmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/doubleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/tripleema/
- https://docs.influxdata.com/influxdb/latest/query_language/functions/#exponential-moving-average, InfluxQL EXPONENTIAL_MOVING_AVERAGE()
---

View File

@ -32,6 +32,19 @@ group(columns: ["_time"], mode:"except")
group()
```
{{% warn %}}
#### Group does not guarantee sort order
`group()` does not guarantee the sort order of output records.
To ensure data is sorted correctly, use [`sort()`](/v2.0/reference/flux/stdlib/built-in/transformations/sort/)
after `group()`.
```js
data
|> group()
|> sort(columns: ["_time"])
```
{{% /warn %}}
## Parameters
### columns

View File

@ -5,18 +5,19 @@ description: >
aliases:
- /v2.0/reference/flux/functions/transformations/aggregates/holtwinters
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/holtwinters/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/holtwinters/
menu:
v2_0_ref:
name: holtWinters
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
related:
- https://docs.influxdata.com/influxdb/latest/query_language/functions/#holt-winters, InfluxQL HOLT_WINTERS()
---
The `holtWinters()` function applies the Holt-Winters forecasting method to input tables.
_**Function type:** Aggregate_
_**Function type:** Transformation_
_**Output data type:** Float_
```js

View File

@ -6,11 +6,12 @@ description: >
aliases:
- /v2.0/reference/flux/functions/transformations/aggregates/increase
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/increase/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/increase/
menu:
v2_0_ref:
name: increase
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
related:
- /v2.0/query-data/flux/increase/
---
@ -22,7 +23,7 @@ when they hit a threshold or are reset.
In the case of a wrap/reset, we can assume that the absolute delta between two
points will be at least their non-negative difference.
_**Function type:** Aggregate_
_**Function type:** Transformation_
_**Output data type:** Float_
```js
@ -37,6 +38,9 @@ Defaults to `["_value"]`.
_**Data type:** Array of strings_
## Output tables
For each input table with `n` rows, `derivative()` outputs a table with `n - 1` rows.
## Examples
```js
from(bucket: "example-bucket")
@ -48,6 +52,8 @@ from(bucket: "example-bucket")
|> increase()
```
{{< flex >}}
{{% flex-content %}}
Given the following input table:
| _time | _value |
@ -56,7 +62,8 @@ Given the following input table:
| 00002 | 5 |
| 00003 | 3 |
| 00004 | 4 |
{{% /flex-content %}}
{{% flex-content %}}
`increase()` produces the following table:
| _time | _value |
@ -64,6 +71,8 @@ Given the following input table:
| 00002 | 4 |
| 00003 | 4 |
| 00004 | 5 |
{{% /flex-content %}}
{{< /flex >}}
## Function definition
```js

View File

@ -5,20 +5,21 @@ description: >
using values in an input table.
aliases:
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/kaufmansama/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/kaufmansama/
menu:
v2_0_ref:
name: kaufmansAMA
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
related:
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/kaufmanser/
- /v2.0/reference/flux/stdlib/built-in/transformations/kaufmanser/
- https://docs.influxdata.com/influxdb/latest/query_language/functions/#kaufmans-adaptive-moving-average, InfluxQL KAUFMANS_ADAPTIVE_MOVING_AVERAGE()
---
The `kaufmansAMA()` function calculates the Kaufman's Adaptive Moving Average (KAMA)
using values in an input table.
_**Function type:** Aggregate_
_**Function type:** Transformation_
```js
kaufmansAMA(

View File

@ -5,13 +5,14 @@ description: >
values in an input table.
aliases:
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/kaufmanser/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/kaufmanser/
menu:
v2_0_ref:
name: kaufmansER
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
related:
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/kaufmansama/
- /v2.0/reference/flux/stdlib/built-in/transformations/kaufmansama/
- https://docs.influxdata.com/influxdb/latest/query_language/functions/#kaufmans-efficiency-ratio, InfluxQL KAUFMANS_EFFICIENCY_RATIO()
---
@ -19,7 +20,7 @@ The `kaufmansER()` function calculates the Kaufman's Efficiency Ratio (KER) usin
values in an input table.
The function operates on the `_value` column.
_**Function type:** Aggregate_
_**Function type:** Transformation_
```js
kaufmansER(n: 10)

View File

@ -4,24 +4,25 @@ description: >
The `movingAverage()` function calculates the mean of values grouped into `n` number of points.
aliases:
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/movingaverage/
- /v2.0/reference/flux/functions/built-in/transformations/movingaverage/
menu:
v2_0_ref:
name: movingAverage
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
related:
- /v2.0/query-data/flux/moving-average/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/timedmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/exponentialmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/doubleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/tripleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/timedmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/exponentialmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/doubleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/tripleema/
- https://docs.influxdata.com/influxdb/latest/query_language/functions/#moving-average, InfluxQL MOVING_AVERAGE()
---
The `movingAverage()` function calculates the mean of values in the `_values` column
grouped into `n` number of points.
_**Function type:** Aggregate_
_**Function type:** Transformation_
```js
movingAverage(n: 5)

View File

@ -4,17 +4,18 @@ description: The `pearsonr()` function computes the Pearson R correlation coeffi
aliases:
- /v2.0/reference/flux/functions/transformations/aggregates/pearsonr
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/pearsonr/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/pearsonr/
menu:
v2_0_ref:
name: pearsonr
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
---
The `pearsonr()` function computes the Pearson R correlation coefficient between two streams
by first joining the streams, then performing the covariance operation normalized to compute R.
_**Function type:** Aggregate_
_**Function type:** Transformation_
_**Output data type:** Float_
```js

View File

@ -5,22 +5,23 @@ description: >
values in an input table.
aliases:
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/relativestrengthindex/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/relativestrengthindex/
menu:
v2_0_ref:
name: relativeStrengthIndex
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
related:
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/movingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/timedmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/exponentialmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/movingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/timedmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/exponentialmovingaverage/
- https://docs.influxdata.com/influxdb/latest/query_language/functions/#relative-strength-index, InfluxQL RELATIVE_STRENGTH_INDEX()
---
The `relativeStrengthIndex()` function measures the relative speed and change of
values in an input table.
_**Function type:** Aggregate_
_**Function type:** Transformation_
```js
relativeStrengthIndex(
@ -50,6 +51,10 @@ Columns to operate on. _Defaults to `["_value"]`_.
_**Data type:** Array of Strings_
## Output tables
For each input table with `x` rows, `relativeStrengthIndex()` outputs a table
with `x - n` rows.
## Examples
#### Calculate a five point relative strength index
@ -61,6 +66,8 @@ from(bucket: "example-bucket"):
#### Table transformation with a ten point RSI
{{< flex >}}
{{% flex-content %}}
###### Input table:
| _time | A | B | tag |
|:-----:|:----:|:----:|:---:|
@ -82,7 +89,8 @@ from(bucket: "example-bucket"):
| 0016 | 16 | 16 | tv |
| 0017 | 17 | null | tv |
| 0018 | 18 | 17 | tv |
{{% /flex-content %}}
{{% flex-content %}}
###### Query:
```js
// ...
@ -103,3 +111,5 @@ from(bucket: "example-bucket"):
| 0016 | 90 | 90 | tv |
| 0017 | 81 | 90 | tv |
| 0018 | 72.9 | 81 | tv |
{{% flex-content %}}
{{< /flex >}}

View File

@ -22,6 +22,11 @@ _**Output data type:** Object_
bottom(n:10, columns: ["_value"])
```
{{% warn %}}
#### Empty tables
`bottom()` drops empty tables.
{{% /warn %}}
## Parameters
### n

View File

@ -24,6 +24,11 @@ _**Output data type:** Object_
distinct(column: "host")
```
{{% warn %}}
#### Empty tables
`distinct()` drops empty tables.
{{% /warn %}}
## Parameters
### column

View File

@ -23,6 +23,11 @@ _**Output data type:** Object_
first()
```
{{% warn %}}
#### Empty tables
`first()` drops empty tables.
{{% /warn %}}
## Examples
```js
from(bucket:"example-bucket")

View File

@ -24,6 +24,11 @@ highestAverage(
)
```
{{% warn %}}
#### Empty tables
`highestAverage()` drops empty tables.
{{% /warn %}}
## Parameters
### n

View File

@ -24,6 +24,11 @@ highestCurrent(
)
```
{{% warn %}}
#### Empty tables
`highestCurrent()` drops empty tables.
{{% /warn %}}
## Parameters
### n

View File

@ -24,6 +24,11 @@ highestMax(
)
```
{{% warn %}}
#### Empty tables
`highestMax()` drops empty tables.
{{% /warn %}}
## Parameters
### n

View File

@ -23,6 +23,11 @@ _**Output data type:** Object_
last()
```
{{% warn %}}
#### Empty tables
`last()` drops empty tables.
{{% /warn %}}
## Examples
```js
from(bucket:"example-bucket")

View File

@ -24,6 +24,11 @@ lowestAverage(
)
```
{{% warn %}}
#### Empty tables
`lowestAverage()` drops empty tables.
{{% /warn %}}
## Parameters
### n

View File

@ -24,6 +24,11 @@ lowestCurrent(
)
```
{{% warn %}}
#### Empty tables
`lowestCurrent()` drops empty tables.
{{% /warn %}}
## Parameters
### n

View File

@ -24,6 +24,11 @@ lowestMin(
)
```
{{% warn %}}
#### Empty tables
`lowestMin()` drops empty tables.
{{% /warn %}}
## Parameters
### n

View File

@ -22,6 +22,11 @@ _**Output data type:** Object_
max(column: "_value")
```
{{% warn %}}
#### Empty tables
`max()` drops empty tables.
{{% /warn %}}
## Parameters
### column

View File

@ -22,6 +22,11 @@ _**Output data type:** Object_
min(column: "_value")
```
{{% warn %}}
#### Empty tables
`min()` drops empty tables.
{{% /warn %}}
## Parameters
### column

View File

@ -22,6 +22,11 @@ _**Output data type:** Object_
sample(n:5, pos: -1)
```
{{% warn %}}
#### Empty tables
`sample()` drops empty tables.
{{% /warn %}}
## Parameters
### n

View File

@ -20,6 +20,11 @@ _**Output data type:** Object_
top(n:10, columns: ["_value"])
```
{{% warn %}}
#### Empty tables
`top()` drops empty tables.
{{% /warn %}}
## Parameters
### n

View File

@ -21,6 +21,11 @@ _**Output data type:** Object_
unique(column: "_value")
```
{{% warn %}}
#### Empty tables
`unique()` drops empty tables.
{{% /warn %}}
## Parameters
### column

View File

@ -5,23 +5,24 @@ description: >
range at a specified frequency.
aliases:
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/timedmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/timedmovingaverage/
menu:
v2_0_ref:
name: timedMovingAverage
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
related:
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/movingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/exponentialmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/doubleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/tripleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/movingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/exponentialmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/doubleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/tripleema/
- https://docs.influxdata.com/influxdb/latest/query_language/functions/#moving-average, InfluxQL MOVING_AVERAGE()
---
The `timedMovingAverage()` function calculates the mean of values in a defined time
range at a specified frequency.
_**Function type:** Aggregate_
_**Function type:** Transformation_
```js
timedMovingAverage(

View File

@ -6,16 +6,17 @@ description: >
than `exponentialMovingAverage()` and `doubleEMA()`.
aliases:
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/tripleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/tripleema/
menu:
v2_0_ref:
name: tripleEMA
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
related:
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/movingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/doubleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/timedmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/exponentialmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/movingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/doubleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/timedmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/exponentialmovingaverage/
- https://docs.influxdata.com/influxdb/latest/query_language/functions/#triple-exponential-moving-average, InfluxQL TRIPLE_EXPONENTIAL_MOVING_AVERAGE()
---
@ -25,7 +26,7 @@ data with less lag than
[`exponentialMovingAverage()`](/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/exponentialmovingaverage/)
and [`doubleEMA()`](/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/doubleema/).
_**Function type:** Aggregate_
_**Function type:** Transformation_
```js
tripleEMA(n: 5)

View File

@ -5,18 +5,19 @@ description: >
derivative (TRIX) of input tables using `n` points.
aliases:
- /v2.0/reference/flux/functions/built-in/transformations/aggregates/tripleexponentialderivative/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/tripleexponentialderivative/
menu:
v2_0_ref:
name: tripleExponentialDerivative
parent: built-in-aggregates
weight: 501
parent: built-in-transformations
weight: 402
v2.0/tags: [technical analysis]
related:
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/movingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/doubleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/tripleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/timedmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/aggregates/exponentialmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/movingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/doubleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/tripleema/
- /v2.0/reference/flux/stdlib/built-in/transformations/timedmovingaverage/
- /v2.0/reference/flux/stdlib/built-in/transformations/exponentialmovingaverage/
- https://docs.influxdata.com/influxdb/latest/query_language/functions/#triple-exponential-derivative, InfluxQL TRIPLE_EXPONENTIAL_DERIVATIVE()
---
@ -24,7 +25,7 @@ The `tripleExponentialDerivative()` function calculates a triple exponential
derivative ([TRIX](https://en.wikipedia.org/wiki/Trix_(technical_analysis))) of
input tables using `n` points.
_**Function type:** Aggregate_
_**Function type:** Transformation_
```js
tripleExponentialDerivative(n: 5)

View File

@ -5,7 +5,7 @@ description: >
User-contributed packages and functions are contributed and maintained by members of the InfluxDB and Flux communities.
menu:
v2_0_ref:
name: User-contributed
name: Contributed
parent: Flux standard library
weight: 202
v2.0/tags: [contributed, functions, package]

View File

@ -7,7 +7,7 @@ description: >
menu:
v2_0_ref:
name: Discord
parent: User-contributed
parent: Contributed
weight: 202
v2.0/tags: [functions, discord, package]
---

View File

@ -0,0 +1,32 @@
---
title: Flux Microsoft Teams package
list_title: Microsoft Teams package
description: >
The Flux Microsoft Teams package provides functions for sending messages to a
[Microsoft Teams](https://www.microsoft.com/microsoft-365/microsoft-teams/group-chat-software)
channel using an [incoming webhook](https://docs.microsoft.com/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook).
Import the `contrib/sranka/teams` package.
menu:
v2_0_ref:
name: Teams
parent: Contributed
weight: 202
v2.0/tags: [functions, teams, microsoft, package]
---
The Flux Microsoft Teams package provides functions for sending messages to a
[Microsoft Teams](https://www.microsoft.com/microsoft-365/microsoft-teams/group-chat-software)
channel using an [incoming webhook](https://docs.microsoft.com/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook).
Import the `contrib/sranka/teams` package:
```js
import "contrib/sranka/teams"
```
{{< children type="functions" show="pages" >}}
{{% note %}}
#### Package author and maintainer
**Github:** [@sranka](https://github.com/sranka)
**InfluxDB Slack:** [@sranka](https://influxdata.com/slack)
{{% /note %}}

View File

@ -0,0 +1,78 @@
---
title: teams.endpoint() function
description: >
The `teams.endpoint()` function sends a message to a Microsoft Teams channel
using data from table rows.
menu:
v2_0_ref:
name: teams.endpoint
parent: Teams
weight: 202
---
The `teams.endpoint()` function sends a message to a Microsoft Teams channel
using data from table rows.
_**Function type:** Output_
```js
import "contrib/sranka/teams"
teams.endpoint(
url: "https://outlook.office.com/webhook/example-webhook"
)
```
## Parameters
### url
Incoming webhook URL.
_**Data type:** String_
## Usage
`teams.endpoint` is a factory function that outputs another function.
The output function requires a `mapFn` parameter.
### mapFn
A function that builds the object used to generate the POST request.
Requires an `r` parameter.
_**Data type:** Function_
`mapFn` accepts a table row (`r`) and returns an object that must include the
following fields:
- `title`
- `text`
- `summary`
_For more information, see [`teams.message()`](/v2.0/reference/flux/stdlib/contrib/teams/message/)._
## Examples
##### Send critical statuses to a Microsoft Teams channel
```js
import "contrib/sranka/teams"
url = "https://outlook.office.com/webhook/example-webhook"
endpoint = teams.endpoint(url: url)
crit_statuses = from(bucket: "example-bucket")
|> range(start: -1m)
|> filter(fn: (r) => r._measurement == "statuses" and status == "crit")
crit_statuses
|> endpoint(mapFn: (r) => ({
title: "Disk Usage"
text: "Disk usage is: **${r.status}**.",
summary: "Disk usage is ${r.status}"
})
)()
```
{{% note %}}
#### Package author and maintainer
**Github:** [@sranka](https://github.com/sranka)
**InfluxDB Slack:** [@sranka](https://influxdata.com/slack)
{{% /note %}}

View File

@ -0,0 +1,78 @@
---
title: teams.message() function
description: >
The `teams.message()` function sends a single message to a Microsoft Teams channel using
an [incoming webhook](https://docs.microsoft.com/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook).
menu:
v2_0_ref:
name: teams.message
parent: Teams
weight: 202
---
The `teams.message()` function sends a single message to a Microsoft Teams channel using
an [incoming webhook](https://docs.microsoft.com/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook).
_**Function type:** Output_
```js
import "contrib/sranka/teams"
teams.message(
url: "https://outlook.office.com/webhook/example-webhook",
title: "Example message title",
text: "Example message text",
summary: "",
)
```
## Parameters
### url
Incoming webhook URL.
_**Data type:** String_
### title
Message card title.
_**Data type:** String_
### text
Message card text.
_**Data type:** String_
### summary
Message card summary.
Default is `""`.
If no summary is provided, Flux generates the summary from the message text.
_**Data type:** String_
## Examples
##### Send the last reported status to a Microsoft Teams channel
```js
import "contrib/sranka/teams"
lastReported =
from(bucket: "example-bucket")
|> range(start: -1m)
|> filter(fn: (r) => r._measurement == "statuses")
|> last()
|> findRecord(fn: (key) => true, idx: 0)
teams.message(
url: "https://outlook.office.com/webhook/example-webhook",
title: "Disk Usage"
text: "Disk usage is: *${lastReported.status}*.",
summary: "Disk usage is ${lastReported.status}"
)
```
{{% note %}}
#### Package author and maintainer
**Github:** [@sranka](https://github.com/sranka)
**InfluxDB Slack:** [@sranka](https://influxdata.com/slack)
{{% /note %}}

View File

@ -0,0 +1,50 @@
---
title: Flux Telegram package
list_title: Telegram package
description: >
The Flux Telegram package provides functions for sending messages to
[Telegram](https://telegram.org/) using the [Telegram Bot API](https://core.telegram.org/bots/api).
Import the `contrib/sranka/telegram` package.
menu:
v2_0_ref:
name: Telegram
parent: Contributed
weight: 202
v2.0/tags: [functions, teams, microsoft, package]
---
The Flux Telegram package provides functions for sending messages to
[Telegram](https://telegram.org/) using the [Telegram Bot API](https://core.telegram.org/bots/api).
Import the `contrib/sranka/telegram` package:
```js
import "contrib/sranka/telegram"
```
{{< children type="functions" show="pages" >}}
## Set up a Telegram bot
The **Telegram Bot API** requires a **bot token** and a **channel ID**.
To set up a Telegram bot and obtain the required bot token and channel ID:
1. [Create a new Telegram account](https://telegram.org/) or use an existing account.
2. [Create a Telegram bot](https://core.telegram.org/bots#creating-a-new-bot).
Telegram provides a **bot token** for the newly created bot.
3. Use the **Telegram application** to create a new channel.
4. [Add the new bot to the channel](https://stackoverflow.com/questions/33126743/how-do-i-add-my-bot-to-a-channel) as an **Administrator**.
Ensure the bot has permissions necessary to **post messages**.
5. Send a message to bot in the channel.
6. Send a request to `https://api.telegram.org/bot$token/getUpdates`.
```sh
curl https://api.telegram.org/bot$token/getUpdates
```
Find your **channel ID** in the `id` field of the response.
{{% note %}}
#### Package author and maintainer
**Github:** [@sranka](https://github.com/sranka)
**InfluxDB Slack:** [@sranka](https://influxdata.com/slack)
{{% /note %}}

View File

@ -0,0 +1,106 @@
---
title: telegram.endpoint() function
description: >
The `telegram.endpoint()` function sends a message to a Telegram channel
using data from table rows.
menu:
v2_0_ref:
name: telegram.endpoint
parent: Telegram
weight: 202
---
The `telegram.endpoint()` function sends a message to a Telegram channel
using data from table rows.
_**Function type:** Output_
```js
import "contrib/sranka/telegram"
telegram.endpoint(
url: "https://api.telegram.org/bot",
token: "S3crEtTel3gRamT0k3n",
parseMode: "MarkdownV2",
disableWebPagePreview: false,
)
```
{{% note %}}
For information about retrieving your Telegram **bot token** and **channel ID**,
see [Set up a Telegram bot](/v2.0/reference/flux/stdlib/contrib/telegram/#set-up-a-telegram-bot).
{{% /note %}}
## Parameters
### url
URL of the Telegram bot endpoint.
Default is `https://api.telegram.org/bot`.
_**Data type:** String_
### token
<span class="req">Required</span>
Telegram bot token.
_**Data type:** String_
### parseMode
[Parse mode](https://core.telegram.org/bots/api#formatting-options) of the message text.
Default is `"MarkdownV2"`.
_**Data type:** String_
### disableWebPagePreview
Disable preview of web links in the sent message.
Default is `false`.
_**Data type:** Boolean_
## Usage
`telegram.endpoint` is a factory function that outputs another function.
The output function requires a `mapFn` parameter.
### mapFn
A function that builds the object used to generate the POST request.
Requires an `r` parameter.
_**Data type:** Function_
`mapFn` accepts a table row (`r`) and returns an object that must include the
following fields:
- `channel`
- `text`
- `silent`
_For more information, see [`telegram.message()`](/v2.0/reference/flux/stdlib/contrib/telegram/message/)._
## Examples
##### Send critical statuses to a Telegram channel
```js
import "influxdata/influxdb/secrets"
import "contrib/sranka/telegram"
token = secrets.get(key: "TELEGRAM_TOKEN")
endpoint = telegram.endpoint(token: token)
crit_statuses = from(bucket: "example-bucket")
|> range(start: -1m)
|> filter(fn: (r) => r._measurement == "statuses" and status == "crit")
crit_statuses
|> endpoint(mapFn: (r) => ({
channel: "-12345",
text: "Disk usage is **${r.status}**.",
silent: true
})
)()
```
{{% note %}}
#### Package author and maintainer
**Github:** [@sranka](https://github.com/sranka)
**InfluxDB Slack:** [@sranka](https://influxdata.com/slack)
{{% /note %}}

View File

@ -0,0 +1,107 @@
---
title: telegram.message() function
description: >
The `telegram.message()` function sends a single message to a Telegram channel using
the [`sendMessage` method of the Telegram Bot API](https://core.telegram.org/bots/api#sendmessage).
menu:
v2_0_ref:
name: telegram.message
parent: Telegram
weight: 202
---
The `telegram.message()` function sends a single message to a Telegram channel using
the [`sendMessage` method of the Telegram Bot API](https://core.telegram.org/bots/api#sendmessage).
_**Function type:** Output_
```js
import "contrib/sranka/telegram"
telegram.message(
url: "https://api.telegram.org/bot",
token: "S3crEtTel3gRamT0k3n",
channel: "-12345",
text: "Example message text",
parseMode: "MarkdownV2",
disableWebPagePreview: false,
silent: true
)
```
{{% note %}}
For information about retrieving your Telegram **bot token** and **channel ID**,
see [Set up a Telegram bot](/v2.0/reference/flux/stdlib/contrib/telegram/#set-up-a-telegram-bot).
{{% /note %}}
## Parameters
### url
URL of the Telegram bot endpoint.
Default is `https://api.telegram.org/bot`.
_**Data type:** String_
### token
<span class="req">Required</span>
Telegram bot token.
_**Data type:** String_
### channel
<span class="req">Required</span>
Telegram channel ID.
_**Data type:** String_
### text
Message text.
_**Data type:** String_
### parseMode
[Parse mode](https://core.telegram.org/bots/api#formatting-options) of the message text.
Default is `"MarkdownV2"`.
_**Data type:** String_
### disableWebPagePreview
Disable preview of web links in the sent message.
Default is `false`.
_**Data type:** Boolean_
### silent
Send message [silently](https://telegram.org/blog/channels-2-0#silent-messages).
Default is `true`.
_**Data type:** Boolean_
## Examples
##### Send the last reported status to a Microsoft Teams channel
```js
import "influxdata/influxdb/secrets"
import "contrib/sranka/telegram"
token = secrets.get(key: "TELEGRAM_TOKEN")
lastReported =
from(bucket: "example-bucket")
|> range(start: -1m)
|> filter(fn: (r) => r._measurement == "statuses")
|> last()
|> findRecord(fn: (key) => true, idx: 0)
telegram.message(
token: token,
channel: "-12345"
text: "Disk usage is **${lastReported.status}**.",
)
```
{{% note %}}
#### Package author and maintainer
**Github:** [@sranka](https://github.com/sranka)
**InfluxDB Slack:** [@sranka](https://influxdata.com/slack)
{{% /note %}}

View File

@ -29,5 +29,39 @@ date.hour(t: 2019-07-17T12:05:21.012Z)
### t
The time to operate on.
Use an absolute time, relative duration, or integer.
Durations are relative to `now()`.
Integers are **nanosecond** [Unix timestamps](/v2.0/reference/glossary/#unix-timestamp).
_**Data type:** Time_
_**Data type:** Time | Duration | Integer_
## Examples
##### Return the hour of a time value
```js
import "date"
date.hour(t: 2020-02-11T12:21:03.293534940Z)
// Returns 12
```
##### Return the hour of a relative duration
```js
import "date"
option now = () => 2020-02-11T12:21:03.293534940Z
date.hour(t: -8h)
// Returns 4
```
##### Return the hour of a nanosecond Unix timestamp
```js
import "date"
date.hour(t: 1581423663293534940)
// Returns 12
```

View File

@ -29,5 +29,39 @@ date.microsecond(t: 2019-07-17T12:05:21.012934584Z)
### t
The time to operate on.
Use an absolute time, relative duration, or integer.
Durations are relative to `now()`.
Integers are **nanosecond** [Unix timestamps](/v2.0/reference/glossary/#unix-timestamp).
_**Data type:** Time_
_**Data type:** Time | Duration | Integer_
## Examples
##### Return the microsecond of a time value
```js
import "date"
date.microsecond(t: 2020-02-11T12:21:03.293534940Z)
// Returns 293534
```
##### Return the microsecond of a relative duration
```js
import "date"
option now = () => 2020-02-11T12:21:03.293534940Z
date.microsecond(t: -1890us)
// Returns 291644
```
##### Return the microsecond of a nanosecond Unix timestamp
```js
import "date"
date.microsecond(t: 1581423663293534940)
// Returns 293534
```

View File

@ -29,5 +29,39 @@ date.millisecond(t: 2019-07-17T12:05:21.012934584Z)
### t
The time to operate on.
Use an absolute time, relative duration, or integer.
Durations are relative to `now()`.
Integers are **nanosecond** [Unix timestamps](/v2.0/reference/glossary/#unix-timestamp).
_**Data type:** Time_
_**Data type:** Time | Duration | Integer_
## Examples
##### Return the millisecond of a time value
```js
import "date"
date.millisecond(t: 2020-02-11T12:21:03.293534940Z)
// Returns 293
```
##### Return the millisecond of a relative duration
```js
import "date"
option now = () => 2020-02-11T12:21:03.293534940Z
date.millisecond(t: -150ms)
// Returns 143
```
##### Return the millisecond of a nanosecond Unix timestamp
```js
import "date"
date.millisecond(t: 1581423663293534940)
// Returns 293
```

View File

@ -29,5 +29,39 @@ date.minute(t: 2019-07-17T12:05:21.012Z)
### t
The time to operate on.
Use an absolute time, relative duration, or integer.
Durations are relative to `now()`.
Integers are **nanosecond** [Unix timestamps](/v2.0/reference/glossary/#unix-timestamp).
_**Data type:** Time_
_**Data type:** Time | Duration | Integer_
## Examples
##### Return the minute of a time value
```js
import "date"
date.minute(t: 2020-02-11T12:21:03.293534940Z)
// Returns 21
```
##### Return the minute of a relative duration
```js
import "date"
option now = () => 2020-02-11T12:21:03.293534940Z
date.minute(t: -45m)
// Returns 36
```
##### Return the minute of a nanosecond Unix timestamp
```js
import "date"
date.minute(t: 1581423663293534940)
// Returns 21
```

View File

@ -29,5 +29,39 @@ date.month(t: 2019-07-17T12:05:21.012Z)
### t
The time to operate on.
Use an absolute time, relative duration, or integer.
Durations are relative to `now()`.
Integers are **nanosecond** [Unix timestamps](/v2.0/reference/glossary/#unix-timestamp).
_**Data type:** Time_
_**Data type:** Time | Duration | Integer_
## Examples
##### Return the month of a time value
```js
import "date"
date.month(t: 2020-02-11T12:21:03.293534940Z)
// Returns 2
```
##### Return the month of a relative duration
```js
import "date"
option now = () => 2020-02-11T12:21:03.293534940Z
date.month(t: -3mo)
// Returns 11
```
##### Return the month of a nanosecond Unix timestamp
```js
import "date"
date.month(t: 1581423663293534940)
// Returns 2
```

View File

@ -29,5 +29,39 @@ date.monthDay(t: 2019-07-17T12:05:21.012Z)
### t
The time to operate on.
Use an absolute time, relative duration, or integer.
Durations are relative to `now()`.
Integers are **nanosecond** [Unix timestamps](/v2.0/reference/glossary/#unix-timestamp).
_**Data type:** Time_
_**Data type:** Time | Duration | Integer_
## Examples
##### Return the day of the month for a time value
```js
import "date"
date.monthDay(t: 2020-02-11T12:21:03.293534940Z)
// Returns 11
```
##### Return the day of the month for a relative duration
```js
import "date"
option now = () => 2020-02-11T12:21:03.293534940Z
date.monthDay(t: -8d)
// Returns 3
```
##### Return the day of the month for a nanosecond Unix timestamp
```js
import "date"
date.monthDay(t: 1581423663293534940)
// Returns 11
```

View File

@ -29,5 +29,39 @@ date.nanosecond(t: 2019-07-17T12:05:21.012934584Z)
### t
The time to operate on.
Use an absolute time, relative duration, or integer.
Durations are relative to `now()`.
Integers are **nanosecond** [Unix timestamps](/v2.0/reference/glossary/#unix-timestamp).
_**Data type:** Time_
_**Data type:** Time | Duration | Integer_
## Examples
##### Return the nanosecond for a time value
```js
import "date"
date.nanosecond(t: 2020-02-11T12:21:03.293534940Z)
// Returns 293534940Z
```
##### Return the nanosecond for a relative duration
```js
import "date"
option now = () => 2020-02-11T12:21:03.293534940Z
date.nanosecond(t: -2111984ns)
// Returns 291422956
```
##### Return the nanosecond for a nanosecond Unix timestamp
```js
import "date"
date.nanosecond(t: 1581423663293534940)
// Returns 293534940Z
```

View File

@ -29,5 +29,39 @@ date.quarter(t: 2019-07-17T12:05:21.012Z)
### t
The time to operate on.
Use an absolute time, relative duration, or integer.
Durations are relative to `now()`.
Integers are **nanosecond** [Unix timestamps](/v2.0/reference/glossary/#unix-timestamp).
_**Data type:** Time_
_**Data type:** Time | Duration | Integer_
## Examples
##### Return the quarter for a time value
```js
import "date"
date.quarter(t: 2020-02-11T12:21:03.293534940Z)
// Returns 1
```
##### Return the quarter for a relative duration
```js
import "date"
option now = () => 2020-02-11T12:21:03.293534940Z
date.quarter(t: -7mo)
// Returns 3
```
##### Return the quarter for a nanosecond Unix timestamp
```js
import "date"
date.quarter(t: 1581423663293534940)
// Returns 1
```

View File

@ -29,5 +29,39 @@ date.second(t: 2019-07-17T12:05:21.012Z)
### t
The time to operate on.
Use an absolute time, relative duration, or integer.
Durations are relative to `now()`.
Integers are **nanosecond** [Unix timestamps](/v2.0/reference/glossary/#unix-timestamp).
_**Data type:** Time_
_**Data type:** Time | Duration | Integer_
## Examples
##### Return the second of a time value
```js
import "date"
date.second(t: 2020-02-11T12:21:03.293534940Z)
// Returns 3
```
##### Return the second of a relative duration
```js
import "date"
option now = () => 2020-02-11T12:21:03.293534940Z
date.second(t: -50s)
// Returns 13
```
##### Return the second of a nanosecond Unix timestamp
```js
import "date"
date.second(t: 1581423663293534940)
// Returns 3
```

View File

@ -30,8 +30,11 @@ date.truncate(
### t
The time to operate on.
Use an absolute time, relative duration, or integer.
Durations are relative to `now()`.
Integers are **nanosecond** [Unix timestamps](/v2.0/reference/glossary/#unix-timestamp).
_**Data type:** Time_
_**Data type:** Time | Duration | Integer_
### unit
The unit of time to truncate to.
@ -44,16 +47,47 @@ For example: `1s`, `1m`, `1h`.
{{% /note %}}
## Examples
##### Truncate time values
```js
import "date"
date.truncate(t: "2019-06-03T13:59:01.000000000Z", unit: 1s)
// Returns 2019-06-03T13:59:01.000000000Z
date.truncate(t: 2019-06-03T13:59:01.000000000Z, unit: 1s)
// Returns 2019-06-03T13:59:01.000000000Z
date.truncate(t: "2019-06-03T13:59:01.000000000Z", unit: 1m)
// Returns 2019-06-03T13:59:00.000000000Z
date.truncate(t: "2019-06-03T13:59:01.000000000Z", unit: 1h)
// Returns 2019-06-03T13:00:00.000000000Z
date.truncate(t: 2019-06-03T13:59:01.000000000Z, unit: 1m)
// Returns 2019-06-03T13:59:00.000000000Z
date.truncate(t: 2019-06-03T13:59:01.000000000Z, unit: 1h)
// Returns 2019-06-03T13:00:00.000000000Z
```
##### Truncate time values using durations
```js
import "date"
option now = () => 2020-01-01T00:00:30.500000000Z
date.truncate(t: -30s, unit: 1s)
// Returns 2019-12-31T23:59:30.000000000Z
date.truncate(t: -1m, unit: 1m)
// Returns 2019-12-31T23:59:00.000000000Z
date.truncate(t: -1h, unit: 1h)
// Returns 2019-12-31T23:00:00.000000000Z
```
##### Truncate time values using nanosecond Unix timestamps
```js
import "date"
date.truncate(t: 1559570341000000000, unit: 1s)
// Returns 2019-06-03T13:59:01.000000000Z
date.truncate(t: 1559570341000000000, unit: 1m)
// Returns 2019-06-03T13:59:00.000000000Z
date.truncate(t: 1559570341000000000, unit: 1h)
// Returns 2019-06-03T13:00:00.000000000Z
```

View File

@ -29,5 +29,39 @@ date.week(t: 2019-07-17T12:05:21.012Z)
### t
The time to operate on.
Use an absolute time, relative duration, or integer.
Durations are relative to `now()`.
Integers are **nanosecond** [Unix timestamps](/v2.0/reference/glossary/#unix-timestamp).
_**Data type:** Time_
_**Data type:** Time | Duration | Integer_
## Examples
##### Return the week of the year
```js
import "date"
date.week(t: 2020-02-11T12:21:03.293534940Z)
// Returns 7
```
##### Return the week of the year using a relative duration
```js
import "date"
option now = () => 2020-02-11T12:21:03.293534940Z
date.week(t: -12d)
// Returns 5
```
##### Return the week of the year using a nanosecond Unix timestamp
```js
import "date"
date.week(t: 1581423663293534940)
// Returns 7
```

View File

@ -29,5 +29,39 @@ date.weekDay(t: 2019-07-17T12:05:21.012Z)
### t
The time to operate on.
Use an absolute time, relative duration, or integer.
Durations are relative to `now()`.
Integers are **nanosecond** [Unix timestamps](/v2.0/reference/glossary/#unix-timestamp).
_**Data type:** Time_
_**Data type:** Time | Duration | Integer_
## Examples
##### Return the day of the week for a time value
```js
import "date"
date.weekDay(t: 2020-02-11T12:21:03.293534940Z)
// Returns 2
```
##### Return the day of the week for a relative duration
```js
import "date"
option now = () => 2020-02-11T12:21:03.293534940Z
date.weekDay(t: -84h)
// Returns 6
```
##### Return the day of the week for a nanosecond Unix timestamp
```js
import "date"
date.weekDay(t: 1581423663293534940)
// Returns 2
```

View File

@ -27,5 +27,39 @@ date.year(t: 2019-07-17T12:05:21.012Z)
### t
The time to operate on.
Use an absolute time, relative duration, or integer.
Durations are relative to `now()`.
Integers are **nanosecond** [Unix timestamps](/v2.0/reference/glossary/#unix-timestamp).
_**Data type:** Time_
_**Data type:** Time | Duration | Integer_
## Examples
##### Return the year for a time value
```js
import "date"
date.year(t: 2020-02-11T12:21:03.293534940Z)
// Returns 2020
```
##### Return the year for a relative duration
```js
import "date"
option now = () => 2020-02-11T12:21:03.293534940Z
date.year(t: -14y)
// Returns 2006
```
##### Return the year for a nanosecond Unix timestamp
```js
import "date"
date.year(t: 1581423663293534940)
// Returns 2020
```

View File

@ -29,5 +29,39 @@ date.yearDay(t: 2019-07-17T12:05:21.012Z)
### t
The time to operate on.
Use an absolute time, relative duration, or integer.
Durations are relative to `now()`.
Integers are **nanosecond** [Unix timestamps](/v2.0/reference/glossary/#unix-timestamp).
_**Data type:** Time_
_**Data type:** Time | Duration | Integer_
## Examples
##### Return the day of the year for a time value
```js
import "date"
date.yearDay(t: 2020-02-11T12:21:03.293534940Z)
// Returns 42
```
##### Return the day of the year for a relative duration
```js
import "date"
option now = () => 2020-02-11T12:21:03.293534940Z
date.yearDay(t: -1mo)
// Returns 11
```
##### Return the day of the year for a nanosecond Unix timestamp
```js
import "date"
date.yearDay(t: 1581423663293534940)
// Returns 42
```

View File

@ -0,0 +1,45 @@
---
title: http.pathEscape() function
description: >
The `http.pathEscape()` function escapes special characters in a string (including `/`)
and replaces non-ASCII characters with hexadecimal representations (`%XX`).
menu:
v2_0_ref:
name: http.pathEscape
parent: HTTP
weight: 202
---
The `http.pathEscape()` function escapes special characters in a string (including `/`)
and replaces non-ASCII characters with hexadecimal representations (`%XX`).
_**Function type:** Transformation_
```js
import "http"
http.pathEscape(
inputString: "/this/is/an/example-path.html"
)
// Returns %2Fthis%2Fis%2Fan%2Fexample-path.html
```
## Parameters
### inputString
The string to escape.
_**Data type:** String_
## Examples
##### URL-encode strings in a stream of tables
```js
import "http"
data
|> map(fn: (r) => ({ r with
path: http.pathEscape(inputString: r.path)
}))
```

View File

@ -3,7 +3,7 @@ title: Flux SQL package
list_title: SQL package
description: >
The Flux SQL package provides tools for working with data in SQL databases such
as MySQL, PostgreSQL, and SQLite.
as MySQL, PostgreSQL, Snowflake, SQLite, Microsoft SQL Server, and Amazon Athena.
Import the `sql` package.
aliases:
- /v2.0/reference/flux/functions/sql/
@ -17,8 +17,15 @@ related:
- /v2.0/query-data/flux/sql/
---
SQL Flux functions provide tools for working with data in SQL databases such as
MySQL, PostgreSQL, Snowflake, and SQLite.
SQL Flux functions provide tools for working with data in SQL databases such as:
- Amazon Athena
- Microsoft SQL Server
- MySQL
- PostgreSQL
- Snowflake
- SQLite
Import the `sql` package:
```js

View File

@ -35,10 +35,12 @@ _**Data type:** String_
The following drivers are available:
- awsathena
- mysql
- postgres
- snowflake
- sqlite3 _Does not work with InfluxDB OSS or InfluxDB Cloud. More information [below](#query-an-sqlite-database)._
- sqlserver, mssql
### dataSourceName
The data source name (DSN) or connection string used to connect to the SQL database.
@ -48,12 +50,16 @@ _**Data type:** String_
##### Driver dataSourceName examples
```sh
# Postgres Driver DSN
postgres://pqgotest:password@localhost/pqgotest?sslmode=verify-full
# Amazon Athena Driver DSN
s3://myorgqueryresults/?accessID=AKIAJLO3F...&region=us-west-1&secretAccessKey=NnQ7MUMp9PYZsmD47c%2BSsXGOFsd%2F...
s3://myorgqueryresults/?accessID=AKIAJLO3F...&db=dbname&missingAsDefault=false&missingAsEmptyString=false&region=us-west-1&secretAccessKey=NnQ7MUMp9PYZsmD47c%2BSsXGOFsd%2F...&WGRemoteCreation=false
# MySQL Driver DSN
username:password@tcp(localhost:3306)/dbname?param=value
# Postgres Driver DSN
postgres://pqgotest:password@localhost/pqgotest?sslmode=verify-full
# Snowflake Driver DSNs
username[:password]@accountname/dbname/schemaname?param1=value1&paramN=valueN
username[:password]@accountname/dbname?param1=value1&paramN=valueN
@ -61,6 +67,12 @@ username[:password]@hostname:port/dbname/schemaname?account=<your_account>&param
# SQLite Driver DSN
file:/path/to/test.db?cache=shared&mode=ro
# Microsoft SQL Server Driver DSNs
sqlserver://username:password@localhost:1234?database=examplebdb
server=localhost;user id=username;database=examplebdb;
server=localhost;user id=username;database=examplebdb;azure auth=ENV
server=localhost;user id=username;database=examplebdbr;azure tenant id=77e7d537;azure client id=58879ce8;azure client secret=0123456789
```
### query
@ -70,6 +82,13 @@ _**Data type:** String_
## Examples
- [MySQL](#query-a-mysql-database)
- [Postgres](#query-a-postgres-database)
- [Snowflake](#query-a-snowflake-database)
- [SQLite](#query-an-sqlite-database)
- [Amazon Athena](#query-an-amazon-athena-database)
- [SQL Server](#query-a-sql-server-database)
{{% note %}}
The examples below use [InfluxDB secrets](/v2.0/security/secrets/) to populate
sensitive connection credentials.
@ -139,3 +158,95 @@ sql.from(
query: "SELECT * FROM example_table"
)
```
### Query an Amazon Athena database
```js
import "sql"
import "influxdata/influxdb/secrets"
region = us-west-1
accessID = secrets.get(key: "ATHENA_ACCESS_ID")
secretKey = secrets.get(key: "ATHENA_SECRET_KEY")
sql.from(
driverName: "awsathena",
dataSourceName: "s3://myorgqueryresults/?accessID=${accessID}&region=${region}&secretAccessKey=${secretKey}",
query:"SELECT * FROM example_table"
)
```
##### Athena connection string
To query an Amazon Athena database, use the following query parameters in your Athena
S3 connection string (DSN):
<span class="req">\* Required</span>
- **region** - AWS region <span class="req">\*</span>
- **accessID** - AWS IAM access ID <span class="req">\*</span>
- **secretAccessKey** - AWS IAM secret key <span class="req">\*</span>
- **db** - database name
- **WGRemoteCreation** - controls workgroup and tag creation
- **missingAsDefault** - replace missing data with default values
- **missingAsEmptyString** - replace missing data with empty strings
### Query a SQL Server database
```js
import "sql"
import "influxdata/influxdb/secrets"
username = secrets.get(key: "SQLSERVER_USER")
password = secrets.get(key: "SQLSERVER_PASS")
sql.from(
driverName: "sqlserver",
dataSourceName: "sqlserver://${username}:${password}@localhost:1234?database=examplebdb",
query: "GO SELECT * FROM Example.Table"
)
```
#### SQL Server ADO authentication
Use one of the following methods to provide SQL Server authentication credentials as
[ActiveX Data Objects (ADO)](https://docs.microsoft.com/en-us/sql/ado/guide/ado-introduction?view=sql-server-ver15)
connection string parameters:
- [Retrieve authentication credentials from environment variables](#retrieve-authentication-credentials-from-environment-variables)
- [Retrieve authentication credentials from a file](#retrieve-authentication-credentials-from-a-file)
- [Specify authentication credentials in the connection string](#specify-authentication-credentials-in-the-connection-string)
- [Use a Managed identity in an Azure VM](#use-a-managed-identity-in-an-azure-vm)
##### Retrieve authentication credentials from environment variables
```
azure auth=ENV
```
##### Retrieve authentication credentials from a file
{{% warn %}}
**InfluxDB OSS** and **{{< cloud-name "short" >}}** user interfaces do _**not**_ provide
access to the underlying file system and do not support reading credentials from a file.
To retrieve SQL Server credentials from a file, execute the query in the
[Flux REPL](/v2.0/reference/cli/influx/repl/) on your local machine.
{{% /warn %}}
```powershel
azure auth=C:\secure\azure.auth
```
##### Specify authentication credentials in the connection string
```powershell
# Example of providing tenant ID, client ID, and client secret token
azure tenant id=77...;azure client id=58...;azure client secret=0cf123..
# Example of providing tenant ID, client ID, certificate path and certificate password
azure tenant id=77...;azure client id=58...;azure certificate path=C:\secure\...;azure certificate password=xY...
# Example of providing tenant ID, client ID, and Azure username and password
azure tenant id=77...;azure client id=58...;azure username=some@myorg;azure password=a1...
```
##### Use a managed identity in an Azure VM
_For information about managed identities, see [Microsoft managed identities](https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview)._
```
azure auth=MSI
```

View File

@ -38,6 +38,7 @@ The following drivers are available:
- postgres
- snowflake
- sqlite3 _Does not work with InfluxDB OSS or InfluxDB Cloud. More information [below](#write-data-to-an-sqlite-database)._
- sqlserver, mssql
### dataSourceName
The data source name (DSN) or connection string used to connect to the SQL database.
@ -60,6 +61,12 @@ username[:password]@hostname:port/dbname/schemaname?account=<your_account>&param
# SQLite Driver DSN
file:/path/to/test.db?cache=shared&mode=rw
# Microsoft SQL Server Driver DSNs
sqlserver://username:password@localhost:1234?database=examplebdb
server=localhost;user id=username;database=examplebdb;
server=localhost;user id=username;database=examplebdb;azure auth=ENV
server=localhost;user id=username;database=examplebdbr;azure tenant id=77e7d537;azure client id=58879ce8;azure client secret=0123456789
```
### table
@ -79,6 +86,12 @@ If writing to a **SQLite** database, set `batchSize` to `999` or less.
## Examples
- [MySQL](#write-data-to-a-mysql-database)
- [Postgres](#write-data-to-a-postgres-database)
- [Snowflake](#write-data-to-a-snowflake-database)
- [SQLite](#write-data-to-an-sqlite-database)
- [SQL Server](#write-data-to-a-sql-server-database)
{{% note %}}
The examples below use [InfluxDB secrets](/v2.0/security/secrets/) to populate
sensitive connection credentials.
@ -148,3 +161,69 @@ sql.to(
table: "example_table"
)
```
### Write data to a SQL Server database
```js
import "sql"
import "influxdata/influxdb/secrets"
username = secrets.get(key: "SQLSERVER_USER")
password = secrets.get(key: "SQLSERVER_PASS")
sql.to(
driverName: "sqlserver",
dataSourceName: "sqlserver://${username}:${password}@localhost:1234?database=examplebdb",
table: "Example.Table"
)
```
#### SQL Server ADO authentication
Use one of the following methods to provide SQL Server authentication credentials as
[ActiveX Data Objects (ADO)](https://docs.microsoft.com/en-us/sql/ado/guide/ado-introduction?view=sql-server-ver15)
connection string parameters:
- [Retrieve authentication credentials from environment variables](#retrieve-authentication-credentials-from-environment-variables)
- [Retrieve authentication credentials from a file](#retrieve-authentication-credentials-from-a-file)
- [Specify authentication credentials in the connection string](#specify-authentication-credentials-in-the-connection-string)
- [Use a Managed identity in an Azure VM](#use-a-managed-identity-in-an-azure-vm)
##### Retrieve authentication credentials from environment variables
```
azure auth=ENV
```
##### Retrieve authentication credentials from a file
{{% warn %}}
**InfluxDB OSS** and **{{< cloud-name "short" >}}** user interfaces do _**not**_ provide
access to the underlying file system and do not support reading credentials from a file.
To retrieve SQL Server credentials from a file, execute the query in the
[Flux REPL](/v2.0/reference/cli/influx/repl/) on your local machine.
{{% /warn %}}
```powershell
azure auth=C:\secure\azure.auth
```
##### Specify authentication credentials in the connection string
```powershell
# Example of providing tenant ID, client ID, and client secret token
azure tenant id=77...;azure client id=58...;azure client secret=0cf123..
# Example of providing tenant ID, client ID, certificate path and certificate password
azure tenant id=77...;azure client id=58...;azure certificate path=C:\secure\...;azure certificate password=xY...
# Example of providing tenant ID, client ID, and Azure username and password
azure tenant id=77...;azure client id=58...;azure username=some@myorg;azure password=a1...
```
##### Use a managed identity in an Azure VM
_For information about managed identities, see [Microsoft managed identities](https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview)._
```
azure auth=MSI
```
{{% warn %}}
### sql.to does not support Amazon Athena
The `sql.to` function does not support writing data to [Amazon Athena](https://aws.amazon.com/athena/).
{{% /warn %}}

View File

@ -31,12 +31,12 @@ _Hover over highlighted terms to get acquainted with InfluxDB terminology and la
**bucket:** `my_bucket`
| _time | _measurement | <span class ="tooltip" data-tooltip-text ="Tag key">location</span> | <span class ="tooltip" data-tooltip-text ="Tag key">scientist</span> | _field | _value |
|:------------------- |:------------ |:------- |:------ |:-- |:------ |
| 2019-08-18T00:00:00Z | census | klamath | anderson | bees | 23 |
| 2019-08-18T00:00:00Z | census | portland | mullen | ants | 30 |
| 2019-08-18T00:06:00Z | census | klamath | anderson | bees | 28 |
| <span class="tooltip" data-tooltip-text="Timestamp">2019-08-18T00:06:00Z</span> | <span class="tooltip" data-tooltip-text="measurement"> census</span> | <span class ="tooltip" data-tooltip-text ="Tag value">portland</span> | <span class ="tooltip" data-tooltip-text ="Tag value">mullen</span> | <span class ="tooltip" data-tooltip-text ="Field key">ants</span> | <span class ="tooltip" data-tooltip-text ="Field value">32</span> |
| _time | _measurement | {{< tooltip "Tag key" "location" >}} | {{< tooltip "Tag key" "scientist" >}} | _field | _value |
|:------------------- |:------------ |:------- |:------ |:-- |:------ |
| 2019-08-18T00:00:00Z | census | klamath | anderson | bees | 23 |
| 2019-08-18T00:00:00Z | census | portland | mullen | ants | 30 |
| 2019-08-18T00:06:00Z | census | klamath | anderson | bees | 28 |
| {{< tooltip "Timestamp" "2019-08-18T00:06:00Z" >}} | {{< tooltip "measurement" "census" >}} | {{< tooltip "Tag value" "portland" >}} | {{< tooltip "Tag value" "mullen">}} | {{< tooltip "Field key" "ants" >}} | {{< tooltip "Field value" "32" >}} |
## Timestamp
@ -83,11 +83,13 @@ Tags include tag keys and tag values that are stored as strings and metadata.
### Tag key
The tag keys in the sample data are `location` and `scientist`.
_For information about tag key requirements, see [Line protocol Tag set](/v2.0/reference/syntax/line-protocol/#tag-set)._
### Tag value
The tag key `location` has two tag values: `klamath` and `portland`.
The tag key `scientist` also has two tag values: `anderson` and `mullen`.
_For information about tag value requirements, see [Line protocol Tag set](/v2.0/reference/syntax/line-protocol/#tag-set)._
### Tag set
@ -117,19 +119,19 @@ from(bucket: "bucket-name")
InfluxDB scans every field value in the dataset for `bees` before the query returns a response. If our sample `census` data grew to millions of rows, to optimize your query, you could rearrange your [schema](/v2.0/reference/glossary/#schema) so the fields (`bees` and `ants`) becomes tags and the tags (`location` and `scientist`) become fields:
| _time | _measurement | <span class ="tooltip" data-tooltip-text ="Tag key">bees</span> | _field | _value |
|:------------------- |:------------ |:------- |:-- |:------ |
| 2019-08-18T00:00:00Z | census | 23 | location | klamath |
| 2019-08-18T00:00:00Z | census | 23 | scientist | anderson |
| 2019-08-18T00:06:00Z | census | <span class ="tooltip" data-tooltip-text ="Tag value">28</span> | <span class ="tooltip" data-tooltip-text ="Field key">location</span> | <span class ="tooltip" data-tooltip-text ="Field value">klamath</span> |
| 2019-08-18T00:06:00Z | census | 28 | scientist | anderson |
| _time | _measurement | {{< tooltip "Tag key" "bees" >}} | _field | _value |
|:------------------- |:------------ |:------- |:-- |:------ |
| 2019-08-18T00:00:00Z | census | 23 | location | klamath |
| 2019-08-18T00:00:00Z | census | 23 | scientist | anderson |
| 2019-08-18T00:06:00Z | census | {{< tooltip "Tag value" "28" >}} | {{< tooltip "Field key" "location" >}} | {{< tooltip "Field value" "klamath" >}} |
| 2019-08-18T00:06:00Z | census | 28 | scientist | anderson |
| _time | _measurement | <span class ="tooltip" data-tooltip-text ="Tag key">ants</span> | _field | _value |
|:------------------- |:------------ |:------- |:-- |:------ |
| 2019-08-18T00:00:00Z | census | 30 | location | portland |
| 2019-08-18T00:00:00Z | census | 30 | scientist | mullen |
| 2019-08-18T00:06:00Z | census | <span class ="tooltip" data-tooltip-text ="Tag value">32</span> | <span class ="tooltip" data-tooltip-text ="Field key">location</span> | <span class ="tooltip" data-tooltip-text ="Field value">portland</span>|
| 2019-08-18T00:06:00Z | census | 32 | scientist | mullen |
| _time | _measurement | {{< tooltip "Tag key" "ants" >}} | _field | _value |
|:------------------- |:------------ |:------- |:-- |:------ |
| 2019-08-18T00:00:00Z | census | 30 | location | portland |
| 2019-08-18T00:00:00Z | census | 30 | scientist | mullen |
| 2019-08-18T00:06:00Z | census | {{< tooltip "Tag value" "32" >}} | {{< tooltip "Field key" "location" >}} | {{< tooltip "Field value" "portland" >}} |
| 2019-08-18T00:06:00Z | census | 32 | scientist | mullen |
Now that `bees` and `ants` are tags, InfluxDB doesn't have to scan all `_field` and `_value` columns. This makes your queries faster.
@ -137,10 +139,10 @@ Now that `bees` and `ants` are tags, InfluxDB doesn't have to scan all `_field`
Now that you're familiar with measurements, field sets, and tag sets, it's time to discuss series keys and series. A **series key** is a collection of points that share a measurement, tag set, and field key. For example, the [sample data](#sample-data) includes two unique series keys:
| _measurement | tag set | _field |
|:------------- |:------------------------------- |:------ |
| census | <span class="tooltip" data-tooltip-text="Tag set">location=klamath,scientist=anderson</span> |<span class="tooltip" data-tooltip-text="Field key">bees</span>|
| census | location=portland,scientist=mullen | ants |
| _measurement | tag set | _field |
|:------------- |:------------------------------- |:------ |
| census | {{< tooltip "Tag set" "location=klamath,scientist=anderson" >}} | {{< tooltip "Field key" "bees" >}} |
| census | location=portland,scientist=mullen | ants |
A **series** includes timestamps and field values for a given series key. From the sample data, here's a **series key** and the corresponding **series**:

View File

@ -11,11 +11,50 @@ aliases:
---
{{% note %}}
_The latest release of InfluxDB v2.0 beta includes **Flux v0.71.1**.
The latest release of InfluxDB v2.0 beta includes **Flux v0.71.1**.
Though newer versions of Flux may be available, they will not be included with
InfluxDB until the next InfluxDB v2.0 release._
{{% /note %}}
## v0.71.1 [2020-07-03]
### Bug fixes
- Add a check to ensure `every` is non-negative.
---
## v0.71.0 [2020-06-30]
### Features
- Apply `Timeable` constraint to integer type to support integer values in
time-related function parameters.
- Implement schema mutation functions without performing any copies.
- Add [`http.pathEscape()` function](/v2.0/reference/flux/stdlib/http/pathescape/).
---
## v0.70.0 [2020-06-29]
### Features
- Update all `date` functions to accept time and duration types.
- Add [Microsoft Teams package](/v2.0/reference/flux/stdlib/contrib/teams/).
- Evaluate and store `now` in execution dependencies for `tableFind()`.
- Add `Timeable` constraint for time and duration types.
- Add [SQL Server support](/v2.0/reference/flux/stdlib/sql/from/#query-a-sql-server-database) to `sql` package.
- Add [Telegram package](/v2.0/reference/flux/stdlib/contrib/telegram/).
- Add [Amazon Athena support](/v2.0/reference/flux/stdlib/sql/from/#query-an-amazon-athena-database) to `sql` package.
- Add support for macOS builds.
### Bug fixes
- Move semantic analysis to the finalize step.
- Fix check for stream equality.
- Fix the compiler's return type when `with` operator is used.
- Include `stdlib` Flux dependencies from the Flux `build.rs`.
- Include a hash of the sources for `libflux`.
- Flux test for [experimental `json.parse()`](/v2.0/reference/flux/stdlib/experimental/json/parse/).
- Reorder `go generate` call to `libflux` in `stdlib`.
---
## v0.69.2 [2020-06-10]
### Bug fixes

View File

@ -12,15 +12,6 @@ menu:
InfluxDB 2.0 is available both locally (OSS) or on multiple cloud providers in multiple regions (Cloud).
## InfluxDB OSS URL
For InfluxDB OSS, the default URL is the following:
{{< keep-url >}}
```
http://localhost:9999/
```
## InfluxDB Cloud URLs
Each region has a unique InfluxDB Cloud URL and API endpoint.
@ -29,3 +20,35 @@ Use the URLs below to interact with your InfluxDB Cloud instances with the
[`influx` CLI](/v2.0/reference/cli/influx/), or [Telegraf](/v2.0/write-data/use-telegraf/).
{{< cloud_regions >}}
## InfluxDB OSS URLs
For InfluxDB OSS, the default URL is the following:
{{< keep-url >}}
```
http://localhost:9999/
```
### Customize your InfluxDB OSS URL
To customize your InfluxDB host and port, use the
[`http-bind-address` configuration option](/v2.0/reference/config-options/#http-bind-address)
when starting `influxd`.
```sh
# Syntax
influxd --http-bind-address <custom-domain>:<custom-port>
# Example - Run InfluxDB at http://example.com:8080
influxd --http-bind-address example.com:8080
# Example - Run InfluxDB at http://localhost:8080
influxd --http-bind-address :8080
```
{{% note %}}
#### Configure DNS routing
You must configure DNS routing to successfully route requests to your custom hostname.
Methods for configuring DNS routing vary depending on your operating system and
network architecture and are not covered in this documentation.
{{% /note %}}

View File

@ -6,19 +6,23 @@ menu:
v2_0:
parent: Store and use secrets
weight: 201
products: [oss]
---
[Vault](https://www.vaultproject.io/) secures, stores, and tightly controls access
[Vault](https://www.vaultproject.io/) secures, stores, and controls access
to tokens, passwords, certificates, and other sensitive secrets.
Store sensitive secrets in Vault using the InfluxDB built-in Vault integration.
Store sensitive secrets in Vault using InfluxDB's built-in Vault integration.
## Use Vault with {{< cloud-name >}}
{{% cloud %}}
By default, all secrets added to **InfluxDB Cloud** are stored in the
**InfluxDB Cloud Vault cluster**.
{{% /cloud %}}
## Start a Vault server
For more on adding and using secrets, see [Manage secrets](/v2.0/security/secrets/manage-secrets/).
Once added, use the [`secrets.get()`](/v2.0/reference/flux/stdlib/secrets/get/) function to retrieve secrets for use in Flux scripts.
## Use Vault with InfluxDB OSS
### Start a Vault server
Start a Vault server and ensure InfluxDB has network access to the server.
@ -43,26 +47,26 @@ For this example, install Vault on your local machine and start a Vault dev serv
vault server -dev
```
## Provide Vault server address and token
### Provide Vault server address and token
Use `influxd` Vault-related tags or [Vault environment variables](https://www.vaultproject.io/docs/commands/index.html#environment-variables)
to provide connection credentials and other important Vault-related information to InfluxDB.
### Required credentials
#### Required credentials
#### Vault address
##### Vault address
Provide the API address of your Vault server _(available in the Vault server output)_
using the [`--vault-addr` flag](/v2.0/reference/config-options/#vault-addr) when
starting `influxd` or with the `VAULT_ADDR` environment variable.
#### Vault token
##### Vault token
Provide your [Vault token](https://learn.hashicorp.com/vault/getting-started/authentication)
(required to access your Vault server) using the [`--vault-token` flag](/v2.0/reference/config-options/#vault-token)
when starting `influxd` or with the `VAULT_TOKEN` environment variable.
_Your Vault server configuration may require other Vault settings._
## Start InfluxDB
### Start InfluxDB
Start the [`influxd` service](/v2.0/reference/cli/influxd/) with the `--secret-store`
option set to `vault` any other necessary flags.
@ -89,6 +93,6 @@ If set, these flags override any [Vault environment variables](https://www.vault
For more information, see [InfluxDB configuration options](/v2.0/reference/config-options/).
## Manage secrets through the InfluxDB API
### Manage secrets through the InfluxDB API
Use the InfluxDB `/org/{orgID}/secrets` API endpoint to add tokens to Vault.
For details, see [Manage secrets](/v2.0/security/secrets/manage-secrets/).

View File

@ -14,6 +14,11 @@ weight: 201
Create authentication tokens using the InfluxDB user interface (UI) or the `influx`
command line interface (CLI).
Tokens are visible only to the user who created them and stop working when the user is deactivated. We recommend creating a generic IT user to create and manage tokens for writing data.
##
## Create a token in the InfluxDB UI
1. In the navigation menu on the left, select **Data (Load Data)** > **Tokens**.

View File

@ -14,6 +14,10 @@ weight: 202
View authentication tokens using the InfluxDB user interface (UI) or the `influx`
command line interface (CLI).
{{% note %}}
Tokens are visible only to the user who created them and stop working when the user is deactivated. We recommend creating a generic IT user to create and manage tokens for writing data.
{{% note %}}
## View tokens in the InfluxDB UI
1. In the navigation menu on the left, select **Data (Load Data)** > **Tokens**.

View File

@ -13,11 +13,9 @@ weight: 203
InfluxDB lets you export dashboards from the InfluxDB user interface (UI).
## Export a dashboard
1. In the navigation menu on the left, select **Boards** (**Dashboards**).
{{< nav-icon "dashboards" >}}
{{< nav-icon "dashboards" >}}
2. Hover over a dashboard and click the gear icon (**{{< icon "gear" >}}**),
and then select **Export**.

View File

@ -149,7 +149,7 @@ After [setting up InfluxDB v2.0](/v2.0/get-started/#set-up-influxdb),
the "Let's start collecting data!" page displays options for collecting data.
Click **Quick Start**.
InfluxDB creates and configures a new [scraper](/v2.0/write-data/scrape-data/).
InfluxDB creates and configures a new [scraper](/v2.0/write-data/no-code/scrape-data/).
The target URL points to the `/metrics` HTTP endpoint of your local InfluxDB instance
(for example, `http://localhost:9999/metrics`), which outputs internal InfluxDB
metrics in the [Prometheus data format](https://prometheus.io/docs/instrumenting/exposition_formats/).

View File

@ -11,16 +11,21 @@ v2.0/tags: [best practices, write]
Use these tips to optimize performance and system overhead when writing data to InfluxDB.
- [Batch writes](#batch-writes)
- [Sort tags by key](#sort-tags-by-key)
- [Use the coarsest time precision possible](#use-the-coarsest-time-precision-possible)
- [Use gzip compression](#use-gzip-compression)
- [Synchronize hosts with NTP](#synchronize-hosts-with-ntp)
- [Write multiple data points in one request](#write-multiple-data-points-in-one-request)
{{% note %}}
The following tools write to InfluxDB and employ write optimizations by default:
The following tools write to InfluxDB and employ _most_ write optimizations by default:
- [Telegraf](/v2.0/write-data/use-telegraf/)
- [InfluxDB scrapers](/v2.0/write-data/scrape-data/)
- [InfluxDB client libraries](/v2.0/reference/api/client-libraries/)
- [InfluxDB scrapers](/v2.0/write-data/no-code/scrape-data/)
{{% /note %}}
---
## Batch writes
Write data in batches to minimize network overhead when writing data to InfluxDB.
@ -50,6 +55,53 @@ For better performance, use the coarsest precision possible for timestamps.
_Specify timestamp precision when [writing to InfluxDB](/v2.0/write-data/#timestamp-precision)._
## Use gzip compression
Use gzip compression to speed up writes to InfluxDB.
Benchmarks have shown up to a 5x speed improvement when data is compressed.
{{< tabs-wrapper >}}
{{% tabs %}}
[Telegraf](#)
[Client libraries](#)
[InfluxDB API](#)
{{% /tabs %}}
{{% tab-content %}}
### Enable gzip compression in Telegraf
In the `influxdb_v2` output plugin configuration in your `telegraf.conf`, set the
`content_encoding` option to `gzip`:
```toml
[[outputs.influxdb_v2]]
urls = ["http://localhost:9999"]
# ...
content_encoding = "gzip"
```
{{% /tab-content %}}
{{% tab-content %}}
### Enable gzip compression in InfluxDB client libraries
Each [InfluxDB client library](/v2.0/reference/api/client-libraries/) provides
options for compressing write requests or enforces compression by default.
The method for enabling compression is different for each library.
For specific instructions, see the [InfluxDB client libraries documentation](/v2.0/reference/api/client-libraries/).
{{% /tab-content %}}
{{% tab-content %}}
### Use gzip compression with the InfluxDB API
When using the InfluxDB API `/write` endpoint to write data, set the `Content-Encoding`
header to `gzip` to compress the request data.
```sh
curl -XPOST "http://localhost:9999/api/v2/write?org=YOUR_ORG&bucket=YOUR_BUCKET&precision=s" \
--header "Authorization: Token YOURAUTHTOKEN" \
--header "Content-Encoding: gzip" \
--data-raw "mem,host=host1 used_percent=23.43234543 1556896326"
```
{{% /tab-content %}}
{{< /tabs-wrapper >}}
## Synchronize hosts with NTP
Use the Network Time Protocol (NTP) to synchronize time between hosts.

View File

@ -8,6 +8,7 @@ description: >
aliases:
- /v2.0/collect-data/scraper-metrics-endpoint
- /v2.0/collect-data/scrape-data
- /v2.0/write-data/scrape-data
- /v2.0/write-data/scrapable-endpoints
v2.0/tags: [scraper]
menu:

View File

@ -16,7 +16,7 @@ Update a scraper in the InfluxDB user interface (UI).
{{% note %}}
Scraper **Target URLs** and **Buckets** cannot be updated.
To modify either, [create a new scraper](/v2.0/write-data/scrape-data/manage-scrapers/create-a-scraper).
To modify either, [create a new scraper](/v2.0/write-data/no-code/scrape-data/manage-scrapers/create-a-scraper).
{{% /note %}}
## Update a scraper in the InfluxDB UI

View File

@ -5,6 +5,8 @@ oss:
regions:
- name: localhost:9999
url: http://localhost:9999
- name: Custom
url: http://example.com:8080
cloud:
product: InfluxDB Cloud

View File

@ -21,5 +21,5 @@
</script>
</body>
{{ partial "footer/javascript.html" }}
{{ partial "footer/javascript.html" . }}
</html>

View File

@ -14,16 +14,31 @@
<div class="providers">
{{ range .providers }}
<div class="provider">
<h5>{{ if .short_name}}{{ .short_name }}{{ else }}{{ .name }}{{ end }}</h5>
<ul>
{{ range .regions }}
<li>
<label for="{{ anchorize .name }}" {{ if .status }}class="{{ .status }}"{{ end }}>
<input type="radio" name="influxdb-loc" id="{{ anchorize .name }}" value="{{ .url }}" checked>
<span class="radio"></span>
{{ .name }}
</label>
</li>
{{ if eq .name "Custom" }}
<h5>Custom</h5>
<ul>
<li class="custom">
<label for="{{ anchorize .name }}">
<input type="radio" name="influxdb-loc" id="{{ anchorize .name }}" value="{{ .url }}" checked>
<span class="radio"></span>
</label>
<form action="#" id="custom-url">
<input type="text" name="custom-url-field" id="custom-url-field" placeholder="{{ .url }}">
</form>
</li>
</ul>
{{ else }}
<h5>{{ if .short_name}}{{ .short_name }}{{ else }}{{ .name }}{{ end }}</h5>
<ul>
{{ range .regions }}
<li>
<label for="{{ anchorize .name }}" {{ if .status }}class="{{ .status }}"{{ end }}>
<input type="radio" name="influxdb-loc" id="{{ anchorize .name }}" value="{{ .url }}" checked>
<span class="radio"></span>
{{ .name }}
</label>
</li>
{{ end }}
{{ end }}
</ul>
</div>

View File

@ -3,6 +3,16 @@
{{ $searchInteractions := resources.Get "js/search-interactions.js" }}
{{ $telegrafFilters := resources.Get "js/telegraf-filters.js" }}
{{ $influxdbURLs := resources.Get "js/influxdb-url.js" }}
{{ $footerjs := slice $versionSelector $contentInteractions $searchInteractions $telegrafFilters $influxdbURLs | resources.Concat "js/footer.bundle.js" | resources.Fingerprint}}
{{ $footerjs := slice $versionSelector $contentInteractions $searchInteractions $telegrafFilters $influxdbURLs | resources.Concat "js/footer.bundle.js" | resources.Fingerprint }}
<!-- Load cloudUrls array -->
<script type="text/javascript">
cloudUrls = [
{{- range .Site.Data.influxdb_urls.cloud.providers }}
{{- range .regions }}"{{ safeHTML .url }}",{{ end -}}
{{ end -}}
]
</script>
<!-- Load footer.js -->
<script type="text/javascript" src="{{ $footerjs.RelPermalink }}" ></script>

View File

@ -0,0 +1,3 @@
{{ $tooltip := .Get 0 }}
{{ $text := .Get 1 }}
<span class="tooltip" data-tooltip-text="{{ $tooltip }}">{{ $text }}</span>