Skip to the content.

Начало

Модификация (трансформация) 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"
}

Наверх