1. O FastCube
Generator raportów FastReport .NET spełnia prawie wszystkie wymagania użytkowników w zakresie tworzenia raportów. Prawie wszystkie, ale wciąż nie absolutnie wszystkie! Jeżeli chodzi o tabele krzyżowe, to robi się "ciasno". Obiekt Matrix jest przeznaczony tylko do wyprowadzania danych krzyżowych, ale nie do manipulacji z nimi. W takich przypadkach przydałby się system OLAP i taki system jest w FastReports - jest to FastCube .NET. Umożliwia on wyświetlanie kostek i plastrów danych w aplikacjach .Net. Szczególnie interesująca jest możliwość wykorzystania tych bibliotek w aplikacjach ASP .NET Core. Rozpatrzmy taki przypadek jako przykład.
2. Jak montować biblioteki
Na początku musimy złożyć biblioteki z kodu źródłowego. W tym celu należy skorzystać z rozwiązania FastCube.Core.sln. Po zakończeniu asemblacji otrzymamy dwa pakiety nuget: FastCube.Web.2020.2.1.nupkg oraz FastCube.Core.2020.2.1.nupkg. Umieść je w jednym katalogu, który będzie używany jako lokalne źródło pakietów.
3. Tworzenie projektu
Teraz możemy przejść do tworzenia projektu ASP .Net Core MVC.
4. Dodawanie bibliotek z Nuget
Najpierw dodajemy biblioteki FastCube Core do tworzonego projektu. W tym celu korzystamy z menedżera pakietów NuGet. Ponieważ pakiety z bibliotekami są umieszczane na dysku lokalnym, będziemy musieli dodać lokalne źródło pakietów. W tym celu klikamy na ikonę koła zębatego w prawym górnym rogu menedżera pakietów i dodajemy nowe źródło, które będzie odwoływało się do lokalnego katalogu z naszymi pakietami nupkg:
Teraz możesz wybrać dodane źródło pakietów z rozwijanej listy i zainstalować pakiety:
5. Dodanie do Startupu
Dodaliśmy biblioteki do projektu, teraz musimy je podłączyć. W tym celu w pliku Startup.cs w metodzie Configure() dodajemy kod:
app.UseFastCube();
6. Dodanie do kontrolera i widoku
Standardowa aplikacja oparta o szablon jest gotowa do uruchomienia i zawiera kontroler oraz widok. Możemy go użyć do wyświetlenia naszej kostki danych.
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(); }
Rozważmy tę technikę bardziej szczegółowo. Wykorzystamy tutaj obiekty Cube i Slice. Do wyświetlenia danych wykorzystamy obiekt WebGrid, który może odbierać dane z kostki lub wycinka za pośrednictwem odpowiednich dziedziczących obiektów WebCubeGrid i WebSliceGrid. W tym przypadku będziemy wyświetlać wycinek, a więc jest wybrany drugi obiekt.
Następnym krokiem jest pobranie istniejącej kostki z pliku. Zamiast korzystać z istniejących plików, można tworzyć kostki i plastry w kodzie aplikacji. Nasz przykład pokazuje pobranie pliku cube, który zawiera połączenie z danymi oraz odpowiedni wycinek. Można jednak zamiast kostki pobrać również plik plastra. W takim przypadku należy ustawić źródło danych kostki. Na przykład:
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));
Wróćmy teraz do naszej aplikacji. Jedynym krokiem, jaki nam pozostał, jest zorganizowanie wyświetlania tego obiektu. Zmień kod w pliku Index.cshtml:
@await ViewBag.WebGrid.Render()
To wszystko! Możemy uruchomić naszą aplikację internetową i obejrzeć wycinek danych:
Teraz możesz nie tylko przeglądać dane w tabeli krzyżowej, ale także nimi manipulować - dodawać, usuwać miary i fakty, układać grupy. Pomoże Ci to przy analizie danych.
Podsumowując, wykorzystanie kostek OLAP w aplikacji webowej jest nowością i potrzebą. Dziś nie trzeba kupować licencji na wersje desktopowe oprogramowania, jeśli można umożliwić analitykom pracę z danymi poprzez aplikację webową. Jak widać, wyświetlanie kostki lub wycinka w aplikacji webowej jest niezwykle proste, co jest kolejną zaletą.