J'utilise influx DB et émet la commande,
SELECT * FROM interface
Ci-dessous la sortie
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"
Lorsque la commande est émise, cela fonctionne bien.
SELECT distinct(value) FROM interface
Mais quand émettre une commande pour la colonne de chemin, il n'y a pas de sortie Vous vous demandez ce qui me manque?
SELECT distinct(path) FROM interface
Merci pour l'info supplémentaire @Ammad.
Essayez GROUP BY
avec des balises. DISTINCT()
ne fonctionne qu'avec des champs.
distinct()
fonctionne sur les champs, pas sur les balises. Vois ici:
https://docs.influxdata.com/influxdb/v1.0/query_language/functions/#distinct
DISTINCT () renvoie les valeurs uniques d'un seul champ.
Les valeurs de champ sont censées être les données réelles qui vous intéressent. Les valeurs de balises sont des métadonnées: données relatives aux données. La plupart des fonctions des systèmes de base de données agissent sur les données ou les métadonnées, mais rarement sur les deux.
Voici un exemple de jouet sur la v0.13, montrant que distinct()
ne fonctionne vraiment pas avec les tags:
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"
Maintenant quelques questions:
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
Maintenant, essayons distinct()
select distinct(tag1) from foo
Résultats sans sortie du tout.
select distinct(field1) from foo
name: foo
time distinct
1970-01-01T00:00:00Z some text
1970-01-01T00:00:00Z some more text
Vous pourrez peut-être obtenir ce que vous voulez en utilisant GROUP BY
. Comme ça:
select distinct(field1) from foo group by tag1
Qui donne:
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
Cela affiche chaque valeur de tag1
et les valeurs de field1
associées à cette valeur tag1
.
J'espère que cela pourra aider.
Il existe un moyen de résoudre ce problème en utilisant une double instruction SELECT:
> select distinct("tag1") from (select "field1", "tag1" from foo)
La requête interne renvoie les champs field1 et tag1 qui peuvent être interrogés à l'extérieur comme des champs normaux auxquels vous pouvez appliquer distinct ().
J'espère que cela vous aidera. Cosmo.
Il y a SHOW TAG VALUES WITH key = path
que l'on peut utiliser pour obtenir des valeurs de balises uniques