Транспонирование таблицы

0 голосов
alexmokrin в категории Как сделать...

Можно ли средствами Loginom произвести транспонирование таблицы, чтобы строки стали столбцами, а столбцы - строками? Пример на рисунке ниже.

Пробовал "свёртку столбцов" и "кросс-таблицу", но не получилось. Скорее всего делал что-то не так. Спасибо!

Ответы: 2 шт.

0 голосов
Евгений Алябьев

Скорее всего, простого способа нет, и без кодирования не обойтись. Далее приведу пример, как это можно сделать с помощью компонента JavaScript (Программирование).


В мастере JavaScript в Настройках столбцов нужно указать, что выходные поля будут сформированы кодом.

И добавить сам код:

import { InputTable, OutputTable, DataType } from "builtIn/Data";

let names = []; // Массив имен полей (должны быть правильными идентификаторами)
let labels = []; // Массив меток, наше описание из первого поля/столбца
let types = []; // Массив типов полей (может быть целым, строкой, переменным типом и т.п.)

// Генерируем параметры заголовков таблицы на основе первого поля, то есть col = 0 (здесь первое поле имеет имя "COL1")
for(let line = 0; line < InputTable.RowCount; line++) {
    names.push(`Col${line + 1}`); // Создаем имя в виде правильного идентификатора
    labels.push(InputTable.Columns.COL1.Get(line)); // Метку берем из исходного набора
    types.push(DataType.Variant); // Используем переменный тип
}

// Создаем поля таблицы
for(let col = 0; col < names.length; col++) {
    OutputTable.AddColumn({Name: names[col], DisplayName: labels[col], DataType: types[col]});
}

// Заполняем строки таблицы. Начинаем с 1, так как в col = 0 у нас заголовки
for(let col = 1; col < InputTable.ColumnCount; col++) {
    OutputTable.Append(); // Добавляем очередную строку
    const column = InputTable.Columns[col];
    for(let line = 0; line < InputTable.RowCount; line++) {
    const val = column.Get(line); // Очередное значение
        OutputTable.Set(line, val); // Добавляем
    }
}

+4 голосов
AlexeyS

 2 трансформации: 

свертка столбцов (информационные: Показатели Транспонируемые: 2017,2018,2019)

кросс-таблица (колонки: Показатели, строки: Метки, факты: Значения)

...