Array

Шаблон Array

Минимальный шаблон

<Array>
    <!-- Источник массива -->
    <Source></Source>
    <!-- Получение индекса первого элемента. -->
    <Filter>
        <Not>
            <And>
                <Or>
                    <Filter Type="Equal">
                        <!-- или Field (для DC) или Index (для массивов)-->
                        <Field></Field>
                        <Index></Index>
                        <DataType Type=""></DataType>
                        <Value></Value>
                    </Filter>
                </Or>
            </And>
        </Not>
    </Filter>
    <!-- Уникальные элементы в массиве. Если теги On не указаны, используется первый элемент -->
    <Distinct>
      <On Index="" />
    </Distinct>
    <!-- Сортировка. Если теги By не указаны, используется первый элемент и сортируется по возрастанию  -->
    <Order>
      <By Index="" Type="Asc" />
      <By Index="" Type="Desc" />
    </Order>
    <!-- Создать новый массив на основе существующего. Если Items.Count == 1 то возвращает одномерный массив -->
    <Select>
        <Items>
            <!-- Элемент массива -->
            <Item Type="Index"></Item>
            <!-- Выбор из словаря -->
            <Item Type="Field"><!-- название элемента словаря --></Item>
            <!-- Скалярное значение -->
            <Item Type="Value"></Item>
            <!-- Порядковый номер элемента массива -->
            <Item Type="Number" Start="0"></Item>
            <!-- Форматирование значений -->
            <Item Type="Format"></Item>
            <!-- Работа с вложенными массивами -->
            <Item Type="Action">
                <Index><!-- индекс элемента массива --></Index>
                <Actions><!-- цепочка действий. Доступны все действия над массивами--></Actions>
            </Item>
            <!-- Расчет выражения -->
            <Item Type="Expression">
                <!-- В выражении могут использоваться элементы массива ([0]) и дополнительные значения ({0}).-->
                <!-- Дополнительно можно добавить переменную Index -->
                <Expression>{0} > 0</Expression>
                <Items>
                    <!-- Дополнительные значения -->
                    <Item></Item>
                </Items>
            </Item>
            <!-- Подстановка значений -->
            <Item>
                <Index><!-- индекс элемента массива --></Index>
                <Value><!-- таблица значений --></Value>
            </Item>
        </Items>
    </Select>    
</Array>
Полный шаблон Array

Описание Array

Значение, которое будет передано в команду при выполнении.

В тэге <Source> указывается любое универсальное значение, с которым выполняются операции указанные после тэга <Source> - Operation1, Operation2. Операций может быть неограниченное количество. При этом операции будут выполняться последовательно в порядке объявления: для первой операции (Operation1) используется значение из тэга <Source>, для последующих операций - результат предыдущей операции.

Все операции можно разделить на группы:

  • Изменение

  • Агрегация

  • Поиск

  • Соединение

  • Выборка из массива

  • Преобразование

  • Сортировка

Изменение

Add

Добавляет элемент или элементы в массив.

При добавлении элементов используются следующие правила:

  • Матрица добавляется в Матрицу Строки из матрицы, указанной в тэге <Value>, добавляются в конец матрицы из тэга <Source>.

Пример

Результат:

  • Массив добавляется в Матрицу В массив из тэга <Value> добавляются пустые элементы, чтобы длина массива соответствовала наибольшей длине строки матрицы, указанной в тэге <Source>, и полученный массив добавляются в конец матрицы.

Пример

Результат:

  • Скаляр добавляется в Матрицу Скаляр из тэга <Value> преобразуется в массив с длиной соответствующей наибольшей длине строки матрицы, указанной в тэге <Source>, и полученный массив добавляются в конец матрицы.

Пример

Результат:

  • Матрица добавляется в Массив Первый столбец матрицы, указанной в тэге <Value>, преобразуется в массив и добавляется в конец массива из тэга <Source>.

Пример

Результат:

  • Массив добавляется в Массив Массив из тэга <Value> добавляется в конец массива, указанного в тэге <Source>.

Пример

Результат:

  • Скаляр добавляется в Массив Скаляр из тэга <Value> добавляется в конец массива, указанного в тэге <Source>.

Пример

Результат:

  • Во всех случаях, когда в качестве значения тэга <Source> указан скаляр, будет генерироваться ошибка TypeMismatch.

InsertAt

