Как мне экспортировать SSRS-матрицу в CSV без потери структуры?

#csv #export #ssrs-2008 #ssrs-tablix

#csv #экспорт #ssrs-2008 #ssrs-tablix

Вопрос:

Рассмотрим следующий источник данных:

 declare @Test table (EmpId int, ProdId int, Sold int)
insert @Test (EmpId, ProdId, Sold) values (1, 1, 1)
insert @Test (EmpId, ProdId, Sold) values (1, 2, 2)
insert @Test (EmpId, ProdId, Sold) values (1, 3, 3)
insert @Test (EmpId, ProdId, Sold) values (1, 4, 4)
insert @Test (EmpId, ProdId, Sold) values (2, 1, 5)
insert @Test (EmpId, ProdId, Sold) values (2, 2, 6)
insert @Test (EmpId, ProdId, Sold) values (2, 3, 7)
insert @Test (EmpId, ProdId, Sold) values (2, 4, 8)
select * from @Test
  

Я создаю отчет Sql Server Reporting Services (SSRS) 2008 R2, который содержит единственную матрицу, настроенную следующим образом:

 |         | [ProdId]    |
| [EmpId] | [Sum(Sold)] |
  

Которая в режиме предварительного просмотра отображается следующим образом (как и ожидалось):

 |   | 1 | 2 | 3 | 4 |
| 1 | 1 | 2 | 3 | 4 |
| 2 | 5 | 6 | 7 | 8 |
  

Но когда я экспортирую ее в CSV, я получаю это:

 | EmpId | ProdId | Sold |
| 1     | 1      | 1    |
| 1     | 2      | 2    |
| 1     | 3      | 3    |
| 1     | 4      | 4    |
| 2     | 1      | 5    |
| 2     | 2      | 6    |
| 2     | 3      | 7    |
| 2     | 4      | 8    |
  

Другими словами, когда я экспортирую в CSV, я теряю макет матрицы, и каждая строка данных отображается в одной строке CSV. Обратите внимание, что отчет работает должным образом, если я экспортирую в Excel, поэтому пока эта проблема, похоже, ограничивается CSV. Я попытался реструктурировать матрицу как таблицу внутри таблицы, но это тоже не решает проблему. Есть предложения?

Ответ №1:

Это часть большого изменения в представлении отчетов между SSRS 2005 и SSRS 2008.

Единственные решения, которые я нашел, это:

  1. Экспортируйте в Excel, затем сохраните документ Excel в формате CSV — Это упрощает формат Excel и требует настройки группировок таким образом, чтобы каждая строка повторяла значения родительских групп. Однако с самого начала при экспорте в Excel возникают проблемы, например, если последовательные строки содержат одни и те же данные, программа визуализации иногда пропускает данные, что можно остановить, установив для параметра ‘DataElementOutput’ значение True для затронутых столбцов вместо ‘Auto’, что позволяет программе визуализации угадывать, какие поля вы считаете важными.

  2. Создайте свой отчет в виде плоской таблицы — Это в значительной степени сводит на нет смысл создания матрицы с самого начала, и это непросто, но вы можете определить столбцы заранее и можете сделать это динамически либо в запросе, либо используя множество выражений в значении текстового поля и установив динамическую видимость столбцов. Но для выполнения этого потенциально может потребоваться создание десятков или сотен столбцов для обработки потенциального появления определенного значения.

  3. Не обновляйте до 2008 — Если матричная отчетность и форматирование экспорта критически важны для бизнеса, на самом деле нет хорошего способа воссоздать функциональность в 2008 году, придерживаться SSRS 2005 года — единственный надежный способ получить старый рендеринг.

Ресурсы:

Ответ №2:

Вот обходной путь:

  • Переключите источник выходных данных CSV на дополнительный табликс, который показывает все данные как есть.
  • Отключите вывод исходной таблицы в CSV (Tablix > Properties > DataElementOutput > NoOutput).
  • Скройте дополнительный табликс, чтобы он не отображался. (Табликс> Щелкните правой кнопкой мыши> Свойства табликса> Видимость> Скрыть).

Таким образом, у вас есть полный контроль над отображением на экране и выводом CSV.

Ответ №3:

Это иногда работает в SSRS 2016:

  1. Выберите недостающие столбцы
  2. Откройте свойства
  3. Измените только данные — > DataElementOutput в качестве выходных данных
  4. Это зависит от того, где работает эта операция. Например, когда я делал это в Tablix, это не сработало, но это сработало, когда я сделал это в столбце. Вы могли бы попробовать создать таблицу, просто чтобы проверить, работает ли это лучше после этого. К сожалению, вы не можете создавать таблицы в нижних колонтитулах, где это было бы особенно полезно.