Как использовать FastCube .NET в приложении ASP .NET Core

06.05.2021

FastCube .NET

1. О FastCube

Генератор отчетов FastReport .NET покрывает почти все потребности пользователей в отчетности. Но все же не всё! Когда дело доходит до кросс-таблиц, становится “тесно”. Объект Матрица предназначен лишь для вывода перекрестных данных, но не для манипуляции с ними. В этом бы случае очень пригодилась бы OLAP система и такая система в FastReports есть - FastCube .NET. Она позволяет выводить кубы данных и срезы в .Net приложениях. Особенно интересна возможность использования этих библиотек в ASP .NET Core приложениях. Давайте рассмотрим такой случай на примере.

2. Как собрать библиотеки

В самом начале нам нужно собрать библиотеки из исходного кода. Для этого используйте решение FastCube.Core.sln. В результате сборки этого решения вы получите два nuget пакета: FastCube.Web.2020.2.1.nupkg и FastCube.Core.2020.2.1.nupkg. Поместите их в одну папку, которую мы будем использовать в качестве локального источника пакетов.

3. Создать проект

Теперь мы можем перейти к созданию проекта ASP .Net Core MVC.

4. Добавить библиотеки из Nuget

Первым делом добавим библиотеки FastCube Core в созданный проект. Для этого воспользуемся менеджером пакетов NuGet. Так как пакеты библиотек расположены на локальном диске, то нам потребуется добавить локальный источник пакетов. Для этого нажмите на значок с шестеренкой в правом верхнем углу диспетчера пакетов и добавьте новый источник, который будет ссылаться на локальную папку с вашими пакетами nupkg:

Добавляем новый источник

Теперь можно выбрать добавленный источник пакетов в выпадающем списке и установить пакеты:

Устанавливаем пакеты

5. Добавить в Startup

Мы добавили библиотеки в проект, теперь нужно их подключить. Для этого в файле Startup.cs в метод Configure() добавим код:

app.UseFastCube();

6. Добавить в контроллер и представление

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

HomeController:
 public IActionResult Index()
 {
 Cube cube = new Cube();
 Slice slice = new Slice()
 {
 Cube = cube
 };
 
 WebGrid grid;
 grid = new WebSliceGrid()
 {
 Slice = slice
 };
 
 cube.SourceType = SourceType.File;
 cube.Load(Path.Combine("C:\\Users\\FR\\Downloads\\fastcube-net-master\\Demos\\Data\\", "Cubes", "calculated_measures.mdc"));
 ViewBag.WebGrid = grid;
 return View();
 }

Рассмотрим этот метод подробнее. Мы используем здесь объекты куба и среза - Cube и Slice. Для отображения данных используется объект WebGrid, который может принимать данные от куба или от среза с помощью соответствующих наследуемых объектов WebCubeGrid и WebSliceGrid. В нашем случае мы будем выводить срез, поэтому выбрали второй объект.

Следующим шагом мы должны загрузить существующий куб из файла. При желании вместо использования готовых файлов вы можете создавать кубы и срезы в коде приложения. В нашем примере рассмотрена загрузка файла куба, который содержит в себе подключение к данным и нужный срез. Однако, вы можете загружать и файл среза вместо всего куба. Но в этом случае придется задать источник данных куба. Например:

cube.Active = false;
 cube.SourceType = SourceType.DataSource;
 cube.DataSource = new DataSource();
 cube.DataSource.DataSet = new DBDataSet();
 SqliteConnection connection = new SqliteConnection($@"Data source={Path.Combine(dataFolder, "demo.sqlite")}");
 SqliteCommand cmdItems = new SqliteCommand(@" SELECT  items.OrderNo, items.PartNo, items.Qty, orders.CustNo, orders.EmpNo, orders.SaleDate FROM   items LEFT OUTER JOIN orders ON (items.OrderNo = orders.OrderNo)", connection);
 ((DBDataSet)cube.DataSource.DataSet).DbCommand = cmdItems;
 cube.Active = true;
 slice.Load(Path.Combine(dataFolder, "Cubes", fileName));

И всё же вернемся к нашему приложению. Осталось лишь организовать отображение этого объекта. Изменим код в файле Index.cshtml:

 @await ViewBag.WebGrid.Render()

Вот и всё! Можно запустить наше веб-приложение и увидеть срез данных:

Срез данных

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

Подведем итог. Использование OLAP кубов в веб-приложениях - это достаточно ново и востребовано. На данный момент нет необходимости в покупке лицензий для десктопных версий программы, если вы можете дать аналитикам работать с данными через веб-приложение. Как видите, реализация отображения куба или среза в веб-приложении крайне проста - это еще один плюс.

4 октября 2023

Как из приложения ASP.NET Core сформировать отчет с использованием FastReport.Core.Skia

Рассказываем как сформировать отчет на Windows и Linux с использованием FastReport.Core.Skia и приватного NuGet сервера.
22 марта 2023

Создание PDF отчета в JetBrains Rider (C#) на «Альт Рабочая станция К» 10

В этой статье мы взглянем на платформу .NET в «Альт Рабочая станция К» 10 и создадим отчет, который можно экспортировать в PDF.
14 февраля 2023

Как настроить веб-сервер Apache2 для FastReport .NET

Запускаем веб-сервер Apache2 в операционной системе Linux для FastReport .NET и .NET 5 с помощью нескольких простых команд.