Essbase.Cubes

D

T

The M Code Behind the Power Query M function Essbase.Cubes

The Essbase.Cubes function allows you to connect to Essbase, a multidimensional database management system. With this function, you can access data from Essbase cubes and bring it into Power Query. But what’s the M code behind the Essbase.Cubes function? Let’s take a closer look.

Understanding the Essbase.Cubes Function

Before diving into the M code behind the Essbase.Cubes function, it’s important to understand what the function does. The Essbase.Cubes function returns a table of cube metadata for a given Essbase server. The metadata includes information about the cubes available on the server, such as the name of the cube, the number of dimensions, and the size of the cube.

The function takes two arguments: the Essbase server name and the optional Essbase login credentials. Here’s an example of the Essbase.Cubes function in action:


let

Source = Essbase.Cubes(“EssbaseServerName”),

#”Filtered Rows” = Table.SelectRows(Source, each ([Cube Name] = “Sample”))

in

#”Filtered Rows”


In this example, we're using the Essbase.Cubes function to connect to an Essbase server named "EssbaseServerName" and retrieve metadata for all cubes on that server. We then filter the results to only include the cube named "Sample".

Breaking Down the M Code

Now that we understand what the Essbase.Cubes function does, let's take a closer look at the M code behind it. Here's the M code for the Essbase.Cubes function:


let

EssbaseCubes = (EssbaseServerName as text, optional EssbaseCredentials as record) =>

let

EssbaseXmlaEndpoint = “http://” & EssbaseServerName & “/aps/XMLA”,

EssbaseSessionHeader = if EssbaseCredentials = null then [] else [#”X-Essbase-Auth”=EssbaseCredentials[Token]],

EssbaseCubesRequest = Xml.Tables(Web.Contents(EssbaseXmlaEndpoint, [Headers=EssbaseSessionHeader, Query=[#”COMMAND”=”MDSCHEMA_CUBES”]]), “Cube”),

EssbaseCubesTable = Table.FromList(EssbaseCubesRequest, Splitter.SplitByNothing(), null, null, ExtraValues.Error),

EssbaseCubesExpanded = Table.ExpandRecordColumn(EssbaseCubesTable, “Column1”, {“Name”, “CATALOG_NAME”, “DESCRIPTION”, “BASE_CUBE_NAME”, “LAST_SCHEMA_UPDATE”, “CREATED_ON”, “LAST_DATA_UPDATE”, “IS_DRILLTHROUGH_ENABLED”, “IS_LINKED_CUBE”, “IS_VIRTUAL_CUBE”, “CUBE_CAPTION”, “DIMENSION_COUNT”, “MEASURE_COUNT”, “IS_WRITE_ENABLED”, “IS_RESTRICTED”, “IS_SECURED”, “IS_PARENT_CHILD_ENABLED”, “IS_BALANCED”, “IS_CALCULATED”, “IS_TRANSPOSED”, “IS_SQL_ENABLED”, “IS_SQL_READ_ONLY”, “IS_SQL_PUSH_ENABLED”, “IS_SQL_READ_WRITE”, “IS_ASO”, “IS_BASIC”, “IS_CUSTOM”, “IS_NON_EMPTY_BY_DEFAULT”, “IS_READ_ONLY”, “IS_SINGLE_CELLED”, “IS_SUPPRESS_EMPTY”, “IS_HIDDEN”, “IS_VISUAL_TOTALS”, “IS_MINIMIZE_NON_EMPTY”, “IS_OPTIMIZED_FORM”, “DIMENSION_UNIQUE_NAME”, “DIMENSION_IS_VISIBLE”, “DIMENSION_CARDINALITY”, “DIMENSION_DEFAULT_MEMBER”, “DIMENSION_DESCRIPTION”, “DIMENSION_IS_PARENT”],

{“Name”, “CATALOG_NAME”, “DESCRIPTION”, “BASE_CUBE_NAME”, “LAST_SCHEMA_UPDATE”, “CREATED_ON”, “LAST_DATA_UPDATE”, “IS_DRILLTHROUGH_ENABLED”, “IS_LINKED_CUBE”, “IS_VIRTUAL_CUBE”, “CUBE_CAPTION”, “DIMENSION_COUNT”, “MEASURE_COUNT”, “IS_WRITE_ENABLED”, “IS_RESTRICTED”, “IS_SECURED”, “IS_PARENT_CHILD_ENABLED”, “IS_BALANCED”, “IS_CALCULATED”, “IS_TRANSPOSED”, “IS_SQL_ENABLED”, “IS_SQL_READ_ONLY”, “IS_SQL_PUSH_ENABLED”, “IS_SQL_READ_WRITE”, “IS_ASO”, “IS_BASIC”, “IS_CUSTOM”, “IS_NON_EMPTY_BY_DEFAULT”, “IS_READ_ONLY”, “IS_SINGLE_CELLED”, “IS_SUPPRESS_EMPTY”, “IS_HIDDEN”, “IS_VISUAL_TOTALS”, “IS_MINIMIZE_NON_EMPTY”, “IS_OPTIMIZED_FORM”, “DIMENSION_UNIQUE_NAME”, “DIMENSION_IS_VISIBLE”, “DIMENSION_CARDINALITY”, “DIMENSION_DEFAULT_MEMBER”, “DIMENSION_DESCRIPTION”, “DIMENSION_IS_PARENT”})

in

EssbaseCubesExpanded

in

EssbaseCubes


At a high level, the M code for the Essbase.Cubes function is defining a function called "EssbaseCubes" that takes two arguments: the Essbase server name and optional login credentials. The function then uses these arguments to build a request to the Essbase XMLA endpoint, which returns metadata about the cubes on the server.

The metadata is returned as an XML table, which is then converted into a Power Query table using the "Table.FromList" function. Finally, the table is expanded into its constituent columns using the "Table.ExpandRecordColumn" function.

The Essbase.Cubes function is a powerful M function that allows you to connect to Essbase and retrieve metadata about the cubes on a server. Understanding the M code behind the function can help you customize its behavior and build more complex queries in Power Query.

Power Query and M Training Courses by G Com Solutions (0800 998 9248)

Upcoming Courses

Contact Us

    Subject

    Your Name (required)

    Company/Organisation

    Email (required)

    Telephone

    Training Course(s)

    Your Message

    Upload Example Document(s) (Zip multiple files)