Create a task
Create tasks with the InfluxDB user interface (UI), influx
command line interface (CLI), or /api/v2
API.
Before creating a task, review the basics for writing a task.
Create a task in the InfluxDB UI
The InfluxDB UI provides multiple ways to create a task:
- Create a task from the Data Explorer
- Create a task in the Task UI
- Import a task
- Create a task from a template
- Clone a task
Create a task from the Data Explorer
In the navigation menu on the left, select Data Explorer.
Build a query and click Save As in the upper right.
Select the Task heading.
Specify the task options. See Task options for detailed information about each option.
Click Save as Task.
Create a task in the Task UI
In the navigation menu on the left, select Tasks.
Click Create Task in the upper right.
In the left panel, specify the task options. See Task options for detailed information about each option.
In the right panel, enter your task script.
Leave out the option tasks assignment
When creating a new task in the InfluxDB Task UI, leave the code editor empty. When you save the task, the Task UI uses the task options you specify in the Task options form to populate
option task = {task_options}
for you.When you edit the saved task, you’ll see the injected
option task = {task_options}
.Click Save in the upper right.
Import a task
In the navigation menu on the left, select Tasks.
Click Create Task in the upper right.
In the left panel, specify the task options. See Task options for detailed information about each option.
Paste a raw Flux task in the code editor to the right of the task options fields.
Click Save in the upper right.
Create a task from a template
In the navigation menu on the left, select Settings > Templates.
Find the template you want to use and click its Resources list to expand the list of resources.
In the Resources list, click the task you want to use.
Clone a task
In the navigation menu on the left, select Tasks.
Find the task you would like to clone and click the icon located far right of the task name.
Click Clone.
Create a task using the influx CLI
Use the influx task create
command to create a new task.
It accepts either a file path or raw Flux.
Create a task using a file
# Syntax
influx task create --org <org-name> -f </path/to/task-script>
# Example
influx task create --org my-org -f /tasks/cq-mean-1h.flux
Create a task using raw Flux
influx task create --org my-org - # <return> to open stdin pipe
option task = {
name: "task-name",
every: 6h
}
# ... Task script ...
# Linux & macOS: <ctrl-d> to close the pipe and submit the command
# Windows: <enter>, then <ctrl-d>, then <enter> to close the pipe and submit the command
Create a task using the InfluxDB API
An InfluxDB Cloud task can run either an invokable script or raw Flux stored in the task.
Create a task that references a script
With InfluxDB Cloud invokable scripts, you can manage, reuse, and invoke scripts as API endpoints. You can use tasks to pass script parameters and schedule runs.
Use the /api/v2/tasks
InfluxDB API endpoint to create a task
that references a script ID.
POST https://127.0.0.1:8086/api/v2/tasks/
Provide the following in your API request:
Request headers
- Content-Type: application/json
- Authorization: Token
INFLUX_API_TOKEN
Request body
JSON object with the following fields:
- cron or every: task schedule
- name: task name
- scriptID: invokable script ID
curl --request POST 'https://cloud2.influxdata.com/api/v2/tasks' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token INFLUX_API_TOKEN' \
"cron": "0 * * * *",
"name": "downsample cpu",
"scriptID": "085a2960eaa20000",
"description": "This task downsamples CPU data every hour"
}'
To create a task that passes parameters when invoking the script, pass the scriptParameters
property in the request body.
The following sample code creates a script with parameters, and then creates a
task to run the new script daily:
SCRIPT_ID=$(
curl https://cloud2.influxdata.com/api/v2/scripts \
--header "Authorization: Token INFLUX_API_TOKEN" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-binary @- << EOF | jq -r '.id'
{
"name": "filter-and-group19",
"description": "Returns filtered and grouped points from a bucket.",
"script": "from(bucket: params.bucket)\
|> range(start: duration(v: params.rangeStart))\
|> filter(fn: (r) => r._field == params.filterField)\
|> group(columns: [params.groupColumn])",
"language": "flux"
}
EOF
)
echo $SCRIPT_ID
curl https://cloud2.influxdata.com/api/v2/tasks \
--header "Content-type: application/json" \
--header "Authorization: Token INFLUX_API_TOKEN" \
--data @- << EOF
{
"name": "30-day-avg-temp",
"description": "IoT Center 30d temperature average.",
"every": "1d",
"scriptID": "${SCRIPT_ID}",
"scriptParameters":
{
"rangeStart": "-30d",
"bucket": "air_sensor",
"filterField": "temperature",
"groupColumn": "_time"
}
}
EOF
Replace INFLUX_API_TOKEN
with your InfluxDB API token.
Create a task that contains a Flux script
Use the /api/v2/tasks
InfluxDB API endpoint to create a task that contains a Flux script with task options.
POST https://cloud2.influxdata.com/api/v2/tasks/
Provide the following in your API request:
Request headers
- Content-Type: application/json
- Authorization: Token
INFLUX_API_TOKEN
Request body
JSON object with the following fields:
- flux: raw Flux task string that contains
options
and the query. - status: task status (“active” or “inactive”)
- description: task description
curl --request POST 'https://cloud2.influxdata.com/api/v2/tasks' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token INFLUX_API_TOKEN' \
--data-binary @- << EOF
{
"flux": "option task = {name: \"CPU Total 1 Hour New\", every: 1h}\
from(bucket: \"telegraf\")
|> range(start: -1h)
|> filter(fn: (r) => (r._measurement == \"cpu\"))
|> filter(fn: (r) =>\n\t\t(r._field == \"usage_system\"))
|> filter(fn: (r) => (r.cpu == \"cpu-total\"))
|> aggregateWindow(every: 1h, fn: max)
|> to(bucket: \"cpu_usage_user_total_1h\", org: \"INFLUX_ORG\")",
"orgID": "INFLUX_ORG_ID",
"status": "active",
"description": "This task downsamples CPU data every hour"
}
EOF
Replace the following:
INFLUX_API_TOKEN
: your InfluxDB API tokenINFLUX_ORG
: your InfluxDB organization nameINFLUX_ORG_ID
: your InfluxDB organization ID
Was this page helpful?
Thank you for your feedback!
Support and feedback
Thank you for being part of our community! We welcome and encourage your feedback and bug reports for InfluxDB and this documentation. To find support, use the following resources:
Customers with an annual or support contract can contact InfluxData Support.