knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
library(rolap)
Once we developed a star database in R, we would like to exploit it directly in R to develop multidimensional queries, but that is part of a future project. Currently we need to export the result to other formats to be able to use other OLAP query tools.
This document shows the possibilities offered by the package in this context: Export an object of the star_database
class to other formats. After presenting the object that we will use as an example and how to select it, a section is dedicated to each type of element obtained: dm
, list of tibble
objects, relational databases, xlsx and csv files, and geomultistar::multistar
object. Finally, it finish with the conclusions.
star_database
objectThe variable mrs_db
, obtained in the vignette titled Obtaining and transforming flat tables, vignette("v05-flat-table-op")
, contains an object of class star_database
that we will use in the examples.
class(mrs_db)
We can see a representation of the tables it contains using the draw_tables()
function, as shown below.
mrs_db |> draw_tables()
Strictly speaking, a star database is composed of a fact table and several associated dimension tables. A constellation is made up of several star databases that can share dimensions. In the rolap
package they are treated in a unified way under the star_database
class: It is used both to define star databases and to define constellations.
It is possible that we are interested in exporting only a star database of the constellation, or a subset of it (also a constellation). For this reason, in this situation, the first step before performing the export operation would be to select the star databases that interest us from the constellation. This operation can be carried out using the get_star_database()
function, where the names of the star databases are indicated. The names can be obtained using the get_fact_names()
function.
mrs_db |> get_fact_names()
Next, we select one of the star databases (also an object of class star_database
) and display its tables.
mrs_cause <- mrs_db |> get_star_database("mrs_cause") class(mrs_cause) mrs_cause |> draw_tables()
dm
class objectThe dm
package allows us to work in R with tables that correspond to others from relational databases, both to import and export them. It also allows them to be represented graphically (the graphical representations of the tables presented in the previous section have been made using the dm
package).
We can directly obtain an object of the dm
class from the tables of our star databases using the as_dm_class
() function.
mrs_dm <- mrs_db |> as_dm_class() class(mrs_dm) mrs_dm
tibble
objectsWe can generate a tibble
list from the component tables or from the flat tables obtained from them.
Using the as_tibble_list()
function, we get a tibble
list with the dimension and fact tables, as shown below.
tl <- mrs_db |> as_tibble_list() tl
Using the as_single_tibble_list()
function, we also get a tibble
list but in this case the fact and dimension tables have been merged to form a flat table as shown below.
tl <- mrs_db |> as_single_tibble_list() tl
To export the component tables to a relational database, we can use the as_rdb()
function. We have to pass it as a parameter a connection to the database, which we manage.
con <- DBI::dbConnect(RSQLite::SQLite()) mrs_db |> as_rdb(con) DBI::dbListTables(con) DBI::dbDisconnect(con)
Additionally, in the the vignette titled Deployment of star databases with incremental refresh, vignette("v50-deploy")
, it is described how to deploy a star database in a relational database so that it is automatically updated through periodic refresh operations.
Using the as_xlsx_file()
function, we get an xslx file where each table is stored in a sheet. We have to indicate the name of the file. For the example, we select a temporary file.
f <- mrs_db |> as_xlsx_file(file = tempfile()) f
As we can see, it is responsible for assigning the appropriate extension.
Using the as_csv_files()
function we can store each table in a different csv file, in the indicated folder, as shown below.
d <- mrs_db |> as_csv_files(dir = tempdir()) list.files(d, pattern = "*.csv")
geomultistar::multistar
objectUsing the as_multistar()
function we can get a geomultistar::multistar
object; with this object we can use the query and integration functions with geographic information offered by the geomultistar
package.
ms <- mrs_db |> as_multistar() class(ms)
This document presents the functions to export the tables that make up the star databases to other types of formats.
The objective of these functions is that the rolap
package can be used to transform the data and that other tools can be easily used to analyse it.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.