Добавляет элемент или элементы в массив в указанную позицию.

При добавлении элементов используются следующие правила:

  • Матрица добавляется в Матрицу Строки из матрицы, указанной в тэге <Value>, добавляются в конец матрицы из тэга <Source>.

Пример

Результат:

  • Массив добавляется в Матрицу В массив из тэга <Value> добавляются пустые элементы, чтобы длина массива соответствовала наибольшей длине строки матрицы, указанной в тэге <Source>, и полученный массив добавляются в конец матрицы.

Пример

Результат:

  • Скаляр добавляется в Матрицу Скаляр из тэга <Value> преобразуется в массив с длиной соответствующей наибольшей длине строки матрицы, указанной в тэге <Source>, и полученный массив добавляются в конец матрицы.

Пример

Результат:

  • Матрица добавляется в Массив Первый столбец матрицы, указанной в тэге <Value>, преобразуется в массив и добавляется в конец массива из тэга <Source>.

Пример

Результат:

  • Массив добавляется в Массив Массив из тэга <Value> добавляется в конец массива, указанного в тэге <Source>.

Пример

Результат:

  • Скаляр добавляется в Массив Скаляр из тэга <Value> добавляется в конец массива, указанного в тэге <Source>.

Пример

Результат:

  • Во всех случаях, когда в качестве значения тэга <Source> указан скаляр, будет генерироваться ошибка TypeMismatch.

Update

Обновляет элемент в массиве/матрице в указанной позиции.

При обновлении элементов используются следующие правила:

  • Массив добавляется в Матрицу В массив из тэга <Value> добавляются пустые элементы, чтобы длина массива соответствовала наибольшей длине строки матрицы, указанной в тэге <Source>, и полученный массив записывается в элемент с индексом <Index>.

Пример

Результат:

  • Скаляр добавляется в Матрицу Скаляр из тэга <Value> преобразуется в массив с длиной соответствующей наибольшей длине строки матрицы, указанной в тэге <Source>, и полученный массив записывается в элемент с индексом <Index>.

Пример

Результат:

  • Матрица добавляется в Массив Берет первый элемент первой строки матрицы, указанной в тэге <Value>, и записывается в элемент с индексом <Index> массива из тэга <Source>.

Пример

Результат:

  • Массив добавляется в Массив Берется первый элемент массива из тэга <Value> и записывается в элемент с индексом <Index> массива, указанном в тэге <Source>.

Пример

Результат:

  • Скаляр добавляется в Массив Скаляр из тэга <Value> записывается в элемент с индексом <Index> массива, указанного в тэге <Source>.

Пример

Результат:

  • Во всех случаях, когда в качестве значения тэга <Source> указан скаляр, будет генерироваться ошибка TypeMismatch.

Remove

Удаляет элемент(ы) по индексу или индексам.

Пример 1. Удаление элемента из матрицы

Результат:

Пример 2. Удаление элемента из массива

Результат:

Пример 3. Удаление элементов из матрицы

Результат:

Агрегация

Aggregate

Вычисляет значения по формулам.

В выражении <Expression> могут использоваться элементы исходного массива (указываются в квадратных скобках []) или дополнительные значения, перечисленные в тэге <Items> (указываются в фигурных скобках {}). Также доступна переменная {Result}, в которой хранится значение, вычисленное для прошлого элемента.

Если элементов Item в Aggregate/Items несколько, то возвращается массив результатов агрегации. Если один, то скалярное значение.

Для вычисления выражений используется NCalc.

Пример 1. Сумма и произведение всех элементов массива

Результат:

Пример 2. Сумма произведения элементов матрицы

Результат:

Count

Считает количество элементов в массиве.

Пример

Результат:

Max

Находит максимальный элемент в массиве или в столбце матрицы.

В атрибуте Type задаётся один из типов.

В необязательном атрибуте Index для матриц указывается индекс столбца, в котором будет происходить поиск максимального элемента. Если атрибут не указан, то используется значение 0.

Пример 1. Максимальный элемент в третьем столбце матрицы

Результат:

Пример 2. Максимальный элемент массива

Результат:

Min

Находит минимальный элемент в массиве или в столбце матрицы.

В атрибуте Type задаётся один из типов.

В необязательном атрибуте Index для матриц указывается индекс столбца, в котором будет происходить поиск минимального элемента. Если атрибут не указан, то используется значение 0.

