Получите многократный групповой запрос данных от InfluxDB в Графане - PullRequest
0 голосов
/ 28 апреля 2020

Я хочу получить сценическое имя для каждой сборки и родительской папки с помощью infxdb и показать на панели инструментов grafana.

Я использую InfluxDB для сбора других метрик сборки jenkins, но сценическое имя не поддерживается встроенным образом, поэтому Я создал customData для сценического имени, следовательно, через какой бы этап сборки он ни разбирался, он собирает сценическое имя и отправляет в effxdb, и я получаю данные, как показано ниже.

time                 build_number build_time project_name      project_name_1    project_path                project_path_1              stage1                  stage2                       stage3                       stage4                     stage5                     stage6 stage7              stage8
----                 ------------ ---------- ------------      --------------    ------------                --------------              ------                  ------                       ------                       ------                     ------                     ------ ------              ------
1588084985624000000  3            19824      TestPetclinic     TestPetclinic     TestFolder/TestPetclinic    TestFolder/TestPetclinic    Checkout SCM                                                                                                                                   Publish to InfluxDB petclinic
1588085162281000000  4            38600      testPipeline      testPipeline      petclinic/testPipeline      petclinic/testPipeline                              Get application version      Send Parameters To Spinnaker Build                                                        Publish to InfluxDB petclinic
1588085231934000000  4            38785      TestPetclinic     TestPetclinic     TestFolder/TestPetclinic    TestFolder/TestPetclinic                            Get application version      Send Parameters To Spinnaker Build                                                        Publish to InfluxDB petclinic
1588085356705000000  5            3616       TestPetclinic     TestPetclinic     TestFolder/TestPetclinic    TestFolder/TestPetclinic    Checkout SCM                                                                                                                                   Publish to InfluxDB petclinic
1588085797787000000  7            41916      TestPetclinic     TestPetclinic     TestFolder/TestPetclinic    TestFolder/TestPetclinic    Checkout SCM            Get application version                                                                                                Publish to InfluxDB petclinic
1588086095058000000  10           81730      TestPetclinic     TestPetclinic     TestFolder/TestPetclinic    TestFolder/TestPetclinic    Checkout SCM            Get application version                                                                                                Publish to InfluxDB TestFolder
1588087475800000000  11           43199      TestPetclinic     TestPetclinic     TestFolder/TestPetclinic    TestFolder/TestPetclinic    Checkout SCM            Get application version                                                                                                Publish to InfluxDB TestFolder
1588087564498000000  12           18748      TestPetclinic     TestPetclinic     TestFolder/TestPetclinic    TestFolder/TestPetclinic    Checkout SCM            Get application version                                                                                                Publish to InfluxDB TestFolder

Из этого я могу легко получить данные в строить по-мудрому (по работе), но изо всех сил пытаясь получить папку с данными.

Ниже приведен скриншот с графикой, которая показывает данные по каждой работе, которые подсчитывают каждую работу, сколько раз было проанализировано за этап

enter image description here

Но, как я уже упоминал, я не получаю папку с данными. Поэтому я также анализирую жестко запрограммированное значение в каждом задании внутри папки, последний столбец в приведенных выше табличных данных, например,

Folder Name: abc > Job 1 contains custom data field key: stage8 value: "abc"
Folder Name: abc > Job 2 contains custom data field key: stage8 value: "abc"

Folder Name: xyz > Job 1 contains custom data field key: stage8 value: "xyz"
Folder Name: xyz > Job 2 contains custom data field key: stage8 value: "xyz"

Через который я получаю дополнительный stage8 с 2 различными значениями в соответствии с именем папки.

Далее в графане я пытаюсь создать запрос, чтобы получить ожидаемые данные вроде

stage8      Checkout SCM    Get application version     Send Parameters To Spinnaker        Build   Unit Test & Publish Report      Jacoco
petclinic        14              15                          8                               7       4                               3
TestFolder       11              12                          9                               8       8                               8

Но с этим запросом

SELECT count("stage1") as "Checkout SCM", count("stage2") as "Get application version" , count("stage3") as "Send Parameters To Spinnaker", count("stage4") as "Build", count("stage5") as "Unit Test & Publish Report", count("stage6") as "Jacoco" FROM "jenkins_custom_data" GROUP BY "stage8" 

Я не получая ожидаемую таблицу, вместо этого собирая вместе группу из обоих значений, например

stage8      Checkout SCM    Get application version     Send Parameters To Spinnaker        Build   Unit Test & Publish Report      Jacoco
               23              27                          17                               15       12                               11

Когда я пытаюсь выполнить этот запрос в InfluxDB, я получаю ошибку

ERR: mixing aggregate and non-aggregate queries is not supported

Пожалуйста, посоветуйте, как можно мы группируем несколько значений и показываем как строки в таблице

Спасибо.

1 Ответ

0 голосов
/ 28 апреля 2020

Я удивлен, что у вас был какой-либо результат, mysql верстак вообще не соответствовал вашему запросу.

Пожалуйста, проконсультируйтесь Когда использовать одинарные, двойные и обратные кавычки в MySQL чтобы узнать больше об одинарных кавычках и обратных кавычках

SELECT 
   count(`stage1`) as "Checkout SCM"
   , count(`stage2`) as "Get application version" 
   , count(`stage3`) as "Send Parameters To Spinnaker"
   , count(`stage4`) as "Build"
   , count(`stage5`) as "Unit Test & Publish Report"
   , count(`stage6`) as "Jacoco" 
FROM `jenkins_custom_data` 
GROUP BY `stage8`

Пример https://www.db-fiddle.com/f/bVvbUy1rirBp5tD9Fq9J8X/3

...