Запросить имя таблицы ADX динамически - PullRequest
0 голосов
/ 09 октября 2019

Мне нужно иметь возможность динамически запрашивать таблицы Azure Data Explorer (ADX), то есть использовать метаданные приложения, которые также хранятся в ADX.

Если это даже возможно,для этого кажется через функцию table () . Другими словами, мне кажется, что я мог бы просто написать:

let table_name = <non-trivial ADX query that returns the name of a table as a string>;
table(table_name) | limit 10

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

Есть ли способ сделать все это в ADX (то есть без нескольких запросов от клиента) или я могунужно вернуться к чертежной доске?

1 Ответ

0 голосов
/ 09 октября 2019

Если вы знаете желаемую схему вывода, вы можете достичь этого, используя union (обратите внимание, что в этом случае схема результата будет объединением всех таблиц, и вам нужно будет явно проецировать столбцы, которые вы 'заинтересованы)

let TableA = view() { print col1 = "hello world"};
let TableB = view() { print col1 = "goodbye universe" };
let LabelTable = datatable(table_name:string, label:string, updated:datetime)
[ 
    "TableA", "MyLabel", datetime(2019-10-08),
    "TableB", "MyLabel", datetime(2019-10-02) 
];
let GetLabeledTable = (l:string)
{
    toscalar(
        LabelTable
        | where label == l
        | order by updated desc
        | limit 1
    )
};
let table_name = GetLabeledTable('MyLabel');
union withsource = T *
| where T == table_name
| project col1
...