Пример 1. Минимальный элемент в третьем столбце матрицы

Результат:

Пример 2. Минимальный элемент массива

Результат:

Sum

Находит сумму элементов в массиве или в столбце матрицы.

В атрибуте Type задаётся один из типов.

В необязательном атрибуте Index для матриц указывается индекс столбца, для которого будет вычисляться сумма элементов. Если атрибут не указан, то используется значение 0.

Пример 1. Сумма элементов в третьем столбце матрицы

Результат:

Пример 2. Сумма элементов массива

Результат:

Поиск

IndexOf

Возвращает индекс первого элемента массива удовлетворяющего условию.

В необязательном атрибуте Type тэга <IndexOf> указывается тип сравнения значений. По умолчанию используется фильтр Equal.

Тэг <Field> применяется для выборки из массива словарей. В атрибуте Name указывается название поля словаря, по которому будет происходить проверка условия.

Тэг <Index> применяется для выборки из одномерного массива или матрицы. Для матриц в атрибуте Value указывается индекс элемента строки, по которому будет проверка условия.

Тэг <DataType> задаёт тип элемента. По умолчанию используется тип StringDataType.

В зависимости от типа фильтра тэги <Value> или <DataType> могут отсутствовать. Например, в фильтрах IsNull, IsNotNull.

Типы сравнения значений

Equal

Сравнение значений на равенство

NotEqual

Сравнение значений на неравенство

Greater

Сравнение значений на "больше": элемент массива больше указанного значения

GreaterOrEqual

Сравнение значений на "больше или равно": элемент массива больше или равен указанному значению

Less

Сравнение значений на "меньше": элемент массива меньше указанного значения

LessOrEqual

Сравнение значений на "меньше или равно": элемент массива меньше или равен указанному значению

Contains

Сравнение значений на "содержит": элемент массива содержит указанное значение, при этом все значения преобразуется в строку

NotContains

Сравнение значений на "не содержит": элемент массива не содержит указанное значение, при этом все значения преобразуется в строку

In

Сравнение значений на "входит": элемент массива входит в указанный массив

NotIn

Сравнение значений на "не входит": элемент массива не входит в указанный массив

Overlap

Сравнение значений на "пересекается": массив из элемента исходного массива имеет общие элементы с указанным массивом

NotOverlap

Сравнение значений на "не пересекается": массив из элемента исходного массива не имеет общие элементы с указанным массивом

MatchSearch

Сравнение значений на "удовлетворяет поисковой строке". Поисковая строка может состоять из слов, разделенных пробелами и символами "+", "*" и "?":

  • пробел означает "ИЛИ";

  • "+" означает "И";

  • "*" означает любое количество любых символов;

  • "?" означает ровно один символ.

NotMatchSearch

Сравнение значений на "не удовлетворяет поисковой строке".

Поисковая строка может состоять из слов, разделенных пробелами и символами "+", "*" и "?":

  • пробел означает "ИЛИ";

  • "+" означает "И";

  • "*" означает любое количество любых символов;

  • "?" означает ровно один символ.

ContainedIn

Сравнение значений на "входит": элемент массива входит в указанное значение, при этом все значения преобразуется в строку

NotContainedIn

Сравнение значений на "не входит": элемент массива не входит в указанное значение, при этом все значения преобразуется в строку

IsNull

Сравнение на Null

IsNotNull

Сравнение на "не Null"

Nested

Составной фильтр. Для соединения вложенных фильтров (<Filter>) доступны тэги <And>, <Or>, <Not>

Пример 1. Индекс первого элемента массива, который больше 10

Результат:

Пример 2. Индекс первого элемента массива, который больше 0 и меньше 20

Результат:

Пример 3. Индекс первого элемента матрицы, где второй столбец меньше 0

Результат:

Пример 4. Индекс первого элемента матрицы, где первый столбец больше 4 и второй в диапазоне от -10 до 10

Результат:

Filter

Возвращает элементы массива, удовлетворяющие условию.

В необязательном атрибуте Type тэга <Filter> указывается тип фильтра. По умолчанию используется фильтр Equal.

Тэг <Field> применяется для выборки из массива словарей. В атрибуте Name указывается название поля словаря, по которому будет происходить проверка условия.

