全部產品
Search
文件中心

Time Series Database:Schema探索

更新時間:Jul 06, 2024

InfluxQL是一種類似SQL的查詢語言,用於與TSDB For InfluxDB®中的資料進行互動。以下章節介紹了實用的查詢schema的文法。

SHOW DATABASES

SHOW RETENTION POLICIES

SHOW SERIES

SHOW MEASUREMENTS

SHOW TAG KEYS

SHOW TAG VALUES

SHOW FIELD KEYS

-

-

說明

本文檔使用的資料可在樣本資料章節中下載。

樣本資料

在開始之前,請先登入Influx CLI。

$ influx -precision rfc3339
Connected to http://localhost:8086 version 1.7.x
InfluxDB shell 1.7.x
>

重要

除了使用以下文法,更建議您在控制台做database查詢和操作文法。

SHOW DATABASES

返回當前帳號有權查看的所有資料庫。

SHOW DATABASES

樣本

運行SHOW DATABASES查詢

> SHOW DATABASES

name: databases
name
----
NOAA_water_database
_internal

該查詢以表格的形式返回資料庫的名稱。當前帳號有許可權查看資料庫NOAA_water_database_internal

SHOW RETENTION POLICIES

返回指定資料庫的所有資料保留原則。

SHOW RETENTION POLICIES [ON <database_name>]

文法描述

ON <database_name>是可選的。如果查詢中沒有包含ON <database_name>,您必須在CLI中使用USE <database_name>指定資料庫,或者在HTTP API請求中使用參數db指定資料庫。

樣本

樣本一:運行帶有ON子句的SHOW RETENTION POLICIES查詢

> SHOW RETENTION POLICIES ON NOAA_water_database

name      duration   shardGroupDuration   replicaN   default
----      --------   ------------------   --------   -------
autogen   0s         168h0m0s             1          true

該查詢以表格的形式返回資料庫NOAA_water_database中所有的保留原則。這個資料庫有一個名為autogen的保留原則,該保留原則具有無限的期間,為期7天的shard group期間,複製係數為1,並且它是這個資料庫的預設(DEFAULT)保留原則。

樣本二:運行不帶有ON子句的SHOW RETENTION POLICIES查詢

使用USE <database_name>指定資料庫

> USE NOAA_water_database
Using database NOAA_water_database

> SHOW RETENTION POLICIES

name      duration   shardGroupDuration   replicaN   default
----      --------   ------------------   --------   -------
autogen   0s         168h0m0s             1          true

使用參數db指定資料庫

~# curl -G "http://localhost:8086/query?db=NOAA_water_database&pretty=true" --data-urlencode "q=SHOW RETENTION POLICIES"

{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "columns": [
                        "name",
                        "duration",
                        "shardGroupDuration",
                        "replicaN",
                        "default"
                    ],
                    "values": [
                        [
                            "autogen",
                            "0s",
                            "168h0m0s",
                            1,
                            true
                        ]
                    ]
                }
            ]
        }
    ]
}

SHOW SERIES

返回指定資料庫的序列。

文法

SHOW SERIES [ON <database_name>] [FROM_clause] [WHERE <tag_key> <operator> [ '<tag_value>' | <regular_expression>]] [LIMIT_clause] [OFFSET_clause]

文法描述

ON <database_name>是可選的。如果查詢中沒有包含ON <database_name>,您必須在CLI中使用USE <database_name>指定資料庫,或者在HTTP API請求中使用參數db指定資料庫。

FROM子句,WHERE子句,LIMIT子句和OFFSET子句是可選的。WHERE子句支援tag比較;在SHOW SERIES查詢中,field比較是無效的。

WHERE子句中支援的操作符:

=

等於

<>

不等於

!=

不等於

=~

匹配

!~

不匹配

請查閱資料探索章節獲得關於FROM子句、LIMIT子句、OFFSET子句和Regex的介紹。

樣本

樣本一:運行帶有ON子句的SHOW SERIES查詢

> SHOW SERIES ON NOAA_water_database

key
---
average_temperature,location=coyote_creek
average_temperature,location=santa_monica
h2o_feet,location=coyote_creek
h2o_feet,location=santa_monica
h2o_pH,location=coyote_creek
h2o_pH,location=santa_monica
h2o_quality,location=coyote_creek,randtag=1
h2o_quality,location=coyote_creek,randtag=2
h2o_quality,location=coyote_creek,randtag=3
h2o_quality,location=santa_monica,randtag=1
h2o_quality,location=santa_monica,randtag=2
h2o_quality,location=santa_monica,randtag=3
h2o_temperature,location=coyote_creek
h2o_temperature,location=santa_monica

該查詢的輸出類似行協議格式。第一個逗號之前的所有內容是measurement的名字。第一個逗號之後的所有內容都是tag key或者tag value。資料庫NOAA_water_database有五個不同的measurement和14個不同的序列。

樣本二:運行不帶有ON子句的SHOW SERIES查詢

使用USE <database_name>指定資料庫

> USE NOAA_water_database
Using database NOAA_water_database

> SHOW SERIES

key
---
average_temperature,location=coyote_creek
average_temperature,location=santa_monica
h2o_feet,location=coyote_creek
h2o_feet,location=santa_monica
h2o_pH,location=coyote_creek
h2o_pH,location=santa_monica
h2o_quality,location=coyote_creek,randtag=1
h2o_quality,location=coyote_creek,randtag=2
h2o_quality,location=coyote_creek,randtag=3
h2o_quality,location=santa_monica,randtag=1
h2o_quality,location=santa_monica,randtag=2
h2o_quality,location=santa_monica,randtag=3
h2o_temperature,location=coyote_creek
h2o_temperature,location=santa_monica

使用參數db指定資料庫

~# curl -G "http://localhost:8086/query?db=NOAA_water_database&pretty=true" --data-urlencode "q=SHOW SERIES"

{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "columns": [
                        "key"
                    ],
                    "values": [
                        [
                            "average_temperature,location=coyote_creek"
                        ],
                        [
                            "average_temperature,location=santa_monica"
                        ],
                        [
                            "h2o_feet,location=coyote_creek"
                        ],
                        [
                            "h2o_feet,location=santa_monica"
                        ],
                        [
                            "h2o_pH,location=coyote_creek"
                        ],
                        [
                            "h2o_pH,location=santa_monica"
                        ],
                        [
                            "h2o_quality,location=coyote_creek,randtag=1"
                        ],
                        [
                            "h2o_quality,location=coyote_creek,randtag=2"
                        ],
                        [
                            "h2o_quality,location=coyote_creek,randtag=3"
                        ],
                        [
                            "h2o_quality,location=santa_monica,randtag=1"
                        ],
                        [
                            "h2o_quality,location=santa_monica,randtag=2"
                        ],
                        [
                            "h2o_quality,location=santa_monica,randtag=3"
                        ],
                        [
                            "h2o_temperature,location=coyote_creek"
                        ],
                        [
                            "h2o_temperature,location=santa_monica"
                        ]
                    ]
                }
            ]
        }
    ]
}

樣本三:運行帶有多個子句的SHOW SERIES查詢

> SHOW SERIES ON NOAA_water_database FROM "h2o_quality" WHERE "location" = 'coyote_creek' LIMIT 2

key
---
h2o_quality,location=coyote_creek,randtag=1
h2o_quality,location=coyote_creek,randtag=2

該查詢返回資料庫NOAA_water_database中,與measurement h2o_quality和tag location = coyote_creek相關聯的所有序列。LIMIT子句將返回的序列個數限制為2。

SHOW MEASUREMENTS

返回指定資料庫的measurement。

文法

SHOW MEASUREMENTS [ON <database_name>] [WITH MEASUREMENT <regular_expression>] [WHERE <tag_key> <operator> ['<tag_value>' | <regular_expression>]] [LIMIT_clause] [OFFSET_clause]

文法描述

ON <database_name>是可選的。如果查詢中沒有包含ON <database_name>,您必須在CLI中使用USE <database_name>指定資料庫,或者在HTTP API請求中使用參數db指定資料庫。

WITH子句,WHERE子句,LIMIT子句和OFFSET子句是可選的。WHERE子句支援tag比較;在SHOW MEASUREMENTS查詢中,field比較是無效的。

WHERE子句中支援的操作符:

=

等於

<>

不等於

!=

不等於

=~

匹配

!~

不匹配

請查閱資料探索章節獲得關於LIMIT子句、OFFSET子句和Regex的介紹。

樣本

樣本一:運行帶有ON子句的SHOW MEASUREMENTS查詢

> SHOW MEASUREMENTS ON NOAA_water_database

name: measurements
name
----
average_temperature
h2o_feet
h2o_pH
h2o_quality
h2o_temperature

該查詢返回資料庫NOAA_water_database中的measurement。資料庫NOAA_water_database有五個measurement:average_temperatureh2o_feeth2o_pHh2o_qualityh2o_temperature

樣本二:運行不帶有ON子句的SHOW MEASUREMENTS查詢

使用USE <database_name>指定資料庫

> USE NOAA_water_database
Using database NOAA_water_database

> SHOW MEASUREMENTS
name: measurements
name
----
average_temperature
h2o_feet
h2o_pH
h2o_quality
h2o_temperature

使用參數db指定資料庫

~# curl -G "http://localhost:8086/query?db=NOAA_water_database&pretty=true" --data-urlencode "q=SHOW MEASUREMENTS"

{
  {
      "results": [
          {
              "statement_id": 0,
              "series": [
                  {
                      "name": "measurements",
                      "columns": [
                          "name"
                      ],
                      "values": [
                          [
                              "average_temperature"
                          ],
                          [
                              "h2o_feet"
                          ],
                          [
                              "h2o_pH"
                          ],
                          [
                              "h2o_quality"
                          ],
                          [
                              "h2o_temperature"
                          ]
                      ]
                  }
              ]
          }
      ]
  }

樣本三:運行帶有多個子句的SHOW MEASUREMENTS查詢(i)

> SHOW MEASUREMENTS ON NOAA_water_database WITH MEASUREMENT =~ /h2o.*/ LIMIT 2 OFFSET 1

name: measurements
name
----
h2o_pH
h2o_quality

該查詢返回資料庫NOAA_water_database中名字以h2o開頭的measurement。LIMIT子句將返回的measurement名字的個數限制為2,OFFSET子句將measurement h2o_feet跳過,從h2o_feet後的measurement開始輸出。

樣本四:運行帶有多個子句的SHOW MEASUREMENTS查詢(ii)

> SHOW MEASUREMENTS ON NOAA_water_database WITH MEASUREMENT =~ /h2o.*/ WHERE "randtag"  =~ /\d/

name: measurements
name
----
h2o_quality

該查詢返回資料庫NOAA_water_database中名字以h2o開頭並且randtag的值包含一個整數的measurement。

SHOW TAG KEYS

返回指定資料庫的tag key。

文法

SHOW TAG KEYS [ON <database_name>] [FROM_clause] [WHERE <tag_key> <operator> ['<tag_value>' | <regular_expression>]] [LIMIT_clause] [OFFSET_clause]

文法描述

ON <database_name>是可選的。如果查詢中沒有包含ON <database_name>,您必須在CLI中使用USE <database_name>指定資料庫,或者在HTTP API請求中使用參數db指定資料庫。

FROM子句和WHERE子句是可選的。WHERE子句支援tag比較;在SHOW TAG KEYS查詢中,field比較是無效的。

WHERE子句中支援的操作符:

=

等於

<>

不等於

!=

不等於

=~

匹配

!~

不匹配

請查閱資料探索章節獲得關於FROM子句、LIMIT子句、OFFSET子句和Regex的介紹。

樣本

樣本一:運行帶有ON子句的SHOW TAG KEYS查詢

> SHOW TAG KEYS ON "NOAA_water_database"

name: average_temperature
tagKey
------
location

name: h2o_feet
tagKey
------
location

name: h2o_pH
tagKey
------
location

name: h2o_quality
tagKey
------
location
randtag

name: h2o_temperature
tagKey
------
location

該查詢返回資料庫NOAA_water_database中的tag key。查詢結果按measurement的名字進行分組;它展示了每個measurement都有一個名為location的tag key,並且,measurement h2o_quality還具有另外一個tag key randtag

樣本二:運行不帶有ON子句的SHOW TAG KEYS查詢

使用USE <database_name>指定資料庫

> USE NOAA_water_database
Using database NOAA_water_database

> SHOW TAG KEYS

name: average_temperature
tagKey
------
location

name: h2o_feet
tagKey
------
location

name: h2o_pH
tagKey
------
location

name: h2o_quality
tagKey
------
location
randtag

name: h2o_temperature
tagKey
------
location

使用參數db指定資料庫

~# curl -G "http://localhost:8086/query?db=NOAA_water_database&pretty=true" --data-urlencode "q=SHOW TAG KEYS"

{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "name": "average_temperature",
                    "columns": [
                        "tagKey"
                    ],
                    "values": [
                        [
                            "location"
                        ]
                    ]
                },
                {
                    "name": "h2o_feet",
                    "columns": [
                        "tagKey"
                    ],
                    "values": [
                        [
                            "location"
                        ]
                    ]
                },
                {
                    "name": "h2o_pH",
                    "columns": [
                        "tagKey"
                    ],
                    "values": [
                        [
                            "location"
                        ]
                    ]
                },
                {
                    "name": "h2o_quality",
                    "columns": [
                        "tagKey"
                    ],
                    "values": [
                        [
                            "location"
                        ],
                        [
                            "randtag"
                        ]
                    ]
                },
                {
                    "name": "h2o_temperature",
                    "columns": [
                        "tagKey"
                    ],
                    "values": [
                        [
                            "location"
                        ]
                    ]
                }
            ]
        }
    ]
}

樣本三:運行帶有多個子句的SHOW TAG KEYS查詢

> SHOW TAG KEYS ON "NOAA_water_database" FROM "h2o_quality" LIMIT 1 OFFSET 1

name: h2o_quality
tagKey
------
randtag

該查詢返回資料庫NOAA_water_database中名為h2o_quality的measurement裡的tag key。LIMIT子句將返回的tag key的個數限制為1,OFFSET子句將輸出結果位移一個。

SHOW TAG VALUES

返回資料庫中指定tag key的tag value。

文法

SHOW TAG VALUES [ON <database_name>][FROM_clause] WITH KEY [ [<operator> "<tag_key>" | <regular_expression>] | [IN ("<tag_key1>","<tag_key2")]] [WHERE <tag_key> <operator> ['<tag_value>' | <regular_expression>]] [LIMIT_clause] [OFFSET_clause]

文法描述

ON <database_name>是可選的。如果查詢中沒有包含ON <database_name>,您必須在CLI中使用USE <database_name>指定資料庫,或者在HTTP API請求中使用參數db指定資料庫。

WITH子句是必須要有的,它支援指定一個tag key、一個Regex或多個tag key。

FROM子句、WHERE子句、LIMIT子句和OFFSET子句是可選的。WHERE子句支援tag比較;在SHOW TAG VALUES查詢中,field比較是無效的。

WITH子句和WHERE子句中支援的操作符:

=

等於

<>

不等於

!=

不等於

=~

匹配

!~

不匹配

請查閱資料探索章節獲得關於FROM子句、LIMIT子句、OFFSET子句和Regex的介紹。

樣本

樣本一:運行帶有ON子句的SHOW TAG VALUES查詢

> SHOW TAG VALUES ON "NOAA_water_database" WITH KEY = "randtag"

name: h2o_quality
key       value
---       -----
randtag   1
randtag   2
randtag   3

該查詢返回資料庫NOAA_water_database中的tag key randtag的所有tag value。SHOW TAG VALUES將查詢結果按measurement的名字進行分組。

樣本二:運行不帶有ON子句的SHOW TAG VALUES查詢

使用USE <database_name>指定資料庫

> USE NOAA_water_database
Using database NOAA_water_database

> SHOW TAG VALUES WITH KEY = "randtag"

name: h2o_quality
key       value
---       -----
randtag   1
randtag   2
randtag   3

使用參數db指定資料庫

~# curl -G "http://localhost:8086/query?db=NOAA_water_database&pretty=true" --data-urlencode 'q=SHOW TAG VALUES WITH KEY = "randtag"'

{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "name": "h2o_quality",
                    "columns": [
                        "key",
                        "value"
                    ],
                    "values": [
                        [
                            "randtag",
                            "1"
                        ],
                        [
                            "randtag",
                            "2"
                        ],
                        [
                            "randtag",
                            "3"
                        ]
                    ]
                }
            ]
        }
    ]
}

樣本三:運行帶有多個子句的SHOW TAG VALUES查詢

> SHOW TAG VALUES ON "NOAA_water_database" WITH KEY IN ("location","randtag") WHERE "randtag" =~ /./ LIMIT 3

name: h2o_quality
key        value
---        -----
location   coyote_creek
location   santa_monica
randtag    1

該查詢從資料庫NOAA_water_database的所有measurement中返回locationrandtag的tag value,並且返回的資料還需滿足條件:randtag的tag value不為空白。LIMIT子句將返回的tag value的個數限制為3。

SHOW FIELD KEYS

返回field key和field value的資料類型。

文法

SHOW FIELD KEYS [ON <database_name>] [FROM <measurement_name>]

文法描述

ON <database_name>是可選的。如果查詢中沒有包含ON <database_name>,您必須在CLI中使用USE <database_name>指定資料庫,或者在HTTP API請求中使用參數db指定資料庫。

FROM子句也是可選的。請查閱資料探索章節獲得關於FROM子句的介紹。

說明

注釋:在不同的shard,field的資料類型可以不同。如果您的field中有多個資料類型,那麼SHOW FIELD KEYS按以下順序返回不同類型的資料:float,integer,string,boolean。

樣本

樣本一:運行帶有ON子句的SHOW FIELD KEYS查詢

> SHOW FIELD KEYS ON "NOAA_water_database"

name: average_temperature
fieldKey            fieldType
--------            ---------
degrees             float

name: h2o_feet
fieldKey            fieldType
--------            ---------
level description   string
water_level         float

name: h2o_pH
fieldKey            fieldType
--------            ---------
pH                  float

name: h2o_quality
fieldKey            fieldType
--------            ---------
index               float

name: h2o_temperature
fieldKey            fieldType
--------            ---------
degrees             float

該查詢返回資料庫NOAA_water_database中每個measurement的field key以及對應的field value的資料類型。

樣本二:運行不帶有ON子句的SHOW FIELD KEYS查詢

使用USE <database_name>指定資料庫

> USE NOAA_water_database
Using database NOAA_water_database

> SHOW FIELD KEYS

name: average_temperature
fieldKey            fieldType
--------            ---------
degrees             float

name: h2o_feet
fieldKey            fieldType
--------            ---------
level description   string
water_level         float

name: h2o_pH
fieldKey            fieldType
--------            ---------
pH                  float

name: h2o_quality
fieldKey            fieldType
--------            ---------
index               float

name: h2o_temperature
fieldKey            fieldType
--------            ---------
degrees             float

使用參數db指定資料庫

~# curl -G "http://localhost:8086/query?db=NOAA_water_database&pretty=true" --data-urlencode 'q=SHOW FIELD KEYS'

{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "name": "average_temperature",
                    "columns": [
                        "fieldKey",
                        "fieldType"
                    ],
                    "values": [
                        [
                            "degrees",
                            "float"
                        ]
                    ]
                },
                {
                    "name": "h2o_feet",
                    "columns": [
                        "fieldKey",
                        "fieldType"
                    ],
                    "values": [
                        [
                            "level description",
                            "string"
                        ],
                        [
                            "water_level",
                            "float"
                        ]
                    ]
                },
                {
                    "name": "h2o_pH",
                    "columns": [
                        "fieldKey",
                        "fieldType"
                    ],
                    "values": [
                        [
                            "pH",
                            "float"
                        ]
                    ]
                },
                {
                    "name": "h2o_quality",
                    "columns": [
                        "fieldKey",
                        "fieldType"
                    ],
                    "values": [
                        [
                            "index",
                            "float"
                        ]
                    ]
                },
                {
                    "name": "h2o_temperature",
                    "columns": [
                        "fieldKey",
                        "fieldType"
                    ],
                    "values": [
                        [
                            "degrees",
                            "float"
                        ]
                    ]
                }
            ]
        }
    ]
}

樣本三:運行帶有FROM子句的SHOW FIELD KEYS查詢

> SHOW FIELD KEYS ON "NOAA_water_database" FROM "h2o_feet"

name: h2o_feet
fieldKey            fieldType
--------            ---------
level description   string
water_level         float

該查詢返回資料庫NOAA_water_database中measurement h2o_feet裡的fields key以及對應的field value的資料類型。

SHOW FIELD KEYS的常見問題

問題一:SHOW FIELD KEYS和field的類型差異

在同一個shard,field value的資料類型不能發生變化,但是在不同的shard,field的資料類型可以不同。SHOW FIELD KEYS遍曆每個shard返回與field key相關聯的所有資料類型。

樣本

field all_the_types中儲存了四個不同的資料類型:

> SHOW FIELD KEYS

name: mymeas
fieldKey        fieldType
--------        ---------
all_the_types   integer
all_the_types   float
all_the_types   string
all_the_types   boolean
重要

SHOW FIELD KEYS處理field的類型差異與SELECT語句不一樣。請查閱FAQ相關章節獲得更多相關資訊。

InfluxDB® is a trademark registered by InfluxData, which is not affiliated with, and does not endorse, TSDB for InfluxDB®.