私はinflux DBを使用してコマンドを発行していますが、
SELECT * FROM interface
以下は出力です
interface
time element path value
2016-08-24T21:22:16.7080877Z "link-layer-address0" "key:/arp-information/link-layer-address0" "3c:61:04:48:df:91"
2016-08-24T21:22:17.9090527Z "link-layer-address0" "key:/arp-information/link-layer-address0" "3c:61:04:48:df:92"
2016-08-24T21:22:19.8584133Z "link-layer-address1" "key:/arp-information/link-layer-address1" "3c:61:04:48:df:97"
2016-08-24T21:22:20.3377847Z "link-layer-address2" "key:/arp-information/link-layer-address2" "3c:61:04:48:df:90"
コマンドを発行すると、正常に動作します。
SELECT distinct(value) FROM interface
しかし、パス列に対してコマンドを発行すると、出力はありません。私は何が欠けているのだろうか?
SELECT distinct(path) FROM interface
追加情報@Ammadをありがとう。
タグ付きの_GROUP BY
_を試してください。 DISTINCT()
はフィールドでのみ機能します。
distinct()
は、タグではなくフィールドで機能します。こちらをご覧ください:
https://docs.influxdata.com/influxdb/v1.0/query_language/functions/#distinct
DISTINCT()は、単一のフィールドの一意の値を返します。
フィールド値は、対象となる実際のデータであることを意図しています。タグ値はメタデータ、つまりデータに関するデータです。データベースシステムのほとんどの機能は、データまたはメタデータで動作しますが、両方で動作することはまれです。
これはv0.13のおもちゃの例で、distinct()
がタグで実際に機能しないことを示しています。
_insert foo,tag1=asdf field1="some text"
insert foo,tag1=asdf field1="some text"
insert foo,tag1=asdfg field1="some text"
insert foo,tag1=asdfg field1="some text"
insert foo,tag1=asdfg field1="some more text"
insert foo,tag1=asdfg field1="some more text"
_
今いくつかのクエリ:
_select * from foo
name: foo
time field1 tag1
2016-09-12T05:19:53.563221799Z some text asdf
2016-09-12T05:20:03.027652248Z some text asdf
2016-09-12T05:20:10.04939971Z some text asdfg
2016-09-12T05:20:11.235525548Z some text asdfg
2016-09-12T05:20:17.418920163Z some more text asdfg
2016-09-12T05:20:19.354742922Z some more text asdfg
_
では、distinct()
を試してみましょう
_select distinct(tag1) from foo
_
結果はまったく出力されません。
_select distinct(field1) from foo
name: foo
time distinct
1970-01-01T00:00:00Z some text
1970-01-01T00:00:00Z some more text
_
_GROUP BY
_を使用すると、必要なものを取得できる場合があります。このような:
_select distinct(field1) from foo group by tag1
_
それは与える:
_name: foo
tags: tag1=asdf
time distinct
1970-01-01T00:00:00Z some text
name: foo
tags: tag1=asdfg
time distinct
1970-01-01T00:00:00Z some text
1970-01-01T00:00:00Z some more text
_
これは、_tag1
_の各値と、その_field1
_値に関連付けられている_tag1
_の値を示しています。
お役に立てば幸いです。
ダブルSELECTステートメントを使用してこれを解決する方法があります。
> select distinct("tag1") from (select "field1", "tag1" from foo)
内部クエリはfield1とtag1を返します。これは、適用可能な通常のフィールドと同様に外部でクエリできますdistinct()。
それが役に立てば幸い。コスモ。
有る SHOW TAG VALUES WITH key = path
一意のタグ値を取得するために使用できます