Тэг <Index> применяется для выборки из одномерного массива или матрицы. Для матриц в атрибуте Value указывается индекс элемента строки, по которому будет проверка условия.

Тэг <DataType> задаёт тип элемента. По умолчанию используется тип StringDataType.

В зависимости от типа фильтра тэги <Value> или <DataType> могут отсутствовать. Например, в фильтрах IsNull, IsNotNull.

Типы фильтров

Equal

Сравнение значений на равенство

NotEqual

Сравнение значений на неравенство

Greater

Сравнение значений на "больше": элемент массива больше указанного значения

GreaterOrEqual

Сравнение значений на "больше или равно": элемент массива больше или равен указанному значению

Less

Сравнение значений на "меньше": элемент массива меньше указанного значения

LessOrEqual

Сравнение значений на "меньше или равно": элемент массива меньше или равен указанному значению

Contains

Сравнение значений на "содержит": элемент массива содержит указанное значение, при этом все значения преобразуется в строку

NotContains

Сравнение значений на "не содержит": элемент массива не содержит указанное значение, при этом все значения преобразуется в строку

In

Сравнение значений на "входит": элемент массива входит в указанный массив

NotIn

Сравнение значений на "не входит": элемент массива не входит в указанный массив

Overlap

Сравнение значений на "пересекается": массив из элемента исходного массива имеет общие элементы с указанным массивом

NotOverlap

Сравнение значений на "не пересекается": массив из элемента исходного массива не имеет общие элементы с указанным массивом

MatchSearch

Сравнение значений на "удовлетворяет поисковой строке". Поисковая строка может состоять из слов, разделенных пробелами и символами "+", "*" и "?":

  • пробел означает "ИЛИ";

  • "+" означает "И";

  • "*" означает любое количество любых символов;

  • "?" означает ровно один символ.

NotMatchSearch

Сравнение значений на "не удовлетворяет поисковой строке".

Поисковая строка может состоять из слов, разделенных пробелами и символами "+", "*" и "?":

  • пробел означает "ИЛИ";

  • "+" означает "И";

  • "*" означает любое количество любых символов;

  • "?" означает ровно один символ.

ContainedIn

Сравнение значений на "входит": элемент массива входит в указанное значение, при этом все значения преобразуется в строку

NotContainedIn

Сравнение значений на "не входит": элемент массива не входит в указанное значение, при этом все значения преобразуется в строку

IsNull

Сравнение на Null

IsNotNull

Сравнение на "не Null"

Nested

Составной фильтр. Для соединения вложенных фильтров доступны тэги <And>, <Or>, <Not>

Пример 1. Все элементы массива больше 10

Результат:

Пример 2. Все элементы массива больше 0 и меньше 20

Результат:

Пример 3. Все элементы матрицы во втором столбце меньше 0

Результат:

Пример 4. Первый столбец матрицы больше 4 и второй в диапазоне от -10 до 10

Результат:

Соединение

Join

Соединяет исходную матрицу с внешней матрицей по выбранным ключам. Аналог JOIN из SQL.

В тэге <Keys> указываются индексы элементов, по которым исходная и внешняя матрицы будут соединяться.

В атрибуте Index указывается положительное целочисленное значение, а в атрибуте Type задаётся один из типов.

В тэге <Result> указываются индексы элементов исходной и/или внешней матрицы, которые будут добавлены в результирующую матрицу.

Пример

Результат:

LeftJoin

Соединяет исходную матрицу с внешней матрицей по выбранным ключам, используя все элементы исходной матрицы. Аналог LEFT JOIN из SQL.

В тэге <Keys> указываются индексы элементов, по которым исходная и внешняя матрицы будут соединяться.

В атрибуте Index указывается положительное целочисленное значение, а в атрибуте Type задаётся один из типов.

В тэге <Result> указываются индексы элементов исходной и/или внешней матрицы, которые будут добавлены в результирующую матрицу.

Пример

Результат:

RightJoin

Соединяет исходную матрицу с внешней матрицей по выбранным ключам, используя все элементы внешней матрицы. Аналог RIGHT JOIN из SQL.

В тэге <Keys> указываются индексы элементов, по которым исходная и внешняя матрицы будут соединяться.

В атрибуте Index указывается положительное целочисленное значение, а в атрибуте Type задаётся один из типов.

В тэге <Result> указываются индексы элементов исходной и/или внешней матрицы, которые будут добавлены в результирующую матрицу.

