Merge pull request #6047 from influxdata/staging/6023-admin-ui-docs-for-cloud-dedicated
feat(dedicated): Admin UI: Add create table, revise create database a…pull/6049/head
commit
01167ecb77
|
@ -397,6 +397,26 @@ paths:
|
||||||
post:
|
post:
|
||||||
operationId: CreateClusterDatabase
|
operationId: CreateClusterDatabase
|
||||||
summary: Create a database
|
summary: Create a database
|
||||||
|
description: |
|
||||||
|
Create a database for a cluster.
|
||||||
|
|
||||||
|
The database name must be unique within the cluster.
|
||||||
|
|
||||||
|
**Default maximum number of columns**: 250
|
||||||
|
**Default maximum number of tables**: 500
|
||||||
|
|
||||||
|
The retention period is specified in nanoseconds. For example, to set a retention period of 1 hour, use `3600000000000`.
|
||||||
|
|
||||||
|
InfluxDB Cloud Dedicated lets you define a [custom partitioning](/influxdb3/cloud-dedicated/admin/custom-partitions/) strategy for each database and table.
|
||||||
|
A _partition_ is a logical grouping of data stored in [Apache Parquet](https://parquet.apache.org/).
|
||||||
|
By default, data is partitioned by day,
|
||||||
|
but, depending on your schema and workload, customizing the partitioning
|
||||||
|
strategy can improve query performance.
|
||||||
|
|
||||||
|
To use custom partitioning, you define a [partition template](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/).
|
||||||
|
If a table doesn't have a custom partition template, it inherits the database's template.
|
||||||
|
The partition template is set at the time of database creation and cannot be changed later.
|
||||||
|
For more information, see [Custom partitions](/influxdb3/cloud-dedicated/admin/custom-partitions/).
|
||||||
tags:
|
tags:
|
||||||
- Databases
|
- Databases
|
||||||
parameters:
|
parameters:
|
||||||
|
@ -779,6 +799,18 @@ paths:
|
||||||
post:
|
post:
|
||||||
operationId: CreateClusterDatabaseTable
|
operationId: CreateClusterDatabaseTable
|
||||||
summary: Create a database table
|
summary: Create a database table
|
||||||
|
description: |
|
||||||
|
Create a table. The database must already exist. With InfluxDB Cloud Dedicated, tables and measurements are synonymous.
|
||||||
|
|
||||||
|
Typically, tables are created automatically on write using the measurement name
|
||||||
|
specified in line protocol written to InfluxDB.
|
||||||
|
However, to apply a [custom partition template](/influxdb3/cloud-dedicated/admin/custom-partitions/)
|
||||||
|
to a table, you must manually [create the table with custom partitioning](/influxdb3/cloud-dedicated/admin/tables/#create-a-table-with-custom-partitioning) before you write any data to it.
|
||||||
|
|
||||||
|
Partitioning defaults to `%Y-%m-%d` (daily).
|
||||||
|
When a partition template is applied to a database, it becomes the default template
|
||||||
|
for all tables in that database, but can be overridden when creating a
|
||||||
|
table.
|
||||||
tags:
|
tags:
|
||||||
- Tables
|
- Tables
|
||||||
parameters:
|
parameters:
|
||||||
|
@ -1185,6 +1217,14 @@ paths:
|
||||||
get:
|
get:
|
||||||
operationId: GetDatabaseToken
|
operationId: GetDatabaseToken
|
||||||
summary: Get a database token
|
summary: Get a database token
|
||||||
|
description: |
|
||||||
|
Retrieve metadata details for a [database token](/influxdb3/cloud-dedicated/admin/tokens/database/).
|
||||||
|
|
||||||
|
#### Store secure tokens in a secret store
|
||||||
|
|
||||||
|
We recommend storing database tokens in a **secure secret store**.
|
||||||
|
|
||||||
|
Token strings are viewable _only_ on token creation and aren't stored by InfluxDB; you can't recover a lost token.
|
||||||
tags:
|
tags:
|
||||||
- Database tokens
|
- Database tokens
|
||||||
parameters:
|
parameters:
|
||||||
|
@ -1299,6 +1339,8 @@ paths:
|
||||||
patch:
|
patch:
|
||||||
operationId: UpdateDatabaseToken
|
operationId: UpdateDatabaseToken
|
||||||
summary: Update a database token
|
summary: Update a database token
|
||||||
|
description: |
|
||||||
|
Update the description and permissions of a [database token](/influxdb3/cloud-dedicated/admin/tokens/database/).
|
||||||
tags:
|
tags:
|
||||||
- Database tokens
|
- Database tokens
|
||||||
parameters:
|
parameters:
|
||||||
|
@ -1317,7 +1359,6 @@ paths:
|
||||||
- name: tokenId
|
- name: tokenId
|
||||||
in: path
|
in: path
|
||||||
description: The ID of the [database token](/influxdb3/cloud-dedicated/admin/tokens/database/) to update
|
description: The ID of the [database token](/influxdb3/cloud-dedicated/admin/tokens/database/) to update
|
||||||
required: true
|
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/UuidV4'
|
$ref: '#/components/schemas/UuidV4'
|
||||||
requestBody:
|
requestBody:
|
||||||
|
@ -1625,9 +1666,9 @@ components:
|
||||||
description: |
|
description: |
|
||||||
A template for [partitioning](/influxdb3/cloud-dedicated/admin/custom-partitions/) a cluster database.
|
A template for [partitioning](/influxdb3/cloud-dedicated/admin/custom-partitions/) a cluster database.
|
||||||
|
|
||||||
Each template part is evaluated in sequence, concatinating the final
|
Each partition template part is evaluated in sequence.
|
||||||
partition key from the output of each part, delimited by the partition
|
The outputs from each part are concatenated with the
|
||||||
key delimiter `|`.
|
`|` delimiter to form the final partition key.
|
||||||
|
|
||||||
For example, using the partition template below:
|
For example, using the partition template below:
|
||||||
|
|
||||||
|
|
|
@ -14,5 +14,6 @@ source: /shared/v3-distributed-admin-custom-partitions/define-custom-partitions.
|
||||||
---
|
---
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
The content of this page is at /content/shared/v3-distributed-admin-custom-partitions/_define-custom-partitions.md
|
The content of this page is at
|
||||||
|
//SOURCE - content/shared/v3-distributed-admin-custom-partitions/define-custom-partitions.md
|
||||||
-->
|
-->
|
||||||
|
|
|
@ -4,7 +4,7 @@ description: >
|
||||||
Use the Admin UI, the [`influxctl database create` command](/influxdb3/cloud-dedicated/reference/cli/influxctl/database/create/),
|
Use the Admin UI, the [`influxctl database create` command](/influxdb3/cloud-dedicated/reference/cli/influxctl/database/create/),
|
||||||
or the [Management HTTP API](/influxdb3/cloud-dedicated/api/management/)
|
or the [Management HTTP API](/influxdb3/cloud-dedicated/api/management/)
|
||||||
to create a new InfluxDB database in your InfluxDB Cloud Dedicated cluster.
|
to create a new InfluxDB database in your InfluxDB Cloud Dedicated cluster.
|
||||||
Provide a database name and an optional retention period.
|
You can create a database with an optional retention period and custom partitioning.
|
||||||
menu:
|
menu:
|
||||||
influxdb3_cloud_dedicated:
|
influxdb3_cloud_dedicated:
|
||||||
parent: Manage databases
|
parent: Manage databases
|
||||||
|
@ -12,57 +12,19 @@ weight: 201
|
||||||
list_code_example: |
|
list_code_example: |
|
||||||
<!--pytest.mark.skip-->
|
<!--pytest.mark.skip-->
|
||||||
##### CLI
|
##### CLI
|
||||||
```sh
|
```bash
|
||||||
influxctl database create \
|
influxctl database create \
|
||||||
--retention-period 30d \
|
--retention-period 30d \
|
||||||
--max-tables 500 \
|
|
||||||
--max-columns 250 \
|
|
||||||
DATABASE_NAME
|
DATABASE_NAME
|
||||||
```
|
```
|
||||||
|
|
||||||
<!--pytest.mark.skip-->
|
<!--pytest.mark.skip-->
|
||||||
##### API
|
##### API
|
||||||
```sh
|
```bash
|
||||||
curl \
|
curl \
|
||||||
--location "https://console.influxdata.com/api/v0/accounts/ACCOUNT_ID/clusters/CLUSTER_ID/databases" \
|
--location "https://console.influxdata.com/api/v0/accounts/ACCOUNT_ID/clusters/CLUSTER_ID/databases" \
|
||||||
--request POST \
|
|
||||||
--header "Accept: application/json" \
|
|
||||||
--header 'Content-Type: application/json' \
|
|
||||||
--header "Authorization: Bearer MANAGEMENT_TOKEN" \
|
--header "Authorization: Bearer MANAGEMENT_TOKEN" \
|
||||||
--data '{
|
--json '{ "name": "DATABASE_NAME" }'
|
||||||
"name": "'DATABASE_NAME'",
|
|
||||||
"maxTables": 500,
|
|
||||||
"maxColumnsPerTable": 250,
|
|
||||||
"retentionPeriod": 2592000000000,
|
|
||||||
"partitionTemplate": [
|
|
||||||
{
|
|
||||||
"type": "tag",
|
|
||||||
"value": "TAG_KEY_1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "tag",
|
|
||||||
"value": "TAG_KEY_2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "bucket",
|
|
||||||
"value": {
|
|
||||||
"tagName": "TAG_KEY_3",
|
|
||||||
"numberOfBuckets": 100
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "bucket",
|
|
||||||
"value": {
|
|
||||||
"tagName": "TAG_KEY_4",
|
|
||||||
"numberOfBuckets": 300
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "time",
|
|
||||||
"value": "%Y-%m-%d"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}'
|
|
||||||
```
|
```
|
||||||
related:
|
related:
|
||||||
- /influxdb3/cloud-dedicated/reference/cli/influxctl/database/create/
|
- /influxdb3/cloud-dedicated/reference/cli/influxctl/database/create/
|
||||||
|
@ -72,6 +34,18 @@ related:
|
||||||
|
|
||||||
Use the Admin UI, the [`influxctl` CLI](/influxdb3/cloud-dedicated/reference/cli/influxctl/),
|
Use the Admin UI, the [`influxctl` CLI](/influxdb3/cloud-dedicated/reference/cli/influxctl/),
|
||||||
or the [Management HTTP API](/influxdb3/cloud-dedicated/api/management/) to create a database in your {{< product-name omit=" Clustered" >}} cluster.
|
or the [Management HTTP API](/influxdb3/cloud-dedicated/api/management/) to create a database in your {{< product-name omit=" Clustered" >}} cluster.
|
||||||
|
You can create a database with an optional retention period and custom partitioning.
|
||||||
|
|
||||||
|
- [Create a database](#create-a-database)
|
||||||
|
- [Create a database with custom partitioning](#create-a-database-with-custom-partitioning)
|
||||||
|
- [Partition template requirements and guidelines](#partition-template-requirements-and-guidelines)
|
||||||
|
- [Database attributes](#database-attributes)
|
||||||
|
- [Retention period syntax](#retention-period-syntax)
|
||||||
|
- [Database naming restrictions](#database-naming-restrictions)
|
||||||
|
- [InfluxQL DBRP naming convention](#influxql-dbrp-naming-convention)
|
||||||
|
- [Table and column limits](#table-and-column-limits)
|
||||||
|
|
||||||
|
## Create a database
|
||||||
|
|
||||||
{{< tabs-wrapper >}}
|
{{< tabs-wrapper >}}
|
||||||
{{% tabs %}}
|
{{% tabs %}}
|
||||||
|
@ -79,68 +53,126 @@ or the [Management HTTP API](/influxdb3/cloud-dedicated/api/management/) to crea
|
||||||
[influxctl](#)
|
[influxctl](#)
|
||||||
[Management API](#)
|
[Management API](#)
|
||||||
{{% /tabs %}}
|
{{% /tabs %}}
|
||||||
|
|
||||||
{{% tab-content %}}
|
{{% tab-content %}}
|
||||||
<!------------------------------- BEGIN ADMIN UI ------------------------------>
|
<!------------------------------- BEGIN ADMIN UI ------------------------------>
|
||||||
The InfluxDB Cloud Dedicated administrative UI includes a portal for creating
|
1. Open the {{< product-name >}} Admin UI at
|
||||||
and managing databases.
|
|
||||||
|
|
||||||
1. To access the {{< product-name >}} Admin UI, visit the following URL in your browser:
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<a href="https://console.influxdata.com">https://console.influxdata.com</a>
|
<a href="https://console.influxdata.com">https://console.influxdata.com</a>
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
2. Use the credentials provided by InfluxData to log into the Admin UI.
|
2. Use the credentials provided by InfluxData to log into the Admin UI.
|
||||||
If you don't have login credentials, [contact InfluxData support](https://support.influxdata.com).
|
If you don't have login credentials, [contact InfluxData support](https://support.influxdata.com).
|
||||||
3. In the cluster list, find the cluster you want to create a database in. You
|
|
||||||
|
3. In the cluster list, find and click the cluster you want to create a database in. You
|
||||||
can sort on column headers or use the **Search** field to find a specific cluster.
|
can sort on column headers or use the **Search** field to find a specific cluster.
|
||||||
4. Click the row for the cluster that you want to create a database in.
|
|
||||||
5. Click the **New Database** button in the upper right corner of the cluster details page.
|
4. Click the **New Database** button above the database list.
|
||||||
The **Create Database** dialog displays.
|
The **Create Database** dialog displays.
|
||||||
|
|
||||||
<img src="/img/influxdb3/cloud-dedicated-admin-ui-create-database.png" alt="Create database dialog" />
|
<img src="/img/influxdb3/cloud-dedicated-admin-ui-create-database.png" alt="Create database dialog" />
|
||||||
6. In the **Create Database** dialog, provide the following information:
|
|
||||||
|
5. In the **Create Database** dialog, provide the following information:
|
||||||
- **Database name**: The name of the database to create. See [Database naming restrictions](#database-naming-restrictions).
|
- **Database name**: The name of the database to create. See [Database naming restrictions](#database-naming-restrictions).
|
||||||
- **Retention period**: The retention period for the database. See [Retention period syntax (influxctl CLI)](#retention-period-syntax-influxctl-cli).
|
- **Retention period**: The retention period for the database. See [Retention period syntax](#retention-period-syntax).
|
||||||
- **Max tables**: The maximum number of tables (measurements) allowed in the database. Default is 500.
|
- **Max tables**: The maximum number of tables (measurements) allowed in the database. Default is 500.
|
||||||
- **Max columns per table**: The maximum number of columns allowed in each table (measurement). Default is 250.
|
- **Max columns per table**: The maximum number of columns allowed in each table (measurement). Default is 250.
|
||||||
7. Click the **Create Database** button to create the database.
|
|
||||||
|
6. Click the **Create Database** button to create the database.
|
||||||
The new database displays in the list of databases for the cluster.
|
The new database displays in the list of databases for the cluster.
|
||||||
{{% /tab-content %}}
|
{{% /tab-content %}}
|
||||||
|
|
||||||
{{% tab-content %}}
|
{{% tab-content %}}
|
||||||
<!------------------------------- BEGIN INFLUXCTL ----------------------------->
|
<!------------------------------- BEGIN INFLUXCTL ----------------------------->
|
||||||
Use the [`influxctl database create` command](/influxdb3/cloud-dedicated/reference/cli/influxctl/database/create/)
|
1. If you haven't already, [download and install the `influxctl` CLI](/influxdb3/cloud-dedicated/reference/cli/influxctl/#download-and-install-influxctl), and then [configure an `influxctl` connection profile](/influxdb3/cloud-dedicated/reference/cli/influxctl/#configure-connection-profiles) for your cluster.
|
||||||
to create a database in your {{< product-name omit=" Clustered" >}} cluster.
|
|
||||||
|
|
||||||
1. If you haven't already, [download and install the `influxctl` CLI](/influxdb3/cloud-dedicated/reference/cli/influxctl/#download-and-install-influxctl), and then [configure an `influxctl` connection profile](/influxdb3/cloud-dedicated/reference/cli/influxctl/#configure-connection-profiles) for your cluster.
|
2. Run the `influxctl database create` command:
|
||||||
|
|
||||||
2. In your terminal, run the `influxctl database create` command and provide the following:
|
{{% code-placeholders "DATABASE_NAME|30d" %}}
|
||||||
|
```bash
|
||||||
- _Optional_: Database [retention period](/influxdb3/cloud-dedicated/admin/databases/#retention-periods)
|
influxctl database create \
|
||||||
Default is `infinite` (`0`).
|
--retention-period 30d \
|
||||||
- _Optional_: Database table (measurement) limit. Default is `500`.
|
DATABASE_NAME
|
||||||
- _Optional_: Database column limit. Default is `250`.
|
```
|
||||||
- _Optional_: [InfluxDB tags](/influxdb3/cloud-dedicated/reference/glossary/#tag)
|
{{% /code-placeholders %}}
|
||||||
to use in the partition template. Limit is 7 total tags or tag buckets.
|
|
||||||
- _Optional_: [InfluxDB tag buckets](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#tag-bucket-part-templates)
|
Replace {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}} with your desired database name.
|
||||||
to use in the partition template. Limit is 7 total tags or tag buckets.
|
{{% /tab-content %}}
|
||||||
- _Optional_: A [Rust strftime date and time string](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#time-part-templates)
|
|
||||||
that specifies the time format in the partition template and determines
|
{{% tab-content %}}
|
||||||
the time interval to partition by. Default is `%Y-%m-%d`.
|
<!------------------------------- BEGIN MANAGEMENT API ----------------------->
|
||||||
- Database name _(see [Database naming restrictions](#database-naming-restrictions))_
|
_This example uses [cURL](https://curl.se/) to send a Management HTTP API request, but you can use any HTTP client._
|
||||||
|
|
||||||
> [!Note]
|
1. If you haven't already, follow the instructions to [install cURL](https://everything.curl.dev/install/index.html) for your system.
|
||||||
> _{{< product-name >}} supports up to 7 total tags or tag buckets in the partition template._
|
2. In your terminal, use cURL to send a request to the following {{% product-name %}} endpoint:
|
||||||
|
|
||||||
<!--Skip tests for database create and delete: namespaces aren't reusable-->
|
{{% api-endpoint method="POST"
|
||||||
<!--pytest.mark.skip-->
|
endpoint="https://console.influxdata.com/api/v0/accounts/ACCOUNT_ID/clusters/CLUSTER_ID/databases"
|
||||||
|
api-ref="/influxdb3/cloud-dedicated/api/management/#operation/CreateClusterDatabase" %}}
|
||||||
{{% code-placeholders "DATABASE_NAME|30d|500|100|300|(TAG_KEY(_\d)?)" %}}
|
|
||||||
|
{{% code-placeholders "ACCOUNT_ID|CLUSTER_ID|MANAGEMENT_TOKEN|DATABASE_NAME" %}}
|
||||||
```sh
|
```bash
|
||||||
|
curl \
|
||||||
|
--location "https://console.influxdata.com/api/v0/accounts/ACCOUNT_ID/clusters/CLUSTER_ID/databases" \
|
||||||
|
--header "Authorization: Bearer MANAGEMENT_TOKEN" \
|
||||||
|
--json '{
|
||||||
|
"name": "DATABASE_NAME"
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
{{% /code-placeholders %}}
|
||||||
|
|
||||||
|
Replace the following:
|
||||||
|
|
||||||
|
- {{% code-placeholder-key %}}`ACCOUNT_ID`{{% /code-placeholder-key %}}: the [account](/influxdb3/cloud-dedicated/admin/account/) ID for the cluster _(list details via the [Admin UI](/influxdb3/cloud-dedicated/admin/clusters/list/) or [CLI](/influxdb3/cloud-dedicated/admin/clusters/list/#detailed-output-in-json))_
|
||||||
|
- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: the [cluster](/influxdb3/cloud-dedicated/admin/clusters/) ID _(list details via the [Admin UI](/influxdb3/cloud-dedicated/admin/clusters/list/) or [CLI](/influxdb3/cloud-dedicated/admin/clusters/list/#detailed-output-in-json))_.
|
||||||
|
- {{% code-placeholder-key %}}`MANAGEMENT_TOKEN`{{% /code-placeholder-key %}}: a valid [management token](/influxdb3/cloud-dedicated/admin/tokens/management/) for your {{% product-name %}} cluster
|
||||||
|
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: name for the new database
|
||||||
|
{{% /tab-content %}}
|
||||||
|
{{< /tabs-wrapper >}}
|
||||||
|
|
||||||
|
Partitioning defaults to `%Y-%m-%d` (daily).
|
||||||
|
|
||||||
|
## Create a database with custom partitioning
|
||||||
|
|
||||||
|
{{< product-name >}} lets you define a [custom partitioning](/influxdb3/cloud-dedicated/admin/custom-partitions/) strategy for each database and table.
|
||||||
|
A _partition_ is a logical grouping of data stored in [Apache Parquet](https://parquet.apache.org/)
|
||||||
|
By default, data is partitioned by day,
|
||||||
|
but, depending on your schema and workload, customizing the partitioning
|
||||||
|
strategy can improve query performance.
|
||||||
|
|
||||||
|
To use custom partitioning, you define a [partition template](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/).
|
||||||
|
If a table doesn't have a custom partition template, it inherits the database's template.
|
||||||
|
|
||||||
|
{{< tabs-wrapper >}}
|
||||||
|
{{% tabs %}}
|
||||||
|
[influxctl](#)
|
||||||
|
[Management API](#)
|
||||||
|
{{% /tabs %}}
|
||||||
|
{{% tab-content %}}
|
||||||
|
<!------------------------------- BEGIN INFLUXCTL CUSTOM ------------------->
|
||||||
|
1. If you haven't already, [download and install the `influxctl` CLI](/influxdb3/cloud-dedicated/get-started/setup/#download-install-and-configure-the-influxctl-cli).
|
||||||
|
2. Use the following `influxctl database create` command flags to specify the
|
||||||
|
[partition template parts](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#tag-part-templates):
|
||||||
|
|
||||||
|
- `--template-timeformat`: A [Rust strftime date and time](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#time-part-templates)
|
||||||
|
string that specifies the time part in the partition template and determines
|
||||||
|
the time interval to partition by.
|
||||||
|
Use one of the following:
|
||||||
|
|
||||||
|
- `%Y-%m-%d` (daily)
|
||||||
|
- `%Y-%m` (monthly)
|
||||||
|
- `%Y` (annually)
|
||||||
|
- `--template-tag`: An [InfluxDB tag]
|
||||||
|
to use in the partition template.
|
||||||
|
- `--template-tag-bucket`: An [InfluxDB tag](/influxdb3/cloud-dedicated/reference/glossary/#tag)
|
||||||
|
and number of "buckets" to group tag values into.
|
||||||
|
Provide the tag key and the number of buckets to bucket tag values into
|
||||||
|
separated by a comma: `tagKey,N`.
|
||||||
|
|
||||||
|
{{% code-placeholders "DATABASE_NAME|30d|(TAG_KEY(_\d)?)|100|300" %}}
|
||||||
|
```bash
|
||||||
influxctl database create \
|
influxctl database create \
|
||||||
--retention-period 30d \
|
--retention-period 30d \
|
||||||
--max-tables 500 \
|
|
||||||
--max-columns 250 \
|
|
||||||
--template-tag TAG_KEY_1 \
|
--template-tag TAG_KEY_1 \
|
||||||
--template-tag TAG_KEY_2 \
|
--template-tag TAG_KEY_2 \
|
||||||
--template-tag-bucket TAG_KEY_3,100 \
|
--template-tag-bucket TAG_KEY_3,100 \
|
||||||
|
@ -148,233 +180,128 @@ influxctl database create \
|
||||||
--template-timeformat '%Y-%m-%d' \
|
--template-timeformat '%Y-%m-%d' \
|
||||||
DATABASE_NAME
|
DATABASE_NAME
|
||||||
```
|
```
|
||||||
|
|
||||||
{{% /code-placeholders %}}
|
{{% /code-placeholders %}}
|
||||||
|
|
||||||
Replace the following in your command:
|
Replace the following:
|
||||||
|
|
||||||
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: your {{% product-name %}} [database](/influxdb3/cloud-dedicated/admin/databases/)
|
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the name of the database to create
|
||||||
- {{% code-placeholder-key %}}`TAG_KEY_1`, `TAG_KEY_2`, `TAG_KEY_3`, and `TAG_KEY_4`{{% /code-placeholder-key %}}: [tag](/influxdb3/cloud-dedicated/reference/glossary/#tag) keys from your data
|
- {{% code-placeholder-key %}}`TAG_KEY_1`, `TAG_KEY_2`{{% /code-placeholder-key %}}: [tag](/influxdb3/cloud-dedicated/reference/glossary/#tag) keys to partition by
|
||||||
|
- {{% code-placeholder-key %}}`TAG_KEY_3`, `TAG_KEY_4`{{% /code-placeholder-key %}}: [tag](/influxdb3/cloud-dedicated/reference/glossary/#tag) keys for bucketed partitioning
|
||||||
## Database attributes
|
- {{% code-placeholder-key %}}`100`, `300`{{% /code-placeholder-key %}}: number of buckets to group tag values into
|
||||||
|
- {{% code-placeholder-key %}}`'%Y-%m-%d'`{{% /code-placeholder-key %}}: [Rust strftime date and time](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#time-part-templates) string that specifies the time part in the partition template
|
||||||
- [Database attributes](#database-attributes)
|
|
||||||
- [Retention period syntax (influxctl CLI)](#retention-period-syntax-influxctl-cli)
|
|
||||||
- [Custom partitioning (influxctl CLI)](#custom-partitioning-influxctl-cli)
|
|
||||||
- [Database attributes](#database-attributes-1)
|
|
||||||
- [Retention period syntax (Management API)](#retention-period-syntax-management-api)
|
|
||||||
- [Custom partitioning (Management API)](#custom-partitioning-management-api)
|
|
||||||
- [Database naming restrictions](#database-naming-restrictions)
|
|
||||||
- [InfluxQL DBRP naming convention](#influxql-dbrp-naming-convention)
|
|
||||||
- [Table and column limits](#table-and-column-limits)
|
|
||||||
|
|
||||||
### Retention period syntax (influxctl CLI)
|
|
||||||
|
|
||||||
Use the `--retention-period` flag to define the
|
|
||||||
[retention period](/influxdb3/cloud-dedicated/admin/databases/#retention-periods)
|
|
||||||
for the database.
|
|
||||||
The retention period value is a time duration value made up of a numeric value
|
|
||||||
plus a duration unit.
|
|
||||||
For example, `30d` means 30 days.
|
|
||||||
A zero duration (`0d`) retention period is infinite and data won't expire.
|
|
||||||
The retention period value cannot be negative or contain whitespace.
|
|
||||||
|
|
||||||
{{< flex >}}
|
|
||||||
{{% flex-content "half" %}}
|
|
||||||
|
|
||||||
#### Valid durations units include
|
|
||||||
|
|
||||||
- **m**: minute
|
|
||||||
- **h**: hour
|
|
||||||
- **d**: day
|
|
||||||
- **w**: week
|
|
||||||
- **mo**: month
|
|
||||||
- **y**: year
|
|
||||||
|
|
||||||
{{% /flex-content %}}
|
|
||||||
{{% flex-content "half" %}}
|
|
||||||
|
|
||||||
#### Example retention period values
|
|
||||||
|
|
||||||
- `0d`: infinite/none
|
|
||||||
- `3d`: 3 days
|
|
||||||
- `6w`: 6 weeks
|
|
||||||
- `1mo`: 1 month (30 days)
|
|
||||||
- `1y`: 1 year
|
|
||||||
- `30d30d`: 60 days
|
|
||||||
- `2.5d`: 60 hours
|
|
||||||
|
|
||||||
{{% /flex-content %}}
|
|
||||||
{{< /flex >}}
|
|
||||||
|
|
||||||
### Custom partitioning (influxctl CLI)
|
|
||||||
|
|
||||||
{{< product-name >}} lets you define a custom partitioning strategy for each database.
|
|
||||||
A _partition_ is a logical grouping of data stored in [Apache Parquet](https://parquet.apache.org/)
|
|
||||||
format in the InfluxDB 3 storage engine. By default, data is partitioned by day,
|
|
||||||
but, depending on your schema and workload, customizing the partitioning
|
|
||||||
strategy can improve query performance.
|
|
||||||
|
|
||||||
Use the `--template-tag`, `--template-tag-bucket`, and `--template-timeformat`
|
|
||||||
flags to define partition template parts used to generate partition keys for the database.
|
|
||||||
|
|
||||||
For more information, see [Manage data partitioning](/influxdb3/cloud-dedicated/admin/custom-partitions/).
|
|
||||||
|
|
||||||
<!-------------------------------- END INFLUXCTL ------------------------------>
|
|
||||||
{{% /tab-content %}}
|
{{% /tab-content %}}
|
||||||
{{% tab-content %}}
|
{{% tab-content %}}
|
||||||
<!------------------------------- BEGIN cURL ---------------------------------->
|
<!------------------------------- BEGIN MANAGEMENT API --------------->
|
||||||
|
|
||||||
_This example uses [cURL](https://curl.se/) to send a Management HTTP API request, but you can use any HTTP client._
|
_This example uses [cURL](https://curl.se/) to send a Management HTTP API request, but you can use any HTTP client._
|
||||||
|
|
||||||
1. If you haven't already, follow the instructions to [install cURL](https://everything.curl.dev/install/index.html) for your system.
|
1. If you haven't already, follow the instructions to [install cURL](https://everything.curl.dev/install/index.html) for your system.
|
||||||
2. In your terminal, use cURL to send a request to the following {{% product-name %}} endpoint:
|
2. In your terminal, use cURL to send a request to the following {{% product-name %}} endpoint:
|
||||||
|
|
||||||
{{% api-endpoint endpoint="https://console.influxdata.com/api/v0/accounts/ACCOUNT_ID/clusters/CLUSTER_ID/databases" method="post" api-ref="/influxdb3/cloud-dedicated/api/management/#operation/CreateClusterDatabase" %}}
|
{{% api-endpoint method="POST"
|
||||||
|
endpoint="https://console.influxdata.com/api/v0/accounts/ACCOUNT_ID/clusters/CLUSTER_ID/databases"
|
||||||
|
api-ref="/influxdb3/cloud-dedicated/api/management/#operation/CreateClusterDatabase" %}}
|
||||||
|
|
||||||
In the URL, provide the following credentials:
|
In the request body, include the `partitionTemplate` property and specify the [partition template parts](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#tag-part-templates) as an array of objects--for example:
|
||||||
|
|
||||||
- `ACCOUNT_ID`: The ID of the [account](/influxdb3/cloud-dedicated/get-started/setup/#request-an-influxdb-cloud-dedicated-cluster) that the cluster belongs to _(see how to [list cluster details](/influxdb3/cloud-dedicated/admin/clusters/list/#detailed-output-in-json))_.
|
{{% code-placeholders "ACCOUNT_ID|CLUSTER_ID|DATABASE_NAME|MANAGEMENT_TOKEN|(TAG_KEY(_\d)?)|100|300|%Y-%m-%d" %}}
|
||||||
- `CLUSTER_ID`: The ID of the [cluster](/influxdb3/cloud-dedicated/get-started/setup/#request-an-influxdb-cloud-dedicated-cluster) that you want to manage _(see how to [list cluster details](/influxdb3/cloud-dedicated/admin/clusters/list/#detailed-output-in-json))_.
|
```bash
|
||||||
|
|
||||||
Provide the following request headers:
|
|
||||||
|
|
||||||
- `Accept: application/json` to ensure the response body is JSON content
|
|
||||||
- `Content-Type: application/json` to indicate the request body is JSON content
|
|
||||||
- `Authorization: Bearer` and a [Management API token](/influxdb3/cloud-dedicated/admin/tokens/management/) for your cluster _(see how to [create a management token](/influxdb3/cloud-dedicated/admin/tokens/management/) for Management API requests)_.
|
|
||||||
|
|
||||||
In the request body, provide the following parameters:
|
|
||||||
|
|
||||||
- _Optional:_ Database [retention period](/influxdb3/cloud-dedicated/admin/databases/#retention-periods) in nanoseconds.
|
|
||||||
Default is `0` (infinite).
|
|
||||||
- _Optional_: Database table (measurement) limit. Default is `500`.
|
|
||||||
- _Optional_: Database column limit. Default is `250`.
|
|
||||||
- _Optional_: [InfluxDB tags](/influxdb3/cloud-dedicated/reference/glossary/#tag)
|
|
||||||
to use in the partition template. Limit is 7 total tags or tag buckets.
|
|
||||||
- _Optional_: [InfluxDB tag buckets](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#tag-bucket-part-templates)
|
|
||||||
to use in the partition template. Limit is 7 total tags or tag buckets.
|
|
||||||
- _Optional_: A supported [Rust strftime date and time string](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#time-part-templates)
|
|
||||||
that specifies the time format in the partition template and determines
|
|
||||||
the time interval to partition by. Default is `%Y-%m-%d`.
|
|
||||||
- Database name _(see [Database naming restrictions](#database-naming-restrictions))_.
|
|
||||||
|
|
||||||
> [!Note]
|
|
||||||
> _{{< product-name >}} supports up to 7 total tags or tag buckets in the partition template._
|
|
||||||
|
|
||||||
The following example shows how to use the Management API to create a database with custom partitioning:
|
|
||||||
|
|
||||||
<!--Skip tests for database create and delete: namespaces aren't reusable-->
|
|
||||||
<!--pytest.mark.skip-->
|
|
||||||
|
|
||||||
{{% code-placeholders "DATABASE_NAME|2592000000000|500|100|300|250|ACCOUNT_ID|CLUSTER_ID|MANAGEMENT_TOKEN|(TAG_KEY(_\d)?)" %}}
|
|
||||||
|
|
||||||
```sh
|
|
||||||
curl \
|
curl \
|
||||||
--location "https://console.influxdata.com/api/v0/accounts/ACCOUNT_ID/clusters/CLUSTER_ID/databases" \
|
--location "https://console.influxdata.com/api/v0/accounts/ACCOUNT_ID/clusters/CLUSTER_ID/databases" \
|
||||||
--request POST \
|
--header "Authorization: Bearer MANAGEMENT_TOKEN" \
|
||||||
--header "Accept: application/json" \
|
--json '{
|
||||||
--header 'Content-Type: application/json' \
|
"name": "DATABASE_NAME",
|
||||||
--header "Authorization: Bearer MANAGEMENT_TOKEN" \
|
"maxTables": 500,
|
||||||
--data '{
|
"maxColumnsPerTable": 250,
|
||||||
"name": "'DATABASE_NAME'",
|
"retentionPeriod": 2592000000000,
|
||||||
"maxTables": 500,
|
"partitionTemplate": [
|
||||||
"maxColumnsPerTable": 250,
|
{ "type": "tag", "value": "TAG_KEY_1" },
|
||||||
"retentionPeriod": 2592000000000,
|
{ "type": "tag", "value": "TAG_KEY_2" },
|
||||||
"partitionTemplate": [
|
{ "type": "bucket", "value": { "tagName": "TAG_KEY_3", "numberOfBuckets": 100 } },
|
||||||
{
|
{ "type": "bucket", "value": { "tagName": "TAG_KEY_4", "numberOfBuckets": 300 } },
|
||||||
"type": "tag",
|
{ "type": "time", "value": "%Y-%m-%d" }
|
||||||
"value": "TAG_KEY_1"
|
]
|
||||||
},
|
}'
|
||||||
{
|
|
||||||
"type": "tag",
|
|
||||||
"value": "TAG_KEY_2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "bucket",
|
|
||||||
"value": {
|
|
||||||
"tagName": "TAG_KEY_3",
|
|
||||||
"numberOfBuckets": 100
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "bucket",
|
|
||||||
"value": {
|
|
||||||
"tagName": "TAG_KEY_4",
|
|
||||||
"numberOfBuckets": 300
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "time",
|
|
||||||
"value": "%Y-%m-%d"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}'
|
|
||||||
```
|
```
|
||||||
|
|
||||||
{{% /code-placeholders %}}
|
{{% /code-placeholders %}}
|
||||||
|
|
||||||
Replace the following in your request:
|
Replace the following:
|
||||||
|
|
||||||
- {{% code-placeholder-key %}}`ACCOUNT_ID`{{% /code-placeholder-key %}}: the ID of the {{% product-name %}} [account](/influxdb3/cloud-dedicated/get-started/setup/#request-an-influxdb-cloud-dedicated-cluster) to create the database for
|
- {{% code-placeholder-key %}}`ACCOUNT_ID`{{% /code-placeholder-key %}}: the [account](/influxdb3/cloud-dedicated/admin/account/) ID for the cluster _(list details via the [Admin UI](/influxdb3/cloud-dedicated/admin/clusters/list/) or [CLI](/influxdb3/cloud-dedicated/admin/clusters/list/#detailed-output-in-json))_
|
||||||
- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: the ID of the {{% product-name %}} [cluster](/influxdb3/cloud-dedicated/get-started/setup/#request-an-influxdb-cloud-dedicated-cluster) to create the database for
|
- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: the [cluster](/influxdb3/cloud-dedicated/admin/clusters/) ID _(list details via the [Admin UI](/influxdb3/cloud-dedicated/admin/clusters/list/) or [CLI](/influxdb3/cloud-dedicated/admin/clusters/list/#detailed-output-in-json))_.
|
||||||
- {{% code-placeholder-key %}}`MANAGEMENT TOKEN`{{% /code-placeholder-key %}}: a [management token](/influxdb3/cloud-dedicated/admin/tokens/management/) for your {{% product-name %}} cluster
|
- {{% code-placeholder-key %}}`MANAGEMENT_TOKEN`{{% /code-placeholder-key %}}: a valid [management token](/influxdb3/cloud-dedicated/admin/tokens/management/) for your {{% product-name %}} cluster
|
||||||
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: your {{% product-name %}} [database](/influxdb3/cloud-dedicated/admin/databases/)
|
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: name for the new database
|
||||||
- {{% code-placeholder-key %}}`TAG_KEY_1`, `TAG_KEY_2`, `TAG_KEY_3`, and `TAG_KEY_4`{{% /code-placeholder-key %}}: [tag](/influxdb3/cloud-dedicated/reference/glossary/#tag) keys from your data
|
- {{% code-placeholder-key %}}`TAG_KEY_1`, `TAG_KEY_2`{{% /code-placeholder-key %}}: [tag](/influxdb3/cloud-dedicated/reference/glossary/#tag) keys to partition by
|
||||||
|
- {{% code-placeholder-key %}}`TAG_KEY_3`, `TAG_KEY_4`{{% /code-placeholder-key %}}: [tag](/influxdb3/cloud-dedicated/reference/glossary/#tag) keys for bucketed partitioning
|
||||||
|
- {{% code-placeholder-key %}}`100`, `300`{{% /code-placeholder-key %}}: number of buckets to group tag values into
|
||||||
|
- {{% code-placeholder-key %}}`'%Y-%m-%d'`{{% /code-placeholder-key %}}: [Rust strftime date and time](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#time-part-templates) string that specifies the time part in the partition template
|
||||||
|
|
||||||
|
{{% /tab-content %}}
|
||||||
|
{{< /tabs-wrapper >}}
|
||||||
|
|
||||||
|
## Partition template requirements and guidelines
|
||||||
|
|
||||||
|
Always specify 1 time part in your template.
|
||||||
|
A template has a maximum of 8 parts: 1 time part and up to 7 total tag and tag bucket parts.
|
||||||
|
|
||||||
|
For more information about partition template requirements and restrictions, see [Partition templates](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/).
|
||||||
|
|
||||||
|
> [!Warning]
|
||||||
|
> #### Partition templates can only be applied on create
|
||||||
|
>
|
||||||
|
> You can only apply a partition template when creating a database.
|
||||||
|
> You can't update a partition template on an existing database.
|
||||||
|
|
||||||
## Database attributes
|
## Database attributes
|
||||||
|
|
||||||
- [Database attributes](#database-attributes)
|
### Retention period syntax
|
||||||
- [Retention period syntax (influxctl CLI)](#retention-period-syntax-influxctl-cli)
|
|
||||||
- [Custom partitioning (influxctl CLI)](#custom-partitioning-influxctl-cli)
|
|
||||||
- [Database attributes](#database-attributes-1)
|
|
||||||
- [Retention period syntax (Management API)](#retention-period-syntax-management-api)
|
|
||||||
- [Custom partitioning (Management API)](#custom-partitioning-management-api)
|
|
||||||
- [Database naming restrictions](#database-naming-restrictions)
|
|
||||||
- [InfluxQL DBRP naming convention](#influxql-dbrp-naming-convention)
|
|
||||||
- [Table and column limits](#table-and-column-limits)
|
|
||||||
|
|
||||||
### Retention period syntax (Management API)
|
Specify how long InfluxDB retains data before automatically removing it.
|
||||||
|
|
||||||
Use the `retentionPeriod` property to specify the
|
{{< tabs-wrapper >}}
|
||||||
[retention period](/influxdb3/cloud-dedicated/admin/databases/#retention-periods)
|
{{% tabs %}}
|
||||||
for the database.
|
[influxctl CLI](#)
|
||||||
The retention period value is an integer (`<int32>`) that represents the number of nanoseconds.
|
[Management API](#)
|
||||||
For example, `2592000000000` means 30 days.
|
{{% /tabs %}}
|
||||||
A zero (`0`) retention period is infinite and data won't expire.
|
|
||||||
The retention period value cannot be negative or contain whitespace.
|
|
||||||
|
|
||||||
#### Example retention period values
|
{{% tab-content %}}
|
||||||
|
Use the `--retention-period` flag to define the retention period as a duration.
|
||||||
|
For example, `30d` means 30 days. A zero duration (`0d`) keeps data indefinitely.
|
||||||
|
|
||||||
|
{{< flex >}}
|
||||||
|
{{% flex-content "half" %}}
|
||||||
|
#### Valid duration units
|
||||||
|
- **m**: minute
|
||||||
|
- **h**: hour
|
||||||
|
- **d**: day
|
||||||
|
- **w**: week
|
||||||
|
- **mo**: month
|
||||||
|
- **y**: year
|
||||||
|
{{% /flex-content %}}
|
||||||
|
|
||||||
|
{{% flex-content "half" %}}
|
||||||
|
#### Example values
|
||||||
|
- `0d`: infinite/none
|
||||||
|
- `3d`: 3 days
|
||||||
|
- `6w`: 6 weeks
|
||||||
|
- `1mo`: 1 month (30 days)
|
||||||
|
- `1y`: 1 year
|
||||||
|
{{% /flex-content %}}
|
||||||
|
{{< /flex >}}
|
||||||
|
{{% /tab-content %}}
|
||||||
|
|
||||||
|
{{% tab-content %}}
|
||||||
|
Use the `retentionPeriod` property to specify the retention period as nanoseconds.
|
||||||
|
For example, `2592000000000` means 30 days. A value of `0` keeps data indefinitely.
|
||||||
|
|
||||||
|
#### Example values
|
||||||
- `0`: infinite/none
|
- `0`: infinite/none
|
||||||
- `259200000000000`: 3 days
|
- `259200000000000`: 3 days
|
||||||
- `2592000000000000`: 30 days
|
- `2592000000000000`: 30 days
|
||||||
- `31536000000000000`: 1 standard year (365 days)
|
- `31536000000000000`: 1 standard year (365 days)
|
||||||
|
|
||||||
### Custom partitioning (Management API)
|
|
||||||
|
|
||||||
{{< product-name >}} lets you define a custom partitioning strategy for each database.
|
|
||||||
A _partition_ is a logical grouping of data stored in [Apache Parquet](https://parquet.apache.org/)
|
|
||||||
format in the InfluxDB 3 storage engine. By default, data is partitioned by day,
|
|
||||||
but, depending on your schema and workload, customizing the partitioning
|
|
||||||
strategy can improve query performance.
|
|
||||||
|
|
||||||
Use the [`partitionTemplate`](/influxdb3/cloud-dedicated/api/management/#operation/CreateClusterDatabase)
|
|
||||||
property to define an array of partition template parts used to generate
|
|
||||||
partition keys for the database.
|
|
||||||
|
|
||||||
For more information, see [Manage data partitioning](/influxdb3/cloud-dedicated/admin/custom-partitions/).
|
|
||||||
|
|
||||||
<!------------------------------- END cURL ------------------------------------>
|
|
||||||
{{% /tab-content %}}
|
{{% /tab-content %}}
|
||||||
{{< /tabs-wrapper >}}
|
{{< /tabs-wrapper >}}
|
||||||
|
|
||||||
> [!Warning]
|
|
||||||
>
|
|
||||||
> #### Partition templates can only be applied on create
|
|
||||||
>
|
|
||||||
> You can only apply a partition template when creating a database.
|
|
||||||
> You can't update a partition template on an existing database.
|
|
||||||
|
|
||||||
### Database naming restrictions
|
### Database naming restrictions
|
||||||
|
|
||||||
Database names must adhere to the following naming restrictions:
|
Database names must adhere to the following naming restrictions:
|
||||||
|
@ -392,11 +319,9 @@ and [retention policies](/influxdb/v1/concepts/glossary/#retention-policy-rp).
|
||||||
In {{% product-name %}}, databases and retention policies have been merged into
|
In {{% product-name %}}, databases and retention policies have been merged into
|
||||||
_databases_, where databases have a retention period, but retention policies
|
_databases_, where databases have a retention period, but retention policies
|
||||||
are no longer part of the data model.
|
are no longer part of the data model.
|
||||||
Because InfluxQL uses the 1.x data model, a database must be mapped to a v1
|
|
||||||
database and retention policy (DBRP) to be queryable with InfluxQL.
|
|
||||||
|
|
||||||
**When naming a database that you want to query with InfluxQL**, use the following
|
**When naming a database that you want to query with InfluxQL**, use the following
|
||||||
naming convention to automatically map v1 DBRP combinations to an {{% product-name %}} database:
|
naming convention:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
database_name/retention_policy_name
|
database_name/retention_policy_name
|
||||||
|
@ -434,15 +359,13 @@ cluster in the following ways:
|
||||||
|
|
||||||
{{< expand-wrapper >}}
|
{{< expand-wrapper >}}
|
||||||
{{% expand "**May improve query performance** <em style='opacity:.5;font-weight:normal;'>View more info</em>" %}}
|
{{% expand "**May improve query performance** <em style='opacity:.5;font-weight:normal;'>View more info</em>" %}}
|
||||||
|
|
||||||
Schemas with many measurements that contain
|
Schemas with many measurements that contain
|
||||||
[focused sets of tags and fields](/influxdb3/cloud-dedicated/write-data/best-practices/schema-design/#design-for-performance) can make it easier for the query engine to
|
[focused sets of tags and fields](/influxdb3/cloud-dedicated/write-data/best-practices/schema-design/#design-for-performance) can make it easier for the query engine to
|
||||||
identify what partitions contain the queried data, resulting in better
|
identify what partitions contain the queried data, resulting in better
|
||||||
query performance.
|
query performance.
|
||||||
|
|
||||||
{{% /expand %}}
|
{{% /expand %}}
|
||||||
{{% expand "**More PUTs into object storage** <em style='opacity:.5;font-weight:normal;'>View more info</em>" %}}
|
|
||||||
|
|
||||||
|
{{% expand "**More PUTs into object storage** <em style='opacity:.5;font-weight:normal;'>View more info</em>" %}}
|
||||||
By default, {{< product-name >}} partitions
|
By default, {{< product-name >}} partitions
|
||||||
data by measurement and time range and stores each partition as a Parquet
|
data by measurement and time range and stores each partition as a Parquet
|
||||||
file in your cluster's object store. By increasing the number of measurements
|
file in your cluster's object store. By increasing the number of measurements
|
||||||
|
@ -450,16 +373,14 @@ file in your cluster's object store. By increasing the number of measurements
|
||||||
more `PUT` requests into your object store as InfluxDB creates more partitions.
|
more `PUT` requests into your object store as InfluxDB creates more partitions.
|
||||||
Each `PUT` request incurs a monetary cost and will increase the operating cost of
|
Each `PUT` request incurs a monetary cost and will increase the operating cost of
|
||||||
your cluster.
|
your cluster.
|
||||||
|
|
||||||
{{% /expand %}}
|
{{% /expand %}}
|
||||||
{{% expand "**More work for the compactor** <em style='opacity:.5;font-weight:normal;'>View more info</em>" %}}
|
|
||||||
|
|
||||||
|
{{% expand "**More work for the compactor** <em style='opacity:.5;font-weight:normal;'>View more info</em>" %}}
|
||||||
To optimize storage over time, your {{< product-name omit=" Clustered" >}}
|
To optimize storage over time, your {{< product-name omit=" Clustered" >}}
|
||||||
cluster contains a compactor that routinely compacts Parquet files in object storage.
|
cluster contains a compactor that routinely compacts Parquet files in object storage.
|
||||||
With more tables and partitions to compact, the compactor may need to be scaled
|
With more tables and partitions to compact, the compactor may need to be scaled
|
||||||
(either vertically or horizontally) to keep up with demand, adding to the
|
(either vertically or horizontally) to keep up with demand, adding to the
|
||||||
operating cost of your cluster.
|
operating cost of your cluster.
|
||||||
|
|
||||||
{{% /expand %}}
|
{{% /expand %}}
|
||||||
{{< /expand-wrapper >}}
|
{{< /expand-wrapper >}}
|
||||||
|
|
||||||
|
@ -473,7 +394,6 @@ cluster in the following ways:
|
||||||
|
|
||||||
{{< expand-wrapper >}}
|
{{< expand-wrapper >}}
|
||||||
{{% expand "May adversely affect query performance" %}}
|
{{% expand "May adversely affect query performance" %}}
|
||||||
|
|
||||||
At query time, the InfluxDB query engine identifies what table contains the queried
|
At query time, the InfluxDB query engine identifies what table contains the queried
|
||||||
data and then evaluates each row in the table to match the conditions of the query.
|
data and then evaluates each row in the table to match the conditions of the query.
|
||||||
The more columns that are in each row, the longer it takes to evaluate each row.
|
The more columns that are in each row, the longer it takes to evaluate each row.
|
||||||
|
@ -481,6 +401,5 @@ The more columns that are in each row, the longer it takes to evaluate each row.
|
||||||
Through performance testing, InfluxData has identified 250 columns as the
|
Through performance testing, InfluxData has identified 250 columns as the
|
||||||
threshold beyond which query performance may be affected
|
threshold beyond which query performance may be affected
|
||||||
(depending on the shape of and data types in your schema).
|
(depending on the shape of and data types in your schema).
|
||||||
|
|
||||||
{{% /expand %}}
|
{{% /expand %}}
|
||||||
{{< /expand-wrapper >}}
|
{{< /expand-wrapper >}}
|
|
@ -1,17 +1,28 @@
|
||||||
---
|
---
|
||||||
title: Create a table
|
title: Create a table
|
||||||
description: >
|
description: >
|
||||||
Use the Admin UI or the [`influxctl table create` command](/influxdb3/cloud-dedicated/reference/cli/influxctl/table/create/)
|
Use the Admin UI, the [`influxctl table create` command](/influxdb3/cloud-dedicated/reference/cli/influxctl/table/create/), or the [Management HTTP API](/influxdb3/cloud-dedicated/api/management/)
|
||||||
to create a new table in a specified database your InfluxDB cluster.
|
for {{< product-name >}} to create a new table in a specified database your InfluxDB cluster.
|
||||||
Provide the database name and a table name.
|
Create a table with the same partitioning as the database or with a custom partition template.
|
||||||
menu:
|
menu:
|
||||||
influxdb3_cloud_dedicated:
|
influxdb3_cloud_dedicated:
|
||||||
parent: Manage tables
|
parent: Manage tables
|
||||||
weight: 201
|
weight: 201
|
||||||
list_code_example: |
|
list_code_example: |
|
||||||
```sh
|
<!--pytest.mark.skip-->
|
||||||
|
##### CLI
|
||||||
|
```bash
|
||||||
influxctl table create <DATABASE_NAME> <TABLE_NAME>
|
influxctl table create <DATABASE_NAME> <TABLE_NAME>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
<!--pytest.mark.skip-->
|
||||||
|
##### API
|
||||||
|
```bash
|
||||||
|
curl \
|
||||||
|
--location "https://console.influxdata.com/api/v0/accounts/ACCOUNT_ID/clusters/CLUSTER_ID/databases/DATABASE_NAME/tables/" \
|
||||||
|
--header "Authorization: Bearer MANAGEMENT_TOKEN" \
|
||||||
|
--json '{ "name": "TABLE_NAME" }'
|
||||||
|
```
|
||||||
related:
|
related:
|
||||||
- /influxdb3/cloud-dedicated/reference/cli/influxctl/table/create/
|
- /influxdb3/cloud-dedicated/reference/cli/influxctl/table/create/
|
||||||
- /influxdb3/cloud-dedicated/admin/custom-partitions/
|
- /influxdb3/cloud-dedicated/admin/custom-partitions/
|
||||||
|
@ -25,26 +36,170 @@ With {{< product-name >}}, tables and measurements are synonymous.
|
||||||
Typically, tables are created automatically on write using the measurement name
|
Typically, tables are created automatically on write using the measurement name
|
||||||
specified in line protocol written to InfluxDB.
|
specified in line protocol written to InfluxDB.
|
||||||
However, to apply a [custom partition template](/influxdb3/cloud-dedicated/admin/custom-partitions/)
|
However, to apply a [custom partition template](/influxdb3/cloud-dedicated/admin/custom-partitions/)
|
||||||
to a table, you must manually create the table before you write any data to it.
|
to a table, you must manually [create the table with custom partitioning](#create-a-table-with-custom-partitioning) before you write any data to it.
|
||||||
|
|
||||||
1. If you haven't already, [download and install the `influxctl` CLI](/influxdb3/cloud-dedicated/reference/cli/influxctl/#download-and-install-influxctl).
|
Partitioning defaults to `%Y-%m-%d` (daily).
|
||||||
2. Run the `influxctl table create` command and provide the following:
|
When a partition template is applied to a database, it becomes the default template
|
||||||
|
for all tables in that database, but can be overridden when creating a
|
||||||
|
table.
|
||||||
|
|
||||||
- _Optional_: [InfluxDB tags](/influxdb3/cloud-dedicated/reference/glossary/#tag)
|
- [Create a table](#create-a-table)
|
||||||
to use in the partition template
|
- [Create a table with custom partitioning](#create-a-table-with-custom-partitioning)
|
||||||
- _Optional_: [InfluxDB tag buckets](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#tag-bucket-part-templates)
|
- [Partition template requirements and guidelines](#partition-template-requirements-and-guidelines)
|
||||||
to use in the partition template
|
|
||||||
- _Optional_: A supported [Rust strftime date and time string](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#time-part-templates)
|
|
||||||
that specifies the time format in the partition template and determines
|
|
||||||
the time interval to partition by _(default is `%Y-%m-%d`)_
|
|
||||||
- The name of the database to create the table in
|
|
||||||
- The name of the table to create
|
|
||||||
|
|
||||||
> [!Note]
|
## Create a table
|
||||||
> _{{< product-name >}} supports up to 7 total tags or tag buckets in the partition template._
|
|
||||||
|
{{< tabs-wrapper >}}
|
||||||
|
{{% tabs %}}
|
||||||
|
[Admin UI](#)
|
||||||
|
[influxctl](#)
|
||||||
|
[Management API](#)
|
||||||
|
{{% /tabs %}}
|
||||||
|
{{% tab-content %}}
|
||||||
|
<!------------------------------- BEGIN ADMIN UI ------------------------------>
|
||||||
|
The InfluxDB Cloud Dedicated administrative UI includes a portal for creating
|
||||||
|
and managing tables.
|
||||||
|
|
||||||
|
1. To access the {{< product-name >}} Admin UI, visit the following URL in your browser:
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<a href="https://console.influxdata.com">https://console.influxdata.com</a>
|
||||||
|
</pre>
|
||||||
|
2. Use the credentials provided by InfluxData to log into the Admin UI.
|
||||||
|
If you don't have login credentials, [contact InfluxData support](https://support.influxdata.com).
|
||||||
|
3. In the cluster list, find and click the cluster you want to create a database in. You
|
||||||
|
can sort on column headers or use the **Search** field to find a specific cluster.
|
||||||
|
4. In the database list, find and click the database you want to create a table in. You
|
||||||
|
can sort on column headers or use the **Search** field to find a specific database.
|
||||||
|
4. Click the **New Table** button above the table list.
|
||||||
|
The **Create table** dialog displays.
|
||||||
|
5. In the **Create table** dialog, provide a **Table name**.
|
||||||
|
6. Toggle **Use default partitioning** to **On**
|
||||||
|
7. Click the **Create Table** button.
|
||||||
|
{{% /tab-content %}}
|
||||||
|
|
||||||
|
{{% tab-content %}}
|
||||||
|
<!------------------------------- BEGIN INFLUXCTL ----------------------------->
|
||||||
|
1. If you haven't already, [download and install the `influxctl` CLI](/influxdb3/cloud-dedicated/reference/cli/influxctl/#download-and-install-influxctl).
|
||||||
|
2. Run the `influxctl table create` command:
|
||||||
|
|
||||||
{{% code-placeholders "(DATABASE|TABLE)_NAME" %}}
|
{{% code-placeholders "(DATABASE|TABLE)_NAME" %}}
|
||||||
```sh
|
```bash
|
||||||
|
# Create a table with the same partitioning as the database
|
||||||
|
influxctl table create \
|
||||||
|
DATABASE_NAME \
|
||||||
|
TABLE_NAME
|
||||||
|
```
|
||||||
|
{{% /code-placeholders %}}
|
||||||
|
|
||||||
|
Replace:
|
||||||
|
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the database to create the table in
|
||||||
|
- {{% code-placeholder-key %}}`TABLE_NAME`{{% /code-placeholder-key %}}: the name for your new table
|
||||||
|
{{% /tab-content %}}
|
||||||
|
|
||||||
|
{{% tab-content %}}
|
||||||
|
<!------------------------------- BEGIN MANAGEMENT API ------------------------------>
|
||||||
|
_This example uses [cURL](https://curl.se/) to send a Management HTTP API request, but you can use any HTTP client._
|
||||||
|
|
||||||
|
1. If you haven't already, follow the instructions to [install cURL](https://everything.curl.dev/install/index.html) for your system.
|
||||||
|
2. In your terminal, use cURL to send a request to the following {{% product-name %}} endpoint:
|
||||||
|
|
||||||
|
{{% api-endpoint method="POST"
|
||||||
|
endpoint="https://console.influxdata.com/api/v0/accounts/ACCOUNT_ID/clusters/CLUSTER_ID/databases/DATABASE_NAME/tables"
|
||||||
|
api-ref="/influxdb3/cloud-dedicated/api/management/#operation/CreateClusterDatabaseTable" %}}
|
||||||
|
|
||||||
|
{{% code-placeholders "ACCOUNT_ID|CLUSTER_ID|DATABASE_NAME|TABLE_NAME|MANAGEMENT_TOKEN" %}}
|
||||||
|
```bash
|
||||||
|
# Create a table with the same partitioning as the database
|
||||||
|
curl \
|
||||||
|
--location "https://console.influxdata.com/api/v0/accounts/ACCOUNT_ID/clusters/CLUSTER_ID/databases/DATABASE_NAME/tables" \
|
||||||
|
--request POST \
|
||||||
|
--header "Authorization: Bearer MANAGEMENT_TOKEN" \
|
||||||
|
--json '{
|
||||||
|
"name": "TABLE_NAME"
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
{{% /code-placeholders %}}
|
||||||
|
|
||||||
|
Replace the following:
|
||||||
|
|
||||||
|
- {{% code-placeholder-key %}}`ACCOUNT_ID`{{% /code-placeholder-key %}}: the account ID for the cluster
|
||||||
|
- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: the cluster ID
|
||||||
|
- {{% code-placeholder-key %}}`MANAGEMENT_TOKEN`{{% /code-placeholder-key %}}: a valid management token
|
||||||
|
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the database to create the table in
|
||||||
|
- {{% code-placeholder-key %}}`TABLE_NAME`{{% /code-placeholder-key %}}: the name for your new table
|
||||||
|
{{% /tab-content %}}
|
||||||
|
{{< /tabs-wrapper >}}
|
||||||
|
|
||||||
|
## Create a table with custom partitioning
|
||||||
|
|
||||||
|
{{< product-name >}} lets you define a [custom partitioning](/influxdb3/cloud-dedicated/admin/custom-partitions/) strategy for each database and table.
|
||||||
|
A _partition_ is a logical grouping of data stored in [Apache Parquet](https://parquet.apache.org/)
|
||||||
|
By default, data is partitioned by day,
|
||||||
|
but, depending on your schema and workload, customizing the partitioning
|
||||||
|
strategy can improve query performance.
|
||||||
|
|
||||||
|
To use custom partitioning, you define a [partition template](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/).
|
||||||
|
If a table doesn't have a custom partition template, it inherits the database's template.
|
||||||
|
|
||||||
|
{{< tabs-wrapper >}}
|
||||||
|
{{% tabs %}}
|
||||||
|
[Admin UI](#)
|
||||||
|
[influxctl](#)
|
||||||
|
[Management API](#)
|
||||||
|
{{% /tabs %}}
|
||||||
|
{{% tab-content %}}
|
||||||
|
<!------------------------------- BEGIN ADMIN UI CUSTOM ------------------------------>
|
||||||
|
1. To access the {{< product-name >}} Admin UI, visit the following URL in your browser:
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<a href="https://console.influxdata.com">https://console.influxdata.com</a>
|
||||||
|
</pre>
|
||||||
|
2. Use the credentials provided by InfluxData to log into the Admin UI.
|
||||||
|
If you don't have login credentials, [contact InfluxData support](https://support.influxdata.com).
|
||||||
|
3. In the cluster list, find and click the cluster you want to create a database in. You
|
||||||
|
can sort on column headers or use the **Search** field to find a specific cluster.
|
||||||
|
4. In the database list, find and click the database you want to create a table in. You
|
||||||
|
can sort on column headers or use the **Search** field to find a specific database.
|
||||||
|
4. Click the **New Table** button above the table list.
|
||||||
|
The **Create table** dialog displays.
|
||||||
|
<img src="/img/influxdb3/cloud-dedicated-admin-ui-create-table.png" alt="Create table dialog" />
|
||||||
|
5. In the **Create table** dialog, provide a **Table name**.
|
||||||
|
6. Make sure the **Use default partitioning** toggle is set to **Off**
|
||||||
|
7. Provide the following:
|
||||||
|
|
||||||
|
- **Custom partition template time format**: The time part for partitioning data.
|
||||||
|
- _Optional_: **Custom partition template tag parts**: The tag parts for partitioning data.
|
||||||
|
- _Optional_: **Custom partition template tag bucket parts**: The tag bucket parts for partitioning data.
|
||||||
|
8. _Optional_: To add more parts to the partition template, click the **Add Tag** button.
|
||||||
|
9. Click the **Create Table** button to create the table.
|
||||||
|
The new table displays in the list of tables for the cluster.
|
||||||
|
{{% /tab-content %}}
|
||||||
|
|
||||||
|
{{% tab-content %}}
|
||||||
|
<!------------------------------- BEGIN INFLUXCTL CUSTOM ----------------------------->
|
||||||
|
1. If you haven't already, [download and install the `influxctl` CLI](/influxdb3/cloud-dedicated/get-started/setup/#download-install-and-configure-the-influxctl-cli).
|
||||||
|
2. Use the following `influxctl table create` command flags to specify the
|
||||||
|
[partition template parts](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#tag-part-templates):
|
||||||
|
|
||||||
|
- `--template-timeformat`: A [Rust strftime date and time](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#time-part-templates)
|
||||||
|
string that specifies the time part in the partition template and determines
|
||||||
|
the time interval to partition by.
|
||||||
|
Use one of the following:
|
||||||
|
|
||||||
|
- `%Y-%m-%d` (daily)
|
||||||
|
- `%Y-%m` (monthly)
|
||||||
|
- `%Y` (annually)
|
||||||
|
- `--template-tag`: An [InfluxDB tag]
|
||||||
|
to use in the partition template.
|
||||||
|
- `--template-tag-bucket`: An [InfluxDB tag](/influxdb3/cloud-dedicated/reference/glossary/#tag)
|
||||||
|
and number of "buckets" to group tag values into.
|
||||||
|
Provide the tag key and the number of buckets to bucket tag values into
|
||||||
|
separated by a comma: `tagKey,N`.
|
||||||
|
|
||||||
|
{{% code-placeholders "DATABASE_NAME|30d|(TAG_KEY(_\d)?)|100|300" %}}
|
||||||
|
```bash
|
||||||
|
# Create a table with custom partitioning
|
||||||
influxctl table create \
|
influxctl table create \
|
||||||
--template-tag tag1 \
|
--template-tag tag1 \
|
||||||
--template-tag tag2 \
|
--template-tag tag2 \
|
||||||
|
@ -56,22 +211,72 @@ influxctl table create \
|
||||||
```
|
```
|
||||||
{{% /code-placeholders %}}
|
{{% /code-placeholders %}}
|
||||||
|
|
||||||
### Custom partitioning
|
Replace the following:
|
||||||
|
|
||||||
{{< product-name >}} lets you define a custom partitioning strategy for each table.
|
- {{% code-placeholder-key %}}`TAG_KEY_1`, `TAG_KEY_2`{{% /code-placeholder-key %}}: [tag](/influxdb3/cloud-dedicated/reference/glossary/#tag) keys to partition by
|
||||||
A _partition_ is a logical grouping of data stored in [Apache Parquet](https://parquet.apache.org/)
|
- {{% code-placeholder-key %}}`TAG_KEY_3`, `TAG_KEY_4`{{% /code-placeholder-key %}}: [tag](/influxdb3/cloud-dedicated/reference/glossary/#tag) keys for bucketed partitioning
|
||||||
format in the InfluxDB 3 storage engine. By default, data is partitioned by day,
|
- {{% code-placeholder-key %}}`100`, `300`{{% /code-placeholder-key %}}: number of buckets to group tag values into
|
||||||
but, depending on your schema and workload, customizing the partitioning
|
- {{% code-placeholder-key %}}`'%Y-%m-%d'`{{% /code-placeholder-key %}}: [Rust strftime date and time](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#time-part-templates) string that specifies the time part in the partition template
|
||||||
strategy can improve query performance.
|
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the name of the [database](/influxdb3/cloud-dedicated/admin/databases/) to create the table in
|
||||||
|
- {{% code-placeholder-key %}}`TABLE_NAME`{{% /code-placeholder-key %}}: the name you want for the new table
|
||||||
|
{{% /tab-content %}}
|
||||||
|
|
||||||
Use the `--template-tag`, `--template-tag-bucket`, and `--template-timeformat`
|
{{% tab-content %}}
|
||||||
flags to define partition template parts used to generate partition keys for the table.
|
<!------------------------------- BEGIN MANAGEMENT API CUSTOM ------------------------------>
|
||||||
If no template flags are provided, the table uses the partition template of the
|
_This example uses [cURL](https://curl.se/) to send a Management HTTP API request, but you can use any HTTP client._
|
||||||
target database.
|
|
||||||
For more information, see [Manage data partitioning](/influxdb3/cloud-dedicated/admin/custom-partitions/).
|
1. If you haven't already, follow the instructions to [install cURL](https://everything.curl.dev/install/index.html) for your system.
|
||||||
|
2. In your terminal, use cURL to send a request to the following {{% product-name %}} endpoint:
|
||||||
|
|
||||||
|
{{% api-endpoint method="POST"
|
||||||
|
endpoint="https://console.influxdata.com/api/v0/accounts/ACCOUNT_ID/clusters/CLUSTER_ID/databases/DATABASE_NAME/tables"
|
||||||
|
api-ref="/influxdb3/cloud-dedicated/api/management/#operation/CreateClusterDatabaseTable" %}}
|
||||||
|
|
||||||
|
In the request body, include the `partitionTemplate` property and specify the [partition template parts](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#tag-part-templates) as an array of objects--for example:
|
||||||
|
|
||||||
|
{{% code-placeholders "ACCOUNT_ID|CLUSTER_ID|DATABASE_NAME|MANAGEMENT_TOKEN|TABLE_NAME|(TAG_KEY(_\d)?)|100|300|%Y-%m-%d" %}}
|
||||||
|
```bash
|
||||||
|
# Create a table with custom partitioning
|
||||||
|
curl \
|
||||||
|
--location "https://console.influxdata.com/api/v0/accounts/ACCOUNT_ID/clusters/CLUSTER_ID/databases/DATABASE_NAME/tables" \
|
||||||
|
--request POST \
|
||||||
|
--header "Authorization: Bearer MANAGEMENT_TOKEN" \
|
||||||
|
--json '{
|
||||||
|
"name": "TABLE_NAME",
|
||||||
|
"partitionTemplate": [
|
||||||
|
{ "type": "tag", "value": "TAG_KEY_1" },
|
||||||
|
{ "type": "tag", "value": "TAG_KEY_2" },
|
||||||
|
{ "type": "bucket", "value": { "tagName": "TAG_KEY_3", "numberOfBuckets": 100 } },
|
||||||
|
{ "type": "bucket", "value": { "tagName": "TAG_KEY_4", "numberOfBuckets": 300 } },
|
||||||
|
{ "type": "time", "value": "%Y-%m-%d" }
|
||||||
|
]
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
{{% /code-placeholders %}}
|
||||||
|
|
||||||
|
Replace the following:
|
||||||
|
|
||||||
|
- {{% code-placeholder-key %}}`ACCOUNT_ID`{{% /code-placeholder-key %}}: the [account](/influxdb3/cloud-dedicated/admin/account/) ID for the cluster _(list details via the [Admin UI](/influxdb3/cloud-dedicated/admin/clusters/list/) or [CLI](/influxdb3/cloud-dedicated/admin/clusters/list/#detailed-output-in-json))_
|
||||||
|
- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: the [cluster](/influxdb3/cloud-dedicated/admin/clusters/) ID _(list details via the [Admin UI](/influxdb3/cloud-dedicated/admin/clusters/list/) or [CLI](/influxdb3/cloud-dedicated/admin/clusters/list/#detailed-output-in-json))_.
|
||||||
|
- {{% code-placeholder-key %}}`MANAGEMENT_TOKEN`{{% /code-placeholder-key %}}: a valid [management token](/influxdb3/cloud-dedicated/admin/tokens/management/) for your {{% product-name %}} cluster
|
||||||
|
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the name of the [database](/influxdb3/cloud-dedicated/admin/databases/) to create the table in
|
||||||
|
- {{% code-placeholder-key %}}`TABLE_NAME`{{% /code-placeholder-key %}}: the name you want for the new table
|
||||||
|
- {{% code-placeholder-key %}}`TAG_KEY_1`, `TAG_KEY_2`{{% /code-placeholder-key %}}: [tag](/influxdb3/cloud-dedicated/reference/glossary/#tag) keys to partition by
|
||||||
|
- {{% code-placeholder-key %}}`TAG_KEY_3`, `TAG_KEY_4`{{% /code-placeholder-key %}}: [tag](/influxdb3/cloud-dedicated/reference/glossary/#tag) keys for bucketed partitioning
|
||||||
|
- {{% code-placeholder-key %}}`100`, `300`{{% /code-placeholder-key %}}: number of buckets to group tag values into
|
||||||
|
- {{% code-placeholder-key %}}`'%Y-%m-%d'`{{% /code-placeholder-key %}}: [Rust strftime date and time](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/#time-part-templates) string that specifies the time part in the partition template
|
||||||
|
{{% /tab-content %}}
|
||||||
|
{{< /tabs-wrapper >}}
|
||||||
|
|
||||||
|
## Partition template requirements and guidelines
|
||||||
|
|
||||||
|
Always specify 1 time part in your template.
|
||||||
|
A template has a maximum of 8 parts: 1 time part and up to 7 total tag and tag bucket parts.
|
||||||
|
|
||||||
|
For more information about partition template requirements and restrictions, see [Partition templates](/influxdb3/cloud-dedicated/admin/custom-partitions/partition-templates/).
|
||||||
|
|
||||||
> [!Warning]
|
> [!Warning]
|
||||||
> #### Partition templates can only be applied on create
|
> #### Partition templates can only be applied on create
|
||||||
>
|
>
|
||||||
> You can only apply a partition template when creating a table.
|
> You can only apply a partition template when creating a table.
|
||||||
> There is no way to update a partition template on an existing table.
|
> You can't update a partition template on an existing table.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Use the [`influxctl` CLI](/influxdb/version/reference/cli/influxctl/)
|
Use the Admin UI, the [`influxctl` CLI](/influxdb/version/reference/cli/influxctl/), or the [Management HTTP API](/influxdb/version/api/management/)
|
||||||
to define custom partition strategies when creating a database or table.
|
to define custom partition strategies when creating a database or table.
|
||||||
By default, {{< product-name >}} partitions data by day.
|
By default, {{< product-name >}} partitions data by day.
|
||||||
|
|
||||||
|
@ -12,52 +12,27 @@ table.
|
||||||
|
|
||||||
- [Create a database with a custom partition template](#create-a-database-with-a-custom-partition-template)
|
- [Create a database with a custom partition template](#create-a-database-with-a-custom-partition-template)
|
||||||
- [Create a table with a custom partition template](#create-a-table-with-a-custom-partition-template)
|
- [Create a table with a custom partition template](#create-a-table-with-a-custom-partition-template)
|
||||||
|
- [Partition template requirements and guidelines](#partition-template-requirements-and-guidelines)
|
||||||
- [Example partition templates](#example-partition-templates)
|
- [Example partition templates](#example-partition-templates)
|
||||||
|
|
||||||
> [!Warning]
|
|
||||||
>
|
|
||||||
> #### Partition templates can only be applied on create
|
|
||||||
>
|
|
||||||
> You can only apply a partition template when creating a database or table.
|
|
||||||
> You can't update a partition template on an existing resource.
|
|
||||||
|
|
||||||
Use the following command flags to identify
|
|
||||||
[partition template parts](/influxdb/version/admin/custom-partitions/partition-templates/#tag-part-templates):
|
|
||||||
|
|
||||||
- `--template-tag`: An [InfluxDB tag](/influxdb/version/reference/glossary/#tag)
|
|
||||||
to use in the partition template.
|
|
||||||
- `--template-tag-bucket`: An [InfluxDB tag](/influxdb/version/reference/glossary/#tag)
|
|
||||||
and number of "buckets" to group tag values into.
|
|
||||||
Provide the tag key and the number of buckets to bucket tag values into
|
|
||||||
separated by a comma: `tagKey,N`.
|
|
||||||
- `--template-timeformat`: A [Rust strftime date and time](/influxdb/version/admin/custom-partitions/partition-templates/#time-part-templates)
|
|
||||||
string that specifies the time format in the partition template and determines
|
|
||||||
the time interval to partition by.
|
|
||||||
|
|
||||||
> [!Note]
|
|
||||||
> A partition template can include up to 7 total tag and tag bucket parts
|
|
||||||
> and only 1 time part.
|
|
||||||
>
|
|
||||||
> _View [partition template part restrictions](/influxdb/version/admin/custom-partitions/partition-templates/#restrictions)._
|
|
||||||
|
|
||||||
> [!Important]
|
|
||||||
> #### Always provide a time format when using custom partitioning
|
|
||||||
>
|
|
||||||
> When defining a custom partition template for your database or table using any
|
|
||||||
> of the `influxctl` `--template-*` flags, always include the `--template-timeformat`
|
|
||||||
> flag with a time format to use in your partition template.
|
|
||||||
> Otherwise, InfluxDB omits time from the partition template and won't compact partitions.
|
|
||||||
|
|
||||||
## Create a database with a custom partition template
|
## Create a database with a custom partition template
|
||||||
|
|
||||||
The following example creates a new `example-db` database and applies a partition
|
The following examples show how to create a new `example-db` database and apply a partition
|
||||||
template that partitions by distinct values of two tags (`room` and `sensor-type`),
|
template that partitions by distinct values of two tags (`room` and `sensor-type`),
|
||||||
bucketed values of the `customerID` tag, and by day using the time format `%Y-%m-%d`:
|
bucketed values of the `customerID` tag, and by day using the time format `%Y-%m-%d`:
|
||||||
|
|
||||||
<!--Skip database create and delete tests: namespaces aren't reusable-->
|
{{< tabs-wrapper >}}
|
||||||
|
{{% tabs %}}
|
||||||
|
[influxctl](#)
|
||||||
|
[Management API](#)
|
||||||
|
{{% /tabs %}}
|
||||||
|
|
||||||
|
{{% tab-content %}}
|
||||||
|
<!------------------------------- BEGIN INFLUXCTL ----------------------------->
|
||||||
|
<!--Skip tests for database create and delete: namespaces aren't reusable-->
|
||||||
<!--pytest.mark.skip-->
|
<!--pytest.mark.skip-->
|
||||||
|
|
||||||
```sh
|
```bash
|
||||||
influxctl database create \
|
influxctl database create \
|
||||||
--template-tag room \
|
--template-tag room \
|
||||||
--template-tag sensor-type \
|
--template-tag sensor-type \
|
||||||
|
@ -66,33 +41,161 @@ influxctl database create \
|
||||||
example-db
|
example-db
|
||||||
```
|
```
|
||||||
|
|
||||||
|
The following command flags identify
|
||||||
|
[partition template parts](/influxdb/version/admin/custom-partitions/partition-templates/#tag-part-templates):
|
||||||
|
|
||||||
|
- `--template-timeformat`: A [Rust strftime date and time](/influxdb/version/admin/custom-partitions/partition-templates/#time-part-templates)
|
||||||
|
string that specifies the time part in the partition template and determines
|
||||||
|
the time interval to partition by.
|
||||||
|
Use one of the following:
|
||||||
|
|
||||||
|
- `%Y-%m-%d` (daily)
|
||||||
|
- `%Y-%m` (monthly)
|
||||||
|
- `%Y` (annually)
|
||||||
|
- `--template-tag`: An [InfluxDB tag](/influxdb/version/reference/glossary/#tag)
|
||||||
|
to use in the partition template.
|
||||||
|
- `--template-tag-bucket`: An [InfluxDB tag](/influxdb/version/reference/glossary/#tag)
|
||||||
|
and number of "buckets" to group tag values into.
|
||||||
|
Provide the tag key and the number of buckets to bucket tag values into
|
||||||
|
separated by a comma: `tagKey,N`.
|
||||||
|
|
||||||
|
<!-------------------------------- END INFLUXCTL ------------------------------>
|
||||||
|
{{% /tab-content %}}
|
||||||
|
{{% tab-content %}}
|
||||||
|
<!------------------------------- BEGIN cURL ---------------------------------->
|
||||||
|
|
||||||
|
|
||||||
|
<!--Skip tests for database create and delete: namespaces aren't reusable-->
|
||||||
|
<!--pytest.mark.skip-->
|
||||||
|
{{% code-placeholders "ACCOUNT_ID|CLUSTER_ID|MANAGEMENT_TOKEN" %}}
|
||||||
|
```bash
|
||||||
|
curl \
|
||||||
|
--location "https://console.influxdata.com/api/v0/accounts/ACCOUNT_ID/clusters/CLUSTER_ID/databases" \
|
||||||
|
--header "Authorization: Bearer MANAGEMENT_TOKEN" \
|
||||||
|
--json '{
|
||||||
|
"name": "example-db",
|
||||||
|
"maxTables": 500,
|
||||||
|
"maxColumnsPerTable": 250,
|
||||||
|
"retentionPeriod": 2592000000000,
|
||||||
|
"partitionTemplate": [
|
||||||
|
{ "type": "tag", "value": "room" },
|
||||||
|
{ "type": "tag", "value": "sensor-type" },
|
||||||
|
{ "type": "bucket", "value": { "tagName": "customerID", "numberOfBuckets": 500 } },
|
||||||
|
{ "type": "time", "value": "%Y-%m-%d" }
|
||||||
|
]
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
{{% /code-placeholders %}}
|
||||||
|
|
||||||
|
Replace the following in your request:
|
||||||
|
|
||||||
|
- {{% code-placeholder-key %}}`ACCOUNT_ID`{{% /code-placeholder-key %}}: the [account](/influxdb3/cloud-dedicated/admin/account/) ID for the cluster _(list details via the [Admin UI](/influxdb3/cloud-dedicated/admin/clusters/list/) or [CLI](/influxdb3/cloud-dedicated/admin/clusters/list/#detailed-output-in-json))_
|
||||||
|
- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: the [cluster](/influxdb3/cloud-dedicated/admin/clusters/) ID _(list details via the [Admin UI](/influxdb3/cloud-dedicated/admin/clusters/list/) or [CLI](/influxdb3/cloud-dedicated/admin/clusters/list/#detailed-output-in-json))_.
|
||||||
|
- {{% code-placeholder-key %}}`MANAGEMENT TOKEN`{{% /code-placeholder-key %}}: a valid [management token](/influxdb3/cloud-dedicated/admin/tokens/management/) for your {{% product-name %}} cluster
|
||||||
|
|
||||||
|
The `partitionTemplate` property in the request body
|
||||||
|
is an array of JSON objects that identify the [partition template parts](/influxdb/version/admin/custom-partitions/partition-templates/#tag-part-templates).
|
||||||
|
|
||||||
|
<!------------------------------- END cURL ------------------------------------>
|
||||||
|
{{% /tab-content %}}
|
||||||
|
{{< /tabs-wrapper >}}
|
||||||
|
|
||||||
## Create a table with a custom partition template
|
## Create a table with a custom partition template
|
||||||
|
|
||||||
The following example creates a new `example-table` table in the specified
|
The following example creates a new `example-table` table in the `example-db` database and applies a partition template that partitions by distinct values of
|
||||||
database and applies a partition template that partitions by distinct values of
|
|
||||||
two tags (`room` and `sensor-type`), bucketed values of the `customerID` tag,
|
two tags (`room` and `sensor-type`), bucketed values of the `customerID` tag,
|
||||||
and by month using the time format `%Y-%m`:
|
and by month using the time format `%Y-%m`:
|
||||||
|
|
||||||
<!--Skip database create and delete tests: namespaces aren't reusable-->
|
{{< tabs-wrapper >}}
|
||||||
<!--pytest.mark.skip-->
|
{{% tabs %}}
|
||||||
|
[Admin UI](#)
|
||||||
|
[influxctl](#)
|
||||||
|
[Management API](#)
|
||||||
|
{{% /tabs %}}
|
||||||
|
{{% tab-content %}}
|
||||||
|
<!--------------------------------BEGIN ADMIN UI ------------------------------>
|
||||||
|
The {{< product-name >}} Admin UI lets you apply a custom partition template when creating a table.
|
||||||
|
1. To access the {{< product-name >}} Admin UI, visit the following URL in your browser:
|
||||||
|
|
||||||
{{% code-placeholders "DATABASE_NAME" %}}
|
<pre>
|
||||||
|
<a href="https://console.influxdata.com">https://console.influxdata.com</a>
|
||||||
|
</pre>
|
||||||
|
2. In the cluster list, click the cluster you want to manage.
|
||||||
|
3. Create the `example-db` database or click the row of an existing database.
|
||||||
|
4. Click the **New Table** button above the table list.
|
||||||
|
|
||||||
```sh
|
In the **Create Table** dialog:
|
||||||
|
|
||||||
|
1. Set **Table name** to `example-table`.
|
||||||
|
2. If the **Use default partitioning** toggle is on, turn it off to enable custom partitioning.
|
||||||
|
3. Under **Custom partition template time format**, set the time format to `%Y-%m`.
|
||||||
|
4. Under **Custom partition template parts**:
|
||||||
|
5. In the **Partition template part type** dropdown, click **Tag**, set **Tag name** to `room`.
|
||||||
|
6. Click **Add Tag**.
|
||||||
|
7. In the **Partition template part type** dropdown, click **Tag**, set **Tag name** to `sensor-type`.
|
||||||
|
8. Click **Add Tag**.
|
||||||
|
9. In the **Partition template part type** dropdown, click **Bucket**, set **Tag name** to `customerID` and **Buckets** to `500`.
|
||||||
|
10. Click **Create Table** to apply the template.
|
||||||
|
|
||||||
|
{{< img-hd src="/img/influxdb3/cloud-dedicated-admin-ui-create-custom-partitioned-table.png" alt="Create table dialog with custom partitioning example values" />}}
|
||||||
|
{{% /tab-content %}}
|
||||||
|
{{% tab-content %}}
|
||||||
|
<!------------------------------- BEGIN INFLUXCTL ----------------------------->
|
||||||
|
```bash
|
||||||
influxctl table create \
|
influxctl table create \
|
||||||
--template-tag room \
|
--template-tag room \
|
||||||
--template-tag sensor-type \
|
--template-tag sensor-type \
|
||||||
--template-tag-bucket customerID,500 \
|
--template-tag-bucket customerID,500 \
|
||||||
--template-timeformat '%Y-%m' \
|
--template-timeformat '%Y-%m' \
|
||||||
DATABASE_NAME \
|
example-db \
|
||||||
example-table
|
example-table
|
||||||
```
|
```
|
||||||
|
|
||||||
|
<!-------------------------------- END INFLUXCTL ------------------------------>
|
||||||
|
{{% /tab-content %}}
|
||||||
|
{{% tab-content %}}
|
||||||
|
<!------------------------------- BEGIN cURL ---------------------------------->
|
||||||
|
|
||||||
|
{{% code-placeholders "ACCOUNT_ID|CLUSTER_ID|MANAGEMENT_TOKEN" %}}
|
||||||
|
```bash
|
||||||
|
curl \
|
||||||
|
--location "https://console.influxdata.com/api/v0/accounts/ACCOUNT_ID/clusters/CLUSTER_ID/databases/example-db/tables" \
|
||||||
|
--request POST \
|
||||||
|
--header "Authorization: Bearer MANAGEMENT_TOKEN" \
|
||||||
|
--json '{
|
||||||
|
"name": "example-table",
|
||||||
|
"partitionTemplate": [
|
||||||
|
{ "type": "tag", "value": "room" },
|
||||||
|
{ "type": "tag", "value": "sensor-type" },
|
||||||
|
{ "type": "bucket", "value": { "tagName": "customerID", "numberOfBuckets": 500 } },
|
||||||
|
{ "type": "time", "value": "%Y-%m" }
|
||||||
|
]
|
||||||
|
}'
|
||||||
|
```
|
||||||
{{% /code-placeholders %}}
|
{{% /code-placeholders %}}
|
||||||
|
|
||||||
Replace the following in your command:
|
Replace the following in your request:
|
||||||
|
|
||||||
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: your {{% product-name %}} [database](/influxdb/version/admin/databases/)
|
- {{% code-placeholder-key %}}`ACCOUNT_ID`{{% /code-placeholder-key %}}: the [account](/influxdb3/cloud-dedicated/admin/account/) ID for the cluster _(list details via the [Admin UI](/influxdb3/cloud-dedicated/admin/clusters/list/) or [CLI](/influxdb3/cloud-dedicated/admin/clusters/list/#detailed-output-in-json))_
|
||||||
|
- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: the [cluster](/influxdb3/cloud-dedicated/admin/clusters/) ID _(list details via the [Admin UI](/influxdb3/cloud-dedicated/admin/clusters/list/) or [CLI](/influxdb3/cloud-dedicated/admin/clusters/list/#detailed-output-in-json))_.
|
||||||
|
- {{% code-placeholder-key %}}`MANAGEMENT_TOKEN`{{% /code-placeholder-key %}}: a valid [management token](/influxdb3/cloud-dedicated/admin/tokens/management/) for your {{% product-name %}} cluster
|
||||||
|
|
||||||
|
<!------------------------------- END cURL ------------------------------------>
|
||||||
|
{{% /tab-content %}}
|
||||||
|
{{< /tabs-wrapper >}}
|
||||||
|
|
||||||
|
## Partition template requirements and guidelines
|
||||||
|
|
||||||
|
Always specify 1 time part in your template.
|
||||||
|
A template has a maximum of 8 parts: 1 time part and up to 7 total tag and tag bucket parts.
|
||||||
|
|
||||||
|
For more information about partition template requirements and restrictions, see [Partition templates](/influxdb/version/admin/custom-partitions/partition-templates/).
|
||||||
|
|
||||||
|
> [!Warning]
|
||||||
|
> #### Partition templates can only be applied on create
|
||||||
|
>
|
||||||
|
> You can only apply a partition template when creating a database.
|
||||||
|
> You can't update a partition template on an existing database.
|
||||||
|
|
||||||
<!--actual test
|
<!--actual test
|
||||||
|
|
||||||
|
@ -131,6 +234,9 @@ with a `2024-01-01T00:00:00Z` timestamp:
|
||||||
prod,line=A,station=weld1 temp=81.9,qty=36i 1704067200000000000
|
prod,line=A,station=weld1 temp=81.9,qty=36i 1704067200000000000
|
||||||
```
|
```
|
||||||
|
|
||||||
|
The following tables show how the partition key is generated
|
||||||
|
based on the partition template parts you provide.
|
||||||
|
|
||||||
##### Partitioning by distinct tag values
|
##### Partitioning by distinct tag values
|
||||||
|
|
||||||
| Description | Tag parts | Time part | Resulting partition key |
|
| Description | Tag parts | Time part | Resulting partition key |
|
||||||
|
|
|
@ -2,31 +2,57 @@ Use partition templates to define the patterns used to generate partition keys.
|
||||||
A partition key uniquely identifies a partition and is used to name the partition
|
A partition key uniquely identifies a partition and is used to name the partition
|
||||||
Parquet file in the [Object store](/influxdb/version/reference/internals/storage-engine/#object-store).
|
Parquet file in the [Object store](/influxdb/version/reference/internals/storage-engine/#object-store).
|
||||||
|
|
||||||
A partition template consists of 1-8 _template parts_---dimensions to partition data by.
|
A partition template defines how InfluxDB groups data into partitions by specifying 1-8 _template parts_.
|
||||||
Three types of template parts exist:
|
Each template part represents a dimension to partition data by.
|
||||||
|
|
||||||
- **tag**: An [InfluxDB tag](/influxdb/version/reference/glossary/#tag)
|
- [Template part types](#template-part-types)
|
||||||
to partition by.
|
- [Requirements and guidelines](#requirements-and-guidelines)
|
||||||
- **tag bucket**: An [InfluxDB tag](/influxdb/version/reference/glossary/#tag)
|
|
||||||
and number of "buckets" to group tag values into. Data is partitioned by the
|
|
||||||
tag bucket rather than each distinct tag value.
|
|
||||||
- {{< req type="key" >}} **time**: A Rust strftime date and time string that specifies the time interval
|
|
||||||
to partition data by. The smallest unit of time included in the time part
|
|
||||||
template is the interval used to partition data.
|
|
||||||
|
|
||||||
> [!Note]
|
|
||||||
> A partition template must include 1 [time part](#time-part-templates)
|
|
||||||
> and can include up to 7 total [tag](#tag-part-templates) and [tag bucket](#tag-bucket-part-templates) parts.
|
|
||||||
|
|
||||||
<!-- TOC -->
|
|
||||||
- [Restrictions](#restrictions)
|
- [Restrictions](#restrictions)
|
||||||
- [Template part size limit](#template-part-size-limit)
|
- [Template part size limit](#template-part-size-limit)
|
||||||
|
- [Partition key size limit](#partition-key-size-limit)
|
||||||
- [Reserved keywords](#reserved-keywords)
|
- [Reserved keywords](#reserved-keywords)
|
||||||
- [Reserved Characters](#reserved-characters)
|
- [Reserved Characters](#reserved-characters)
|
||||||
- [Tag part templates](#tag-part-templates)
|
- [Tag part templates](#tag-part-templates)
|
||||||
- [Tag bucket part templates](#tag-bucket-part-templates)
|
- [Tag bucket part templates](#tag-bucket-part-templates)
|
||||||
- [Time part templates](#time-part-templates)
|
- [Time part templates](#time-part-templates)
|
||||||
<!-- /TOC -->
|
- [Date specifiers](#date-specifiers)
|
||||||
|
|
||||||
|
## Template part types
|
||||||
|
|
||||||
|
InfluxDB supports three types of partition template parts:
|
||||||
|
|
||||||
|
- **Tag part**: Partitions data by the unique values of an [InfluxDB tag](/influxdb/version/reference/glossary/#tag).
|
||||||
|
For example, using `region` as a tag part creates separate partitions for each region value (us-west, us-east, eu-central).
|
||||||
|
|
||||||
|
- **Tag bucket part**: Partitions data by "buckets" of [InfluxDB tag](/influxdb/version/reference/glossary/#tag) values.
|
||||||
|
Instead of creating a partition for every unique tag value, tag values are hashed and grouped into a specified number of buckets.
|
||||||
|
Use this for high-cardinality tags or when the number of distinct values is unknown.
|
||||||
|
|
||||||
|
- {{< req type="key" >}} **Time part**: Partitions data by time intervals using a Rust strftime date and time format string.
|
||||||
|
The smallest time unit in your format determines the granularity of time partitioning (yearly with `%Y`,
|
||||||
|
monthly with `%Y-%m`, or daily with `%Y-%m-%d`).
|
||||||
|
|
||||||
|
## Requirements and guidelines
|
||||||
|
|
||||||
|
When creating a partition template:
|
||||||
|
|
||||||
|
1. **Include exactly one time part**
|
||||||
|
- Always specify a [time part](#time-part-templates) in your template
|
||||||
|
- With `influxctl`, always include `--template-timeformat` with a valid format
|
||||||
|
- Without a time part, InfluxDB won't compact partitions, impacting performance
|
||||||
|
- If you include more than one time part, InfluxDB uses the smallest unit of time
|
||||||
|
- Use one of the following Rust strftime date and time strings:
|
||||||
|
|
||||||
|
- `%Y-%m-%d` (daily)
|
||||||
|
- `%Y-%m` (monthly)
|
||||||
|
- `%Y` (annually)
|
||||||
|
|
||||||
|
2. **Tag and tag bucket limitations**
|
||||||
|
- Include up to seven [tag](#tag-part-templates) and [tag bucket](#tag-bucket-part-templates) parts
|
||||||
|
- Don't use the same tag key in both a tag part and a tag bucket part--for example,
|
||||||
|
if your template uses `region` as a tag part, you cannot use `region` as a tag bucket part
|
||||||
|
|
||||||
|
3. **Maximum template parts**: 8 total (1 time part + up to 7 tag and tag bucket parts)
|
||||||
|
|
||||||
## Restrictions
|
## Restrictions
|
||||||
|
|
||||||
|
@ -59,18 +85,17 @@ characters must be [percent encoded](https://developer.mozilla.org/en-US/docs/Gl
|
||||||
|
|
||||||
## Tag part templates
|
## Tag part templates
|
||||||
|
|
||||||
Tag part templates consist of a _tag key_ to partition by.
|
Tag part templates consist of a [_tag key_](/influxdb3/cloud-dedicated/reference/glossary/#tag) to partition by.
|
||||||
Generated partition keys include the unique _tag value_ specific to each partition.
|
Generated partition keys include the unique _tag value_ specific to each partition.
|
||||||
|
|
||||||
A partition template may include a given tag key only once in template parts
|
A partition template may include a given tag key only once in template parts
|
||||||
that operate on tags (tag value and tag bucket)--for example:
|
that operate on tags (tag value and tag bucket)--for example,
|
||||||
|
if a template partitions on unique values of `tag_A`, then
|
||||||
If a template partitions on unique values of `tag_A`, then
|
|
||||||
you can't use `tag_A` as a tag bucket part.
|
you can't use `tag_A` as a tag bucket part.
|
||||||
|
|
||||||
## Tag bucket part templates
|
## Tag bucket part templates
|
||||||
|
|
||||||
Tag bucket part templates consist of a _tag key_ to partition by and the
|
Tag bucket part templates consist of a [_tag key_](/influxdb3/cloud-dedicated/reference/glossary/#tag) to partition by and the
|
||||||
_number of "buckets" to partition tag values into_--for example:
|
_number of "buckets" to partition tag values into_--for example:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -95,9 +120,8 @@ each partition.
|
||||||
> unknown number of distinct values.
|
> unknown number of distinct values.
|
||||||
|
|
||||||
A partition template may include a given tag key only once in template parts
|
A partition template may include a given tag key only once in template parts
|
||||||
that operate on tags (tag value and tag bucket)--for example:
|
that operate on tags (tag value and tag bucket)--for example,
|
||||||
|
if a template partitions on unique values of `tag_A`, then
|
||||||
If a template partitions on unique values of `tag_A`, then
|
|
||||||
you can't use `tag_A` as a tag bucket part.
|
you can't use `tag_A` as a tag bucket part.
|
||||||
|
|
||||||
## Time part templates
|
## Time part templates
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 243 KiB |
Loading…
Reference in New Issue