ラインプロトコルは、TSDB for InfluxDB® にデータポイントを書き込むためのテキストベースのフォーマットです。
構文
<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]各行は 1 つのデータポイントを表します。行は改行 (\n) で区切られます。ラインプロトコルは空白文字の影響を受けます。
例
myMeasurement,tag1=val1,tag2=val2 field1="v1",field2=1i 1465839830100400200この例では:
myMeasurementはメジャメント名ですtag1=val1,tag2=val2はタグセットですfield1="v1",field2=1iはフィールドセットです1465839830100400200はナノ秒単位のタイムスタンプです
要素
| 要素 | 必須 | 説明 | 型 |
|---|---|---|---|
| メジャメント | はい | メジャメントの名前。データポイントごとに 1 つのメジャメントのみ。 | 文字列 |
| タグセット | いいえ | データポイントのすべてのタグキーと値のペア。 | キーと値は文字列である必要があります |
| フィールドセット | はい。少なくとも 1 つのフィールドが必要です。 | データポイントのすべてのフィールドキーと値のペア。 | フィールドキー:文字列。フィールド値:浮動小数点数、整数、文字列、またはブール値 |
| タイムスタンプ | いいえ。デフォルトはサーバーのローカル UTC 時間 (ナノ秒単位) です。 | データポイントのタイムスタンプ。データポイントごとに 1 つのタイムスタンプのみ。 | UNIX ナノ秒タイムスタンプ |
データ型
| 型 | 適用対象 | 詳細 |
|---|---|---|
| FLOAT | フィールド値 | IEEE-754 64 ビット浮動小数点数。デフォルトの数値型です。例:1、1.0、1.e+78、1.E+78。指数表記がサポートされています。 |
| INTEGER | フィールド値 | 符号付き 64 ビット整数、-9223372036854775808 から 9223372036854775807 の範囲。値に i を付加します。例:1i。 |
| STRING | メジャメント、タグキー、タグ値、フィールドキー、フィールド値 | 最大 64 KB。 |
| BOOLEAN | フィールド値 | TRUE 値は t、T、true、True、または TRUE として書き込みます。FALSE 値は f、F、false、False、または FALSE として書き込みます。 |
| TIMESTAMP | タイムスタンプ | UNIX ナノ秒タイムスタンプ。最小値:-9223372036854775806 (1677-09-21T00:12:43.145224194Z)。最大値:9223372036854775806 (2262-04-11T23:47:16.854775806Z)。他の精度のタイムスタンプを書き込むには、HTTP API を使用します。 |
ブール値を書き込む際の構文は、それらをクエリする際の構文とは異なります。詳細については、「よくある質問」をご参照ください。
フィールド値の型は、1 つのシャード内では統一されている必要がありますが、シャード間では異なっていてもかまいません。型の競合が SELECT * クエリにどのように影響するかについては、よくある質問をご参照ください。データ型の例
1.0 を浮動小数点数として書き込む
> INSERT mymeas value=11 を浮動小数点数として書き込む
> INSERT mymeas value=1接尾辞 i がない数値リテラルは、デフォルトで浮動小数点数です。
-1.234456e+78 を浮動小数点数として書き込む
> INSERT mymeas value=-1.234456e+781 を整数として書き込む
> INSERT mymeas value=1i文字列のフィールド値を書き込む
> INSERT mymeas value="stringing along"文字列のフィールド値はダブルクォーテーションマークで囲みます。
ブール値のフィールド値を書き込む
> INSERT mymeas value=trueブール値のフィールド値を引用符で囲まないでください。次の文は true をブール値ではなく、文字列として書き込みます:
> INSERT mymeas value="true"同一シャード内での型の競合
> INSERT mymeas value=3 1465934559000000000
> INSERT mymeas value="stringing along" 1465934559000000001
ERR: {"error":"field type conflict: input field \"value\" on measurement \"mymeas\" is type string, already exists as type float"}シャード間での型の競合 (成功)
> INSERT mymeas value=3 1465934559000000000
> INSERT mymeas value="stringing along" 1466625759000000000
>2 つのタイムスタンプが異なるシャードに属する場合、型の競合はエラーを生成しません。
引用符、特殊文字、および追加の命名ガイドライン
引用符
| 要素 | ダブルクォーテーションマーク (") | シングルクォーテーションマーク (') |
|---|---|---|
| タイムスタンプ | 使用しない | 使用しない |
| メジャメント、タグキー、タグ値、フィールドキー | 使用しない | 使用しない |
| フィールド値 (STRING) | 必須。文字列のフィールド値はダブルクォーテーションマークで囲みます。浮動小数点数、整数、ブール値は引用符で囲まないでください。 | 使用しない |
メジャメント名、タグキー、タグ値、またはフィールドキーをダブルクォーテーションマークまたはシングルクォーテーションマークで囲むと、それらが名前の一部となり、クエリ構文が複雑になる可能性があります。ラインプロトコルデータでは、これらの要素を引用符で囲むことは避けてください。
無効:タイムスタンプをダブルクォーテーションマークで囲む
> INSERT mymeas value=9 "1466625759000000000"
ERR: {"error":"unable to parse 'mymeas value=9 \"1466625759000000000\"': bad timestamp"}タイムスタンプを引用符で囲むと、bad timestamp エラーが発生します。
セマンティックエラー:ブール値のフィールド値をダブルクォーテーションマークで囲む
> INSERT mymeas value="true"
> SHOW FIELD KEYS FROM "mymeas"
name: mymeas
------------
fieldKey fieldType
value stringTSDB for InfluxDB® は、ダブルクォーテーションマークで囲まれたフィールド値をすべて文字列として扱います。
セマンティックエラー:メジャメント名をダブルクォーテーションマークで囲む
> INSERT "mymeas" value=200
> SHOW MEASUREMENTS
name: measurements
------------------
name
"mymeas"
> SELECT * FROM mymeas
> SELECT * FROM "mymeas"
> SELECT * FROM "\"mymeas\""
name: "mymeas"
--------------
time value
2016-06-14T20:36:21.836131014Z 200メジャメント名がダブルクォーテーションマークで囲まれている場合、引用符は名前の一部になります。メジャメントをクエリするには、FROM 句で各ダブルクォーテーションマークをバックスラッシュでエスケープします:"\"mymeas\""。
特殊文字
次の文字はバックスラッシュ (\) でエスケープしてください:
| 要素 | エスケープする文字 |
|---|---|
| メジャメント名 | カンマ (,)、スペース ( ) |
| タグキー | カンマ (,)、等号 (=)、スペース ( ) |
| タグ値 | カンマ (,)、等号 (=)、スペース ( ) |
| フィールドキー | カンマ (,)、等号 (=)、スペース ( ) |
| フィールド値 (STRING) | ダブルクォーテーションマーク (") |
バックスラッシュ (\) をエスケープする必要はありません。上記にリストされていない特殊文字もエスケープする必要はありません。
例:特殊文字を含むデータポイント
> INSERT "measurement\ with\ quo⚡️es\ and\ emoji",tag\ key\ with\ sp⚡️ces=tag\,value\,with"commas" field_k\ey="string field value, only \" need be esc⚡️ped"追加の命名ガイドライン
コメント:行頭の番号記号 (
#) はコメントを示します。TSDB for InfluxDB® は、#と次の改行 (\n) の間のすべての文字を無視します。大文字と小文字の区別:メジャメント名、タグキー、タグ値、フィールドキー、フィールド値はすべて大文字と小文字を区別します。
InfluxQL キーワード:InfluxQL キーワードを識別子名として使用することは避けてください。識別子として使用すると、InfluxQL キーワードがクエリキーワードとして解釈され、クエリエラーが発生する可能性があります。
「time」 キーワード:
timeは、二重引用符なしで、継続クエリ名、データベース名、メジャー名、保持ポリシー名、サブスクリプション名、またはユーザー名として使用できます。ただし、timeはフィールドキーまたはタグキーとして使用できません。TSDB for InfluxDB® は、エラーを返してこのような書き込みリクエストを拒否します。詳細については、「よくある質問」をご参照ください。
ラインプロトコルデータの書き込み
データベースへのラインプロトコルデータの書き込み手順については、ツールの章をご参照ください。
重複するデータポイント
データポイントは、そのメジャメント名、タグセット、およびタイムスタンプによって一意に識別されます。既存のポイントと同じメジャメント、タグセット、およびタイムスタンプを持つデータポイントを書き込んだ場合:
新しいポイントのフィールドセットが既存のポイントと異なる場合、フィールドセットは古いフィールドセットと新しいフィールドセットの和集合になります。
フィールドキーが競合する場合、新しい値が優先されます。
重複を回避するための例とガイドラインについては、「よくある質問」をご参照ください。
注意事項
書き込み前にタグをソートする:Go の
bytes.Compare関数と同じ順序でタグキーによってタグをソートします。タグの順序を一貫させることで、書き込みパフォーマンスが向上します。より粗い精度のタイムスタンプを使用する:データ圧縮のパフォーマンスを向上させるために、粗い粒度のタイムスタンプを使用することを推奨します。
NTP で時計を同期する:TSDB for InfluxDB® は、ホストのローカル UTC 時間を使用してタイムスタンプを割り当てます。ホストの時計が Network Time Protocol (NTP) サーバーと同期されていない場合、書き込まれたデータに不正確なタイムスタンプが付与される可能性があります。
InfluxDB® は InfluxData の登録商標であり、InfluxData は TSDB for InfluxDB® と提携しておらず、また推奨もしていません。