Подключаемый модуль bag_unpack
Подключаемый bag_unpack
модуль распаковывает один столбец типа dynamic
, рассматривая каждый слот верхнего уровня контейнера свойств как столбец. Подключаемый модуль вызывается с evaluate
помощью оператора .
Синтаксис
T|
evaluate
bag_unpack(
Column [,
OutputColumnPrefix ] [,
columnsConflict ] [,
ignoredProperties ] )
[:
OutputSchema]
Дополнительные сведения о соглашениях о синтаксисе.
Параметры
Имя | Тип | Обязательно | Описание |
---|---|---|---|
T | string |
✔️ | Табличные входные данные, столбец которого должен быть распаковывлен. |
Столбец | dynamic |
✔️ | Столбец T для распаковки. |
OutputColumnPrefix | string |
Общий префикс, добавляемый во все столбцы, созданные подключаемым модулем. | |
columnsConflict | string |
Направление разрешения конфликтов столбцов. Допустимые значения:error — Запрос выдает ошибку (по умолчанию)replace_source - Исходный столбец замененkeep_source — Исходный столбец сохранен |
|
ignoredProperties | dynamic |
Необязательный набор свойств контейнера, которые следует игнорировать. } | |
OutputSchema | Имена и типы ожидаемых столбцов выходных данных подключаемого bag_unpack модуля. Указание ожидаемой схемы оптимизирует выполнение запроса, не выполняя сначала фактический запрос для изучения схемы. Сведения о синтаксисе см. в разделе Синтаксис выходной схемы. |
Синтаксис выходной схемы
(
Имя столбца:
ColumnType [,
...] )
Чтобы добавить все столбцы входной таблицы в выходные данные подключаемого модуля, используйте подстановочный знак *
в качестве первого параметра следующим образом:
(
*
,
Имя столбца:
ColumnType [,
...] )
Возвращаемое значение
Подключаемый bag_unpack
модуль возвращает таблицу с таким же количеством записей, как и табличные входные данные (T). Схема таблицы аналогична схеме ее табличных входных данных со следующими изменениями:
- Указанный входной столбец (столбец) удаляется.
- Схема расширяется с таким количеством столбцов, как есть отдельные слоты в значениях контейнера свойств верхнего уровня T. Имя каждого столбца соответствует имени каждого слота, при необходимости с префиксом OutputColumnPrefix. Его типом является либо тип слота, если все значения одного слота имеют один и тот же тип, либо
dynamic
, если значения отличаются по типу.
Примечание
Если OutputSchema не указан, схема вывода подключаемого модуля зависит от значений входных данных. Таким образом, несколько выполнений подключаемого модуля с использованием разных входных данных могут привести к по-разному.
Примечание
Входные данные для подключаемого модуля должны быть такими, чтобы выходная схема следовали всем правилам для табличной схемы. В частности:
Имя выходного столбца не может совпадать с именем существующего столбца в табличном входе T, если только это не распаковываемый столбец (Столбец), так как это приведет к получению двух столбцов с одинаковым именем.
Все имена слотов с префиксом OutputColumnPrefix должны быть допустимыми именами сущностей и соответствовать правилам именования идентификаторов.
Примеры
Развернуть сумку
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d)
Выходные данные
возраст; | Имя |
---|---|
20 | Джон |
40 | Данил |
30 | Jasmine |
Развертывание контейнера с помощью OutputColumnPrefix
Разверните контейнер и используйте параметр для OutputColumnPrefix
создания имен столбцов, которые начинаются с префикса "Property_".
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, 'Property_')
Выходные данные
Property_Age | Property_Name |
---|---|
20 | Джон |
40 | Данил |
30 | Jasmine |
Развертывание контейнера с помощью столбцовConflict
Разверните контейнер и используйте параметр для columnsConflict
разрешения конфликтов между существующими столбцами и столбцами, созданными оператором bag_unpack()
.
datatable(Name:string, d:dynamic)
[
'Old_name', dynamic({"Name": "John", "Age":20}),
'Old_name', dynamic({"Name": "Dave", "Age":40}),
'Old_name', dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, columnsConflict='replace_source') // Use new name
Выходные данные
возраст; | Имя |
---|---|
20 | Джон |
40 | Данил |
30 | Jasmine |
datatable(Name:string, d:dynamic)
[
'Old_name', dynamic({"Name": "John", "Age":20}),
'Old_name', dynamic({"Name": "Dave", "Age":40}),
'Old_name', dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, columnsConflict='keep_source') // Keep old name
Выходные данные
возраст; | Имя |
---|---|
20 | Old_name |
40 | Old_name |
30 | Old_name |
Развертывание сумки с помощью свойств ignoredProperties
Разверните контейнер и используйте параметр , ignoredProperties
чтобы игнорировать определенные свойства в контейнере свойств.
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20, "Address": "Address-1" }),
dynamic({"Name": "Dave", "Age":40, "Address": "Address-2"}),
dynamic({"Name": "Jasmine", "Age":30, "Address": "Address-3"}),
]
// Ignore 'Age' and 'Address' properties
| evaluate bag_unpack(d, ignoredProperties=dynamic(['Address', 'Age']))
Выходные данные
Имя |
---|
Джон |
Данил |
Jasmine |
Развертывание контейнера с помощью определяемого запросом OutputSchema
Разверните контейнер и используйте OutputSchema
параметр , чтобы разрешить оценку различных оптимизаций перед выполнением фактического запроса.
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d) : (Name:string, Age:long)
Выходные данные
Имя | возраст; |
---|---|
Джон | 20 |
Данил | 40 |
Jasmine | 30 |
Разверните контейнер и используйте OutputSchema
параметр , чтобы разрешить оценку различных оптимизаций перед выполнением фактического запроса. Используйте подстановочный знак *
для возврата всех столбцов входной таблицы.
datatable(d:dynamic, Description: string)
[
dynamic({"Name": "John", "Age":20}), "Student",
dynamic({"Name": "Dave", "Age":40}), "Teacher",
dynamic({"Name": "Jasmine", "Age":30}), "Student",
]
| evaluate bag_unpack(d) : (*, Name:string, Age:long)
Выходные данные
Описание | Имя | возраст; |
---|---|---|
Учащийся | Джон | 20 |
Учитель | Данил | 40 |
Учащийся | Jasmine | 30 |
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по