Как я могу вернуть результаты запроса, которых нет в результатах другого запроса? Например, я хочу вернуть результаты, полученные из первого запроса и отсутствующие во втором запросе:
Первый запрос:
customEvents
| extend Product = tostring(customDimensions.["Is Successful"])
| extend TransactionNumber = tostring(customDimensions.["Transaction Number"])
| extend StoreCode = tostring(customDimensions.["StoreCode"])
| where name contains 'Transaction Posted' and customDimensions.['Transaction Number'] != ''
| where customDimensions.["Is Successful"] == "False"
| project TransactionNumber
например если вышеописанное вернулось
145
167
100
94
56
Второй запрос:
customEvents
| extend Product = tostring(customDimensions.["Is Successful"])
| extend TransactionNumber = tostring(customDimensions.["Transaction Number"])
| extend StoreCode = tostring(customDimensions.["StoreCode"])
| where name contains 'Transaction Posted' and customDimensions.['Transaction Number'] != ''
| where customDimensions.["Is Successful"] == "True"
| project TransactionNumber
например если вышеописанное вернулось
94
95
96
97
167
100
Я хочу, чтобы набор результатов был:
145
56
Я пробовал следующее, но, похоже, это не возвращает результаты запроса об ошибках, которых нет в результатах запроса об успехах:
let failures = (customEvents
| extend Product = tostring(customDimensions.["Is Successful"])
| extend TransactionNumber = tostring(customDimensions.["Transaction Number"])
| extend StoreCode = tostring(customDimensions.["StoreCode"])
| where name contains 'Transaction Posted' and customDimensions.['Transaction Number'] != ''
| where customDimensions.["Is Successful"] == "False"
| project TransactionNumber);
let successes = (customEvents
| extend Product = tostring(customDimensions.["Is Successful"])
| extend TransactionNumber = tostring(customDimensions.["Transaction Number"])
| extend StoreCode = tostring(customDimensions.["StoreCode"])
| where name contains 'Transaction Posted' and customDimensions.['Transaction Number'] != ''
| where customDimensions.["Is Successful"] == "True"
| project TransactionNumber);
failures
| join kind=fullouter (successes) on TransactionNumber
| where isnull(TransactionNumber)
| project TransactionNumber
Все еще ищу ответ
Написал ответ @Bhav ..
Попробуйте сделать anti-join
:
let failures = (customEvents
| extend Product = tostring(customDimensions.["Is Successful"])
| extend TransactionNumber = tostring(customDimensions.["Transaction Number"])
| extend StoreCode = tostring(customDimensions.["StoreCode"])
| where name contains 'Transaction Posted' and customDimensions.['Transaction Number'] != ''
| where customDimensions.["Is Successful"] == "False"
| project TransactionNumber);
let successes = (customEvents
| extend Product = tostring(customDimensions.["Is Successful"])
| extend TransactionNumber = tostring(customDimensions.["Transaction Number"])
| extend StoreCode = tostring(customDimensions.["StoreCode"])
| where name contains 'Transaction Posted' and customDimensions.['Transaction Number'] != ''
| where customDimensions.["Is Successful"] == "True"
| project TransactionNumber);
failures
| join kind=anti(successes) on TransactionNumber
| project TransactionNumber
Отметьте весь код и выполните его.
Это не возвращает результаты, которые находятся в первом наборе результатов, а не во втором. Например, 0286200624913433 — это номер неудачной транзакции, который возвращается как часть набора результатов сбоев и не входит в набор результатов успешных операций. Полный запрос не возвращает никаких результатов, но я ожидаю 0286200624913433.
Хорошо, мы можем это исправить. Я просто хотел исправить сообщение об ошибке из вашего первоначального вопроса.
Я исправил свой вопрос в своем ответе. А как насчет анти-соединения. Это то решение, которое вы ожидаете?
Вы можете интегрировать свой запрос, как показано ниже. Запрос KQL:
let failures = datatable(TransactionNumber: int)
[
145,167,100,94,56
];
let successes = datatable(TransactionNumber: int)
[
94,95,96,97,167,100
];
failures
| join kind=leftanti (successes) on TransactionNumber
Выход:
Скрипка.
Я не знал, что существует площадка для запросов KQL. Прохладный. хорошо знать.
Ошибка устранилась? Или вы все еще ищете ответ?