Модификация (трансформация) object
DaJet Script реализует команду MODIFY для гибкого создания новых объектов на основании других, а также модифкации или трансформации уже сущестующих объектов. Команда предназначена для поддержки сценариев конвертации (трансформации) данных средствами DaJet Script.
Синтаксис команды MODIFY
MODIFY @target
[FROM @source]
[DELETE <list-of-columns>]
[SELECT <list-of-column-expressions>]
Все предложения команды MODIFY опциональны. Если не указано ни одно предложение: FROM, DELETE или SELECT, то команда просто ничего не делает.
@target
Переменная типа object
. Целевой объект для выполнения модификаций.
FROM @source
Предложение FROM выполняет полное копирование структуры и данных из переменной @source
типа object
в целевой объект. Таким образом в переменной @target
создаётся полностью новый экземпляр объекта. Данный вид операции необходим в тех случаях, когда модификация объекта-источника нежелательна.
DELETE <list-of-columns>
Предложение DELETE удаляет из целевого объекта все свойства по указанным именам.
SELECT <list-of-column-expressions>
Предложение SELECT добавляет новые или изменяет значения существующих свойств целевого объекта.
Пример использования команды MODIFY
В следующем примере из двух объектов-источников данных “конструируется” третий. Полученный результат сериализуется в формат JSON.
DECLARE @target object -- Целевой объект модификации
DECLARE @source1 object -- Объект-источник данных 1
DECLARE @source2 object -- Объект-источник данных 2
-- ******************************************************
-- * Исходные данные объекта-источника 1 в формате JSON *
-- ******************************************************
DECLARE @json1 string = '{
"Булево": true,
"Целое": 1234,
"Десятичное": 12.34
}'
-- ******************************************************
-- * Исходные данные объекта-источника 2 в формате JSON *
-- ******************************************************
DECLARE @json2 string = '{
"ДатаВремя": "2024-01-01T12:34:56",
"Строка": "это строка текста",
"Идентификатор": "08ec109d-a06b-a1b1-11ee-ca472bff0a0d"
}'
-- ********************************************
-- * Создаём объекты-источники данных из JSON *
-- ********************************************
SET @source1 = JSON(@json1)
SET @source2 = JSON(@json2)
-- *************************************************
-- * Выполняем модификацию целевого объекта: *
-- * 1. Полностью копируем объект-источник 1 *
-- * 2. Удаляем свойство целевого объекта "Булево" *
-- * 3. Добавляем новые свойства при помощи SELECT *
-- *************************************************
MODIFY @target FROM @source1
DELETE Булево
SELECT СуммаЧисел = @source1.Целое + @source1.Десятичное
, Константа = 'test тест'
, НоваяСтрока = @source2.Строка
, НоваяДата = @source2.ДатаВремя
-- ********************************************
-- * Сериализуем целевой объект в формат JSON *
-- ********************************************
PRINT JSON(@target)
Результат выполнения скрипта
{
"Целое": 1234,
"Десятичное": 12.34,
"СуммаЧисел": 1246.34,
"Константа": "test тест",
"НоваяСтрока": "это строка текста",
"НоваяДата": "2024-01-01T12:34:56"
}