Kusto KQL, эквивалентный столбцу LIKE CONCAT со значением (mysql) - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь перевести следующий запрос MySQL (v5.6):

SELECT name FROM world WHERE capital LIKE CONCAT(name, '%city')

в Kusto KQL, но следующее не работает:

world | where capital matches regex strcat(name,".*city") | project name

Вероятно, поскольку matches regex принимает только строковое значение, а concat(name,".*city") является столбцом.

Даже следующее не работает:

world | extend a =  strcat(name, ".*City") | where capital matches regex a

Любые предложения о том, как я можно перевести этот запрос на KQL?

1 Ответ

2 голосов
/ 30 января 2020

Аргумент matches regex должен быть скалярной строковой константой и может зависеть от контекста строки.

Если вы можете сделать какие-либо предположения относительно фактических данных, вам может не потребоваться использовать регулярное выражение в все и имеют широкий набор строковых операторов на выбор (в зависимости от данных и требований, конечно): https://docs.microsoft.com/en-us/azure/kusto/query/datatypes-string-operators

Например:

let world = datatable(capital:string)
[
    "Belize City",
    "Jeruslam",
    "Mexico City",
    "Tulum",
    "NotARealCity"
]
;
world
| extend _ends_with = capital endswith "city",
               _has = capital has "city",
          _contains = capital contains "city"

Результаты с:

| capital      | _ends_with | _has | _contains |
|--------------|------------|------|-----------|
| Belize City  | 1          | 1    | 1         |
| Jeruslam     | 0          | 0    | 0         |
| Mexico City  | 1          | 1    | 1         |
| Tulum        | 0          | 0    | 0         |
| NotARealCity | 1          | 0    | 1         |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...