Как создать столбец со значением по умолчанию / Как заполнить столбец с таким же значением в Kusto

Я знаю, как это сделать с ограничением DEFAULT при создании таблицы или с UPDATE и SET при изменении таблицы с другими экземплярами SQL. Есть ли простой способ сделать это с помощью команды .create table или .alter-merge table Kusto?

Вот мой вариант использования, откуда исходит этот вопрос, если он полезен:

У меня есть сценарий python, который удаляется (если существует), создает таблицу на Kusto, затем загружает данные из локального файла csv в эту таблицу, и он хорошо работает.

Принимаемый CSV-файл имеет 3 столбца. Я хотел бы создать 4-й столбец и вставить его с тем же значением, когда он создается / загружается в Kusto. Это возможно?

Например:

MyData.csv для загрузки (заголовок будет удален перед загрузкой) выглядит следующим образом:

Date    ID    Name 
1/1    1001   ABC_1
1/1    1002   3X4Y5Z
1/2    1003   DEF_a

Таблица, которую нужно создать на Kusto, будет выглядеть так:

Date    ID    Name    The_Fixed_Value
1/1    1001   ABC_1         a
1/1    1002   3X4Y5Z        a
1/2    1003   DEF_a         a

Я хотел бы заполнить столбец The_Fixed_Value тем же значением 'a' при запуске кода Python.

Ссылка на Python: https://github.com/Azure/azure-kusto-python/blob/master/azure-kusto-ingest/tests/sample.py

Большое спасибо заранее!


person an1que    schedule 25.02.2020    source источник


Ответы (3)


Вы можете использовать сопоставление csv со своим приемом и указать значение const для дополнительного столбца, см. Здесь соответствующие документы

Вот пример команды приема, в которой это используется:

  .ingest into test (@"FILE_NAME.csv") with(
           Format = csv,
           csvMapping = '[{"Name":"a", "Ordinal":"0"},{"Name":"b", "ConstValue":"some value"}]'
   )
person Avnera    schedule 26.02.2020

Я ничего не знаю о Kusto, но похоже, что вы создаете промежуточный фрейм данных. Тогда ты не можешь просто сделать это?

df['The_Fixed_Value'] = 'a'
person user2707389    schedule 25.02.2020
comment
CSV загружается непосредственно с веб-сайта событием .click() через веб-драйвер Python Selenium. Если я правильно понимаю, ваше предложение будет работать хорошо, если при создании файла csv задействован «writer ()». - person an1que; 26.02.2020

Вы можете использовать команду externaldata, чтобы сделать свой CSV-файл стол. Тогда вы могли бы сделать что-нибудь вроде:

.set-or-replace YourTable <|
externaldata( (Date:datetime, ID:int, Name:string), <csv_url>)
| extend The_Fixed_Value = 'a'
person Blake B.    schedule 25.02.2020