Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Переключение служб с помощью раскрывающегося списка версий . Дополнительные сведения о навигации.
Область применения: ✅ Microsoft Fabric ✅ Azure Data Explorer
Эти команды выполняют запрос или команду управления и возвращают результаты запроса в таблицу. Разница между этими командами заключается в том, как они обрабатывают существующие или несуществующие таблицы и данные.
| Команда | Если таблица существует | Если таблица не существует |
|---|---|---|
.set |
Команда завершается ошибкой. | Создается таблица, а данные приемируются. |
.append |
Данные добавляются в таблицу. | Команда завершается ошибкой. |
.set-or-append |
Данные добавляются в таблицу. | Создается таблица, а данные приемируются. |
.set-or-replace |
Данные заменяют данные в таблице. | Создается таблица, а данные приемируются. |
Чтобы отменить прием из команды запроса, см. раздел cancel operation.
Примечание.
Прием из запроса — это прямая приемка. Таким образом, он не включает автоматические повторные попытки. Автоматические повторные попытки доступны при приеме через службу управления данными. Используйте документ обзора приема, чтобы решить, какой из наиболее подходящих вариантов приема для вашего сценария.
Примечание.
Прием из запроса — это прямая приемка. Таким образом, он не включает автоматические повторные попытки. Автоматические повторные попытки доступны при приеме через службу управления данными.
Разрешения
Для выполнения различных действий в таблице требуются определенные разрешения:
- Чтобы добавить строки в существующую таблицу с помощью
.appendкоманды, требуется минимальное количество разрешений Ingestor таблицы. - Чтобы создать новую таблицу с помощью различных
.setкоманд, требуется минимальное количество разрешений пользователя базы данных. - Чтобы заменить строки в существующей таблице с помощью
.set-or-replaceкоманды, требуется минимальное количество разрешений администратора таблиц.
Дополнительные сведения о разрешениях см. в разделе "Управление доступом на основе ролей Kusto".
Синтаксис
(.set | .append | .set-or-append | .set-or-replace) [async] tableName [with( propertyName= propertyValue [, ...]] )<|queryOrCommand
Дополнительные сведения о соглашениях синтаксиса.
Параметры
| Имя (название) | Type | Обязательно | Описание |
|---|---|---|---|
| async | string |
Если задано, команда возвращается немедленно и продолжает прием в фоновом режиме. Используйте возвращаемую OperationId.show operations команду, чтобы получить состояние завершения приема и результаты. |
|
| tableName | string |
✔️ | Имя таблицы для приема данных. Имя таблицы всегда связано с базой данных в контексте. |
| propertyName, propertyValue | string |
Одно или несколько поддерживаемых свойств приема, используемых для управления процессом приема. | |
| queryOrCommand | string |
✔️ | Текст запроса или команды управления, результаты которых используются в качестве данных для приема. Поддерживаются только .show команды управления. |
Советы по производительности
-
distributedЗадайте для свойстваtrueзначение, если объем данных, создаваемых запросом, велик, превышает один гигабайт (ГБ) и не требует сериализации. Затем несколько узлов могут создавать выходные данные параллельно. Не используйте этот флаг, если результаты запроса небольшие, так как может потребоваться создать множество небольших сегментов данных. - Прием данных — это ресурсоемкая операция, которая может повлиять на одновременные действия в базе данных, включая выполнение запросов. Избегайте одновременного выполнения слишком большого количества команд приема.
- Ограничьте данные приема менее чем на одну ГБ на операцию приема. При необходимости используйте несколько команд приема.
Поддерживаемые свойства приема
| Свойство | Type | Описание |
|---|---|---|
distributed |
bool |
Если trueкоманда выполняет запрос параллельно со всех узлов. По умолчанию — false. Ознакомьтесь с советами по производительности. |
creationTime |
string |
Значение datetime , отформатируемое как ISO8601 string, используемое во время создания экстентов данных приема. Если значение не указано, используется now(). Если указано, убедитесь, что свойство Lookback в действующей политике объединения экстентов целевой таблицы соответствует указанному значению. |
extend_schema |
bool |
Если trueкоманда может расширить схему таблицы. По умолчанию — false. Этот параметр применяется только в командах .append, .set-or-append и set-or-replace. Для этого параметра требуются по крайней мере разрешения администратора таблицы. |
recreate_schema |
bool |
Если trueкоманда может повторно создать схему таблицы. По умолчанию — false. Этот параметр применяется только в команде .set-or-replace. Этот параметр имеет приоритет над свойством extend_schema , если оба заданы. Для этого параметра требуются по крайней мере разрешения администратора таблицы. |
folder |
string |
Папка, которая будет назначена таблице. Если таблица уже существует, это свойство перезаписывает папку таблицы. |
ingestIfNotExists |
string |
Если задано, прием завершается ошибкой, если в таблице уже есть данные, помеченные тегом ingest-by: с тем же значением. Дополнительные сведения см. в разделе о тегах ingest-by:. |
policy_ingestiontime |
bool |
Если trueв таблице включена политика времени приема . Значение по умолчанию — true. |
tags |
string |
JSON string , представляющий список тегов для связывания с созданным экстентом. |
docstring |
string |
Описание, используемое для документирования таблицы. |
persistDetails |
Логическое значение, указывающее, что команда должна сохранять подробные результаты для получения командой сведений о операции .show. По умолчанию — false. |
with (persistDetails=true) |
Рекомендации по схеме
-
.set-or-replaceсохраняет схему, если не заданоextend_schemaодно изrecreate_schemaсвойств приема илиtrueприема. -
.set-or-appendи.appendкоманды сохраняют схему, еслиextend_schemaдля свойства приема не задано значениеtrue. - Сопоставление схемы результирующих наборов с целевой таблицей основано на типах столбцов. При этом имена столбцов не совпадают. Убедитесь, что столбцы схемы результатов запроса находятся в том же порядке, что и таблица, в противном случае данные будут приниматься в неправильные столбцы.
Внимание
Если схема изменена, она выполняется в отдельной транзакции перед приемом фактических данных. Это означает, что схема может быть изменена даже в случае сбоя приема данных.
Ограничение символов
Команда завершается ошибкой, если запрос создает имя сущности с символом $ . Имена сущностей должны соответствовать правилам именования, поэтому $ символ должен быть удален для успешной команды приема.
Например, в следующем запросе search оператор создает столбец $table. Чтобы сохранить результаты запроса, используйте переименование проекта для переименования столбца.
.set Texas <| search State has 'Texas' | project-rename tableName=$table
Возвраты
Возвращает сведения об экстентах, созданных в результате выполнения команд .set или .append.
Примеры
Создание и обновление таблицы из источника запроса
Следующий запрос создает таблицу RecentErrors с той же схемой, что LogsTableи . Он обновляется RecentErrors со всеми журналами ошибок за LogsTable последний час.
.set RecentErrors <|
LogsTable
| where Level == "Error" and Timestamp > now() - time(1h)
Создание и обновление таблицы из источника запросов с помощью распределенного флага
В следующем примере создается новая таблица, вызываемая OldExtents в базе данных, асинхронно. Ожидается, что набор данных больше одного ГБ (более одного миллиона строк), поэтому используется распределенный флаг. Он обновляет OldExtentsExtentId записи из таблицы, созданной MyExtents более 30 дней назад.
.set async OldExtents with(distributed=true) <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Добавление данных в таблицу
Следующий пример фильтрует ExtentId записи в MyExtents таблице, созданной более 30 дней назад, и добавляет записи в OldExtents таблицу с связанными тегами.
.append OldExtents with(tags='["TagA","TagB"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Создание или добавление таблицы с возможно существующими помеченными данными
Следующий пример добавляет или создает таблицу OldExtents асинхронно. Он фильтрует ExtentId записи в таблице, созданной MyExtents более 30 дней назад, и указывает теги, добавляемые в новые экстенты.ingest-by:myTag Параметр ingestIfNotExists гарантирует, что прием происходит только в том случае, если данные еще не существуют в таблице с указанным тегом.
.set-or-append async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Создание таблицы или замена данных связанными данными
Следующий запрос заменяет данные в OldExtents таблице или создает таблицу, если она еще не существует, с ExtentId записями в MyExtents таблице, созданной более 30 дней назад. Пометьте новый экстент, если ingest-by:myTag данные еще не существуют в таблице с указанным тегом.
.set-or-replace async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Добавление данных с связанными данными
В следующем примере данные добавляются в OldExtents таблицу асинхронно с помощью ExtentId записей из таблицы, созданной MyExtents более 30 дней назад. Он задает определенное время создания для новых экстентов.
.append async OldExtents with(creationTime='2017-02-13T11:09:36.7992775Z') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Пример выходных данных
Ниже приведен пример типа выходных данных, которые могут отображаться в запросах.
| ExtentId | OriginalSize | ExtentSize | CompressedSize | IndexSize | RowCount |
|---|---|---|---|---|---|
| 23a05ed6-376d-4119-b1fc-6493bcb05563 | 1291 | 5882 | 1568 | 4314 | 10 |
Связанный контент
- Форматы данных , поддерживаемые для загрузки
- Встроенное прием
- Прием из хранилища