Пример

Результат:

FullJoin

Соединяет исходную матрицу с внешней матрицей по выбранным ключам, используя все элементы исходной и внешней матриц. Аналог FULL JOIN из SQL.

В тэге <Keys> указываются индексы элементов, по которым исходная и внешняя матрицы будут соединяться.

В атрибуте Index указывается положительное целочисленное значение, а в атрибуте Type задаётся один из типов.

В тэге <Result> указываются индексы элементов исходной и/или внешней матрицы, которые будут добавлены в результирующую матрицу.

Пример

Результат:

Concat

Объединяет два массива с сохранением дубликатов.

При объединении элементов используются следующие правила:

  • Матрица объединяется с Матрицей В каждую строку матрицы из тэга <Concat> добавляются пустые элементы, чтобы длина строки соответствовала наибольшей длине строки матрицы, указанной в тэге <Source>, и полученная матрица объединяется с матрицей из тэга <Source>.

Пример

Результат:

  • Массив объединяется с Матрицей Массив из тэга <Concat> преобразуется в матрицу. В каждую строку новой матрицы добавляются пустые элементы, чтобы длина строки соответствовала наибольшей длине строки матрицы, указанной в тэге <Source>, и полученная матрица объединяется с матрицей из тэга <Source>.

Пример

Результат:

  • Скаляр объединяется с Матрицей Скаляр из тэга <Concat> преобразуется в матрицу. В единственную строку новой матрицы добавляются пустые элементы, чтобы длина строки соответствовала наибольшей длине строки матрицы, указанной в тэге <Source>, и полученная матрица объединяется с матрицей из тэга <Source>.

Пример

Результат:

  • Матрица объединяется с Массивом Матрица из тэга <Concat> преобразуется в массив, при этом берутся первые элементы каждой строки. Полученный массив объединяется с массивом из тэга <Source>.

Пример

Результат:

  • Массив объединяется с Массивом Массив из тэга <Concat> объединяется с массивом из тэга <Source>.

Пример

Результат:

  • Скаляр объединяется с Массивом Скаляр из тэга <Concat> преобразуется в массив и объединяется с массивом из тэга <Source>.

Пример

Результат:

  • Во всех случаях, когда в качестве значения тэга <Source> указан скаляр, будет генерироваться ошибка TypeMismatch.

Union

Объединяет два массива без сохранения дубликатов.

При объединении элементов используются следующие правила:

  • Матрица объединяется с Матрицей В каждую строку матрицы из тэга <Union> добавляются пустые элементы, чтобы длина строки соответствовала наибольшей длине строки матрицы, указанной в тэге <Source>, и полученная матрица объединяется с матрицей из тэга <Source>.

Пример

Результат:

  • Массив объединяется с Матрицей Массив из тэга <Union> преобразуется в матрицу. В каждую строку новой матрицы добавляются пустые элементы, чтобы длина строки соответствовала наибольшей длине строки матрицы, указанной в тэге <Source>, и полученная матрица объединяется с матрицей из тэга <Source>.

Пример

Результат:

  • Скаляр объединяется с Матрицей Скаляр из тэга <Union> преобразуется в матрицу. В единственную строку новой матрицы добавляются пустые элементы, чтобы длина строки соответствовала наибольшей длине строки матрицы, указанной в тэге <Source>, и полученная матрица объединяется с матрицей из тэга <Source>.

Пример

Результат:

  • Матрица объединяется с Массивом Матрица из тэга <Union> преобразуется в массив, при этом берутся первые элементы каждой строки. Полученный массив объединяется с массивом из тэга <Source>.

Пример

Результат:

  • Массив объединяется с Массивом Массив из тэга <Union> объединяется с массивом из тэга <Source>.

Пример

Результат:

  • Скаляр объединяется с Массивом Скаляр из тэга <Union> преобразуется в массив и объединяется с массивом из тэга <Source>.

Пример

Результат:

  • Во всех случаях, когда в качестве значения тэга <Source> указан скаляр, будет генерироваться ошибка TypeMismatch.

Group

Группирует элементы массива по указанным индексам. Если в исходном массиве отсутствует элемент с индексом, то вместо него используется значение Null.

Элементов <By> может быть неограниченное количество.

Пример

Результат:

