すべてのプロダクト
Search
ドキュメントセンター

Time Series Database:正規表現

最終更新日:Jan 14, 2025

InfluxQL では、クエリで次のオブジェクトを指定するときに正規表現を使用できます。

  • SELECT 句のフィールドキーとタグキー
  • FROM 句のメジャーメント
  • WHERE 句のタグ値と STRING 型のフィールド値
  • GROUP BY 句のタグキー

InfluxQL では、WHERE 句、データベース、およびリテンションポリシーで、データ型が STRING でないフィールド値を照合するために正規表現を使用することはできません。

説明

注: 正規表現の比較は、文字列の比較よりも多くの計算リソースを消費します。正規表現を使用するクエリは、正規表現を使用しないクエリよりもパフォーマンスが低下します。

構文

SELECT /<regular_expression_field_key>/ FROM /<regular_expression_measurement>/ WHERE [<tag_key> <operator> /<regular_expression_tag_value>/ | <field_key> <operator> /<regular_expression_field_value>/] GROUP BY /<regular_expression_tag_key>/

説明

正規表現はスラッシュ (/) で囲みます。正規表現は、Golang の正規表現構文に準拠します。

次の表に、サポートされている演算子を示します。

=~ 一致
! ~ 不一致

SELECT 句で正規表現を使用して、フィールドキーとタグキーを指定する

> SELECT /l/ FROM "h2o_feet" LIMIT 1

name: h2o_feet
time                   level description      location       water_level
----                   -----------------      --------       -----------
2015-08-18T00:00:00Z   between 6 and 9 feet   coyote_creek   8.12

このクエリは、文字 l を含むすべてのフィールドキーとタグキーを返します。SELECT 句の正規表現は、少なくとも 1 つのフィールドキーと一致する必要があります。これにより、クエリは正規表現と一致するタグキーの結果を返すことができます。

SELECT 句でフィールドキーとタグキーの正規表現を区別するための構文はありません。/<regular_expression>/::[field | tag] 構文はサポートされていません。

SELECT 句で正規表現と関数を使用して、フィールドキーを指定する

> SELECT DISTINCT(/level/) FROM "h2o_feet" WHERE "location" = 'santa_monica' AND time >= '2015-08-18T00:00:00.000000000Z' AND time <= '2015-08-18T00:12:00Z'

name: h2o_feet
time                   distinct_level description   distinct_water_level
----                   --------------------------   --------------------
2015-08-18T00:00:00Z   below 3 feet                 2.064
2015-08-18T00:00:00Z                                2.116
2015-08-18T00:00:00Z                                2.028

このクエリは、InfluxQL 関数を使用して、level を含むフィールドキーの一意のフィールド値を返します。

FROM 句で正規表現を使用して、メジャーメントを指定する

> SELECT MEAN("degrees") FROM /temperature/

name: average_temperature
time                    mean
----                    ----
1970-01-01T00:00:00Z   79.98472932232272

name: h2o_temperature
time                    mean
----                    ----
1970-01-01T00:00:00Z   64.98872722506226

このクエリは、InfluxQL 関数を使用して、NOAA_water_database データベース内で名前に temperature を含むメジャーメントの degrees の平均値を計算します。

WHERE 句で正規表現を使用して、タグ値を指定する

> SELECT MEAN(water_level) FROM "h2o_feet" WHERE "location" =~ /[m]/ AND "water_level" > 3

name: h2o_feet
time                   mean
----                   ----
1970-01-01T00:00:00Z   4.47155532049926

このクエリは、InfluxQL 関数を使用して、指定された条件に基づいて water_level フィールドキーの平均フィールド値を計算します。指定された条件は、location のタグ値に m が含まれており、water_level のフィールド値が 3 より大きいことです。

WHERE 句で正規表現を使用して、タグ値を持たないタグキーを指定する

> SELECT * FROM "h2o_feet" WHERE "location" !~ /./
>

このクエリは、h2o_feet メジャーメントから指定された条件を満たすデータを返します。指定された条件は、location タグキーにタグ値がないことです。NOAA_water_database データベースでは、各ポイントに location タグキーのタグ値があるため、クエリはデータを返しません。

正規表現を削除すると、同じ結果を取得するクエリを実行できます。詳細については、「FAQ」のトピックをご参照ください。

WHERE 句で正規表現を使用して、タグ値を持つタグキーを指定する

> SELECT MEAN("water_level") FROM "h2o_feet" WHERE "location" =~ /./

name: h2o_feet
time                   mean
----                   ----
1970-01-01T00:00:00Z   4.442107025822523

このクエリは、InfluxQL 関数を使用して、指定された条件を満たす water_level フィールド値の平均を計算します。指定された条件は、対応するタグキー location にタグ値があることです。

WHERE 句で正規表現を使用して、フィールド値を指定する

> SELECT MEAN("water_level") FROM "h2o_feet" WHERE "location" = 'santa_monica' AND "level description" =~ /between/

name: h2o_feet
time                   mean
----                   ----
1970-01-01T00:00:00Z   4.47155532049926

このクエリは、InfluxQL 関数を使用して、指定された条件を満たす water_level フィールド値の平均を計算します。指定された条件は、対応する level description フィールドキーのフィールド値に between が含まれていることです。

GROUP BY 句で正規表現を使用して、タグキーを指定する

> SELECT FIRST("index") FROM "h2o_quality" GROUP BY /l/

name: h2o_quality
tags: location=coyote_creek
time                   first
----                   -----
2015-08-18T00:00:00Z   41

name: h2o_quality
tags: location=santa_monica
time                   first
----                   -----
2015-08-18T00:00:00Z   99

このクエリは、InfluxQL 関数を使用して、l 文字を含む各タグキーの index の最初の値を取得します。

InfluxDB® は InfluxData によって登録された商標であり、TSDB for InfluxDB® とは提携しておらず、推奨もしていません。