Объединение 2 запросов на основе общего значения - PullRequest
2 голосов
/ 22 января 2020
1st query
ns=mynamespace* app_name=A-api API=GET_INITIAL_DATA NAME=*

2nd query
ns=mynamespace* app_name=B-api API=GET_FINAL_DATA NAME=*

У меня есть 2 вышеуказанных запроса. Каждый запрашивает журналы микро-службы. Но я не хочу звонить им по отдельности и ищу один запрос. Я хочу иметь возможность сопоставить 1-й запрос со 2-м запросом на основе имени. Я пытаюсь получить%, а также общее количество. Попытка достичь чего-то вроде следующего:

GET_INITIAL_DATA Total count: 10000000
GET_FINAL_DATA count that matched NAME in 1st call : 8000000
Matching call Percentage : 80%
Non Matching call Percentage : 20%

и показать это на графике, разделенном на неделю в течение 3-месячного периода. Есть ли способ сделать это? Я ожидаю миллионы записей, поэтому для меня не имеет смысла делать первый запрос, получать все имена (миллионы их) и затем использовать эти данные для второго вызова. Пожалуйста помогите. Спасибо.

1 Ответ

0 голосов
/ 24 января 2020

Вы можете попробовать следующий запрос и выполнить транспонирование, чтобы достичь вот этого

 GET_INITIAL_DATA Total count: 10000000
GET_FINAL_DATA count that matched NAME in 1st call : 8000000
Matching call Percentage : 80%
Non Matching call Percentage : 20%

Запрос:

(ns=mynamespace* app_name=A-api API=GET_INITIAL_DATA NAME=*)  OR (ns=mynamespace* app_name=B-api API=GET_FINAL_DATA NAME=*)
|stats values(API) as Apps_list dc(API) as Apps_no by NAME
|search Apps_list=*GET_INITIAL_DATA*
|eval match=if(Apps_no=2,"Match",null())
|table NAME,Apps_no,match,Apps_list
|stats dc(NAME) as GET_INITIAL_DATA count(match) as GET_FINAL_DATA
|eval Match_call=round((GET_FINAL_DATA/GET_INITIAL_DATA),0)
|eval nonmatch_call=(100-Match_call)."%"
|eval Match_call = Match_call."%"
|rename GET_FINAL_DATA as "GET_INITIAL_DATA Total count" GET_FINAL_DATA as "GET_FINAL_DATA count that matched NAME in 1st call" Match_call as "Matching call Percentage" nonmatch_call as "Non Matching call Percentage"
...