Т.е. будет таблица из двух колонок и двух строк. В первой строке в первой колонке будет скалярный элемент со значением 1, а во второй колонке будет храниться таблица с двумя строками из источника. Во второй строке во второй колонке будет храниться таблица с одной строкой.

Zip

Соединяет строки двух массивов таким образом, что первый элемент исходного массива соединяется с первым элементом массива, второй со вторым и т.д.

Длина нового массива соответствует длине наименьшего из массивов.

При объединении элементов используются следующие правила:

  • Матрица объединяется с Матрицей В конец каждой строки исходной матрицы добавляются элементы из соответствующей строки матрицы, указанной в тэге <Zip>.

Пример

Результат:

  • Массив объединяется с Матрицей В конец каждой строки исходной матрицы добавляется соответствующий элемент массива, указанного в тэге <Zip>.

Пример

Результат:

  • Скаляр объединяется с Матрицей Скаляр из тэга <Zip> добавляется в конец первой строки исходной матрицы, остальные строки матрицы отбрасываются.

Пример

Результат:

  • Матрица объединяется с Массивом Матрица из тэга <Zip> преобразуется в массив, при этом берутся первые элементы каждой строки. Полученный массив объединяется с массивом из тэга <Source>, при этом элементы массивов образуют строки новой матрицы.

Пример

Результат:

  • Массив объединяется с Массивом Элемент массив из тэга <Zip> объединяется с соответствующим элементом массива из тэга <Source> так, что образуют строку новой матрицы.

Пример

Результат:

  • Скаляр объединяется с Массивом Скаляр из тэга <Zip> преобразуется в массив, и элементы полученного массива соединяются с элементами массива из тэга <Source>.

Пример

Результат:

  • Во всех случаях, когда в качестве значения тэга <Source> указан скаляр, будет генерироваться ошибка TypeMismatch.

Выборка из массива

ElementAt

Возвращает элемент массива по заданному индексу. Если индекс элемента отсутствует в массиве, то операция вернёт Null.

Пример 1. Поиск в матрице

Результат:

Пример 2. Поиск в массиве

Результат:

Field

Формирует массив из массива словарей. Из каждого словаря достает элемент по ключу, имя которого указано в атрибуте Name тэга <Field>. Если ключ отсутствует в словаре, то возвращается Null.

Пример

Результат:

First

Возвращает первый элемент массива или матрицы. Если массив пустой, то возвращается Null.

Пример 1. Первый элемент матрицы

Результат:

Пример 2. Первый элемент массива

Результат:

Last

Возвращает последний элемент массива или матрицы. Если массив пустой, то возвращается Null.

Пример 1. Последний элемент матрицы

Результат:

Пример 2. Последний элемент массива

Результат:

Skip

Пропускает указанное количество элементов и возвращает оставшиеся элементы.

Пример 1. Пропуск первых двух элементов в матрице

Результат:

Пример 2. Пропуск первых двух элементов в массиве

Результат:

Take

Возвращает указанное количество начальных элементов из исходного массива или матрицы.

Пример 1. Первые два элемента матрицы

Результат:

Пример 2. Первые два элемента массива

Результат:

Преобразование

DataTypeFormat

Преобразует элементы массива в строку с использованием формата указанного типа.

Если в тэге <Source> указана матрица, то будут браться первые элементы всех строк, а затем преобразовываться в строку заданного формата.

Пример

Результат:

DataTypeConvert

Приводит элементы массива к заданному типу.

Если в тэге <Source> указана матрица, то все ее элементы будут приводиться к заданному типу.

Пример

Результат:

Distinct

Возвращает уникальные элементы массива.

Для выборки строк в матрице можно указать индекс столбца, в котором будет проходить проверка уникальности:

Тэгов <On> может быть любое количество. Если тэги <On> отсутствуют, то выборка строк происходит по первому столбцу.

Если необходимо проверить все столбцы матрицы, то можно использовать необязательный атрибут AllIndices:

Если указаны и атрибут AllIndices и тэги <On>, то преимущество отдается атрибуту.

Пример 1. Уникальные элементы в массиве

Результат:

Пример 2. Уникальные элементы в матрице по всем столбцам

Результат:

Пример 3. Уникальные элементы в матрице по одному столбцу

Результат:

Select

Преобразует массив в другой массив с помощью селекторов.

В тэге <Items> указываются селекторы, которые последовательно применяются к каждому элементу исходного массива (для матриц элементом является строка матрицы). Из значений селекторов формируется новый массив или матрица.

Селекторы можно комбинировать друг с другом.

Поддерживаются селекторы следующих видов:

  • Index - Выбирает элемент из исходного массива или матрицы.

Пример

Результат:

  • Field - Выбор элемент из словаря.

Пример

Результат:

  • Value - Подставляет константное значение.

Пример

Результат:

  • Number - Подставляет порядковый номер элемента. В необязательном атрибуте Start можно задать начальное значение последовательности. По умолчанию используется 0.

Пример

Результат:

  • Expression - Вычисляет выражение на основе данных массива и дополнительных переменных. Тэгов <Item> может быть любое количество. В выражении <Expression> могут использоваться элементы исходного массива (указываются в квадратных скобках []) или дополнительные значения, перечисленные в тэге <Items> (указываются в фигурных скобках {}).

Пример

Результат:

  • Format - Форматирует элементы массива в строку. В строке формата элементы исходного массива доступны по индексу и указываются в фигурных скобках {}.

Пример

Результат:

  • Action - Элемент на основе вложенного массива. В тэге <Actions> указываются операции по работе с массивами аналогично тэгу <Array>. Исходным массивом для первой операции будет элемент массива с индексом из тэга <Index>.

Пример 1. Группировка строк по первому столбцу и расчет суммы вторых столбцов для каждой группы

Результат:

Пример 2. Расчет суммы элементов для каждого массива в массиве

Результат:

  • Substitution - Выбор значения из таблицы подстановки. В качестве таблицы подстановки должна быть матрица, состоящая из двух столбцов. В первом столбце должен быть ключ, по которому будет идти подстановка, а во втором - значение, которое будет использоваться при подстановке.

Пример

Результат:

SelectMany

Объединяет строки матрицы в одномерный массив.

Пример

Результат:

StringJoin

Форматирует входящее значение в строку.

Обязательный атрибут Separator используется для задания разделителя элементов массива или элементов строки матрицы.

Необязательный атрибут LineSeparator используется для задания разделителя строк в матрице. По умолчанию используется значение, указанное в атрибуте Separator.

Для задания "новой" строки используется сочетание символов: \r\n.

Пример 1. Массив массивов

Результат:

Пример 2. Матрица

Результат:

Пример 3. Массив

Результат:

StringSplit

Преобразует входное значение в строку, которую затем разделяет по заданному разделителю.

Обязательный атрибут Separator используется для задания разделителя, по которому строка будет разделена.

Для разбиения по "новой" строке используется сочетание символов: \r\n.

Пример

Результат:

ToDictionary

Преобразует массив в массив словарей.

Тэгов <Key> может быть произвольное количество.

В атрибуте Name указывается название ключа словаря.

В атрибуте Index указывается индекс элемента массива, который будет записан в словарь по ключу Name.

Пример 1. Массив преобразуется в словарь

Результат:

Пример 2. Матрица преобразуется в словарь

Результат:

ToTable

Преобразует массив или скалярное значение в матрицу.

Преобразование происходит по следующим правилам:

  • Массив преобразуется в матрицу Создается матрица с количеством строк равным количеству элементов входного массива, и каждый элемент массива пишется в отдельную строку матрицы.

Пример

Результат:

  • Скаляр преобразуется в матрицу Создается матрица из одной строки, в которую пишется входное скалярное значение.

Пример

Результат:

ToArray

Преобразует входное значение в массив, если значение скаляр, для массивов возвращает исходное значение.

Пример

Результат:

Сортировка

Order

Сортирует элементы массива и матрицы по указанным индексам.

Тэгов <By> может быть неограниченное количество.

В атрибуте Index указывается индекс элемента строки матрицы, по которому будет происходить сортировка. Если в исходном матрице отсутствует элемент с указанным индексом, то такое условие сортировки будет игнорироваться.

В необязательном атрибуте Type указывается тип сортировки: Asc для сортировки элементов по возрастанию (значение по умолчанию) или Desc для сортировки по убыванию.

Пример 1. Сортировка матрицы по одному столбцу

Результат:

Пример 2. Сортировка матрицы по двум столбцам

Результат:

Пример 3. Сортировка массива по убыванию

Результат:

Sort

Сортирует элементы одномерного массива.

Пример

Результат:

Last updated