MODLR
Product Updates

How to Build a Sales Cube - Step-by-Step Summary and Tips - MODLR - Visual Process Tutorial

25th Mar, 2026

Introduction

Loading structured operational data into a multi-dimensional cube allows businesses to analyse performance from multiple perspectives such as product, department, scenario, and time.

This visual process tutorial demonstrates how to create a cube structure, dynamically build dimension elements from a CSV file, and load measure values for analysis. By following a structured workflow, users can automate data preparation, improve accuracy, and enable faster reporting and planning.

Step-by-Step Process

Step 1 — Review the Source CSV Structure

What you will learn: In this step, you will learn how to translate flat transactional data into a dimensional model. Understanding the source data in  this way helps us ensure that the cube structure we create and the loading process are designed correctly.

What to do: You will examine the columns in the CSV file to understand how the cube should be designed. Identify which fields represent  dimensions  (for example product, department, scenario) and which represent  measures  (such as units, price, cost, discount). 

Step 2 — Create a Structured Visual Workflow Using Sequence Nodes

What you will learn: In this step you learn how to organise low-code data workflows into logical execution steps. It will improve readability, maintenance and ease of troubleshooting of the complex automation process that you will be creating. 

You will add sequence nodes to split the process into clear stages such as  cube creation  and  data loading

Step 3 — Create Core Dimensions and Measure Dimension

What you learn: You will learn why separating measures into a dedicated dimension improves both cube design and performance. This helps you build a scalable data model that will support flexible reporting and scenario analysis you wish to perform. 

What to do: You will use dimension creation nodes to define structural dimensions such as  Product, Department, Scenario, and a dedicated Sales Measures dimension.

Step 4 — Define Measure Elements

What you learn: This step shows you how structured measure definitions help support consistent financial and operational reporting. Defining measures sets the foundation for you to do multi-metric analysis within a single cube.

What to do:  You will  create individual metrics such as  Units, Price, Cost, and Discount  inside the measure dimension.

Step 5 — Create the Cube and Assign Dimensions

What you learn:  In this step you learn how cube dimensionality determines your analytical flexibility. It gives you a central analytical model that is ready to receive data.

What to do: You will create the cube (for example “Sales”) and specify its dimensional axes such as  Time, Scenario, Department, Product, and Measures

Step 6 — Read CSV Data Row by Row

What you learn: This step teaches you how event-driven row processing supports scalable data pipelines in your data models. This makes it possible for you to load data into your cube automatically again and again. And no manual upload of files will be needed. 

What to do:  You will add a CSV reader node to load the file and trigger processing for each record.

Step 7 — Dynamically Build Dimension Elements from CSV Values

What you learn:  This step shows how to build a data model that can update itself. Once it is completed, new products, departments, or other items will be created automatically as new data is added.

What to do: You will use dimension builder nodes to generate hierarchy elements such as:

  • Product grouped by brand
  • Scenario elements under a default hierarchy; and 
  • Departments under an “All Departments” parent

In other words, you will use  dimension builder nodes  to automatically create organised groups such as products under brands, scenarios in a standard list. The departments will come under one main “All Departments” group.

Step 8 — Transform Date Formats to Match Time Dimension

What you learn: This step shows you why it is important to keep your data in a consistent format. Doing so helps avoid errors and makes sure numbers are correctly grouped according to time period.

What you do: You will use a transform or map node to convert CSV date formats into the cube’s required time format.

Step 9 — Insert Measure Values into the Cube

What you learn: This step shows how dimension keys decide exactly where each data value belongs. It helps you build a complete dataset that is ready for reporting.

What you do: You will use cube update nodes to write values such as Units, Price, Cost, and Discount to the correct dimensional intersection.

Step 10 — Validate Data Using Work-views or Dashboards

What you learn: This step shows you the best practices for data validation and testing of analytical models. It helps give immediate assurance that your automation worked as expected.

What you do: You will create a work-view to confirm that product hierarchies, measures, and time periods display correctly.

Practical Tips for Creating and Loading Data Cubes

Use these practical tips to ensure success when building a visual process for creating and loading a data cube:

  • Design your cube structure to answer business questions, not just based on data fields. Think about how users will analyse performance, and what they will want to know. For example, they will want to find out profitability by product or as for scenario comparisons.
  • Use clear naming conventions for all dimensions and measures. This will help improve usability for both report builders and business users.
  • Group related workflow steps into sequences. Doing so helps make future enhancements and troubleshooting very much easier.
  • Automate your hierarchy building wherever possible. Dynamic element creation will help reduce manual maintenance as and when new products or departments emerge.
  • Standardise date and text formats early in the pipeline. Doing so prevents aggregation errors and any inconsistencies in your reporting. 
  • Always validate your new process with a simple test dataset before running large loads. This will help you find out any logic issues quickly and reduce processing time.
  • Consider adding error-handling or logging nodes. This will support enterprise-grade automation and governance.

Conclusion

Creating a cube and loading CSV data using a visual process gives you a powerful foundation for integrated planning, reporting, and scenario analysis.

By structuring your visual process workflow into clear stages—of cube design, creation of hierarchies, data transformation, and value insertion—you will be able to automate complex data preparation tasks with confidence.

This approach improves both data accuracy and analytical depth. And it enables your organisation to respond faster as business conditions shift and change. All that becomes possible because you can turn raw transactional data into meaningful, multi-dimensional insights using MODLR visual processes. 

Want to learn more?

  • Watch Other Visual Process Videos from MODLR
  • Check out our Related Q&A 

    Visual Process and Related FAQS

    MODLR’s visual processes make it easy for you to automate your data tasks such as building cubes, loading CSV files, and preparing data for reporting. By using simple step-by-step workflows, you will be able to quickly create structured analytical models, automatically update your dimensions while ensuring that your data is ready for accurate analysis and decision-making.

    What is a visual process in MODLR?

    A visual process is a simple, step-by-step workflow that enables you to automate data tasks such as creating data cubes, loading CSV files into them, or transforming data. Visual processes use connected nodes instead of complex coding which makes them easier to create, understand and maintain.

    Why should I review my CSV file first before building the process?

    Looking at your CSV first helps you understand how your data cube should be structured. You can quickly identify which fields will become dimensions and which will become measures, which saves time and avoids mistakes later.

    Why do we use dimension builder nodes?

    Dimension builder nodes help create hierarchy elements automatically from your data. This means new products, departments, or scenarios can be added without manual updates whenever new data is loaded.

    Why is it important to convert date formats during data loading?

    Dates in source files often use different formats from your cube’s time dimension. Converting them ensures the data matches correctly, so reports group numbers accurately by month or year.

    How do cube update nodes work in a visual process?

    Cube update nodes take values from each row in your file and place them into the correct location in the cube. They use dimension keys like time, product, and department to make sure every value is stored in the right context.

    How can I check if the data load worked properly?

    After running the process, you can open a workview or dashboard to review the cube. If you see the expected hierarchies and measures displayed correctly, it confirms that the data was loaded successfully.

    What are data cubes?

    Data cubes are structured data models that store information across multiple dimensions like time, product, region, or scenario. Storing data in cubes let you analyse it from different angles instead of looking at data in a simple list. This makes it easier to spot trends, and understand performance and relationships.

    For details, check out our article: What Are Data Cubes? Why MODLR Uses Them Instead of Tables

    Why does MODLR use data cubes instead of tables?

    MODLR uses data cubes rather than tables because cubes are better suited for planning, forecasting, and multi-dimensional analysis. Cubes support faster calculations, flexible reporting, and easier scenario comparisons. These can be difficult to achieve using the traditional flat tables alone.

    For details, check out our article: What Are Data Cubes? Why MODLR Uses Them Instead of Tables

    What Is Inside-Out Reporting in MODLR?

    MODLR’s Inside-out Reporting is a way of creating reports directly from a structured data model compared to the traditional way of building reports separately in spreadsheets or business intelligence (BI) tools. With this approach, the numbers always come from a single trusted source, which makes analysis more consistent, flexible, and reliable for both planning and decision-making.

  • Video Transcript of How to Build a Sales Cube - A MODLR Visual Process Tutorial

    Video Transcript

    In this tutorial, we walk you through how to create a visual process that builds a sales cube and loads data into it from a CSV file. We will create the cube structure first and then build dimensions from the CSV data, and finally insert the numeric values into the cube.

    Before building the process, it is useful to review the CSV file that will be loaded into the cube. A preview of the file shows that each row represents a sales record with several attributes. These include fields such as SKU, product name, brand, department, scenario, units, and other related columns. By looking at the structure of the source data first, we can decide how the cube should be organised.

    For example, the Department column will become one cube dimension, while the scenario column will form another. Product-related fields such as SKU and product name can be used to construct the product dimension. Numeric columns including units, price, cost, and discount will become the measures that will be stored within the cube. Understanding the source data before building the cube helps us ensure that both the cube structure and the loading process are designed correctly.

    To begin building the visual process, we first add a sequence node. This allows us to split the process into multiple stages that run in order and keeps the visual process easier to read and maintain. 

    In this example, we use one step to create the cube structure and another step to load the CSV data.

    In the first step, we build the cube structure. We start by adding a dimension to create multiple node  to define the core dimensions that structure our cube. Based on the CSV data we looked at earlier we create the dimensions for Product, Department and Scenario.

    Next, we add a dimension create node to define a dedicated measure dimension. We name this dimension Sales Measures and set the type to measure. It becomes a dedicated dimension that can store numeric values.

    After creating the measure dimension, we add a dimension builder node and name it Create Measure Elements. This step defines the individual measure elements that will exist inside the sales measures dimension. 

    Inside the dimension instructions editor, we define the elements  under the default hierarchy. Here each element represents a metric that will later be stored in the cube. For example, we can use the following metrics from our CSV: Units, Price, Cost price, and Discount.

    These elements will later be populated once we insert the values from the CSV data. 

    With the dimensions in place, we add a cube create node to define the cube itself and specify which dimensions make up the cube structure. 

    We will name the cube as Sales. Next we add the dimensions that will form its axes. These include Time, Scenario, Department, Product, and Sales Measures. Once this node runs, the Sales cube will be created and ready to receive data from the CSV file in the next step of the process. 

    After the cube structure has been created, we move on to loading data from the CSV file. To do so, we add a CSV reader node in the second stage of the sequence. 

    In this example, we select the sales data.csv file. Once the CSV reader is configured, it will  read the file and trigger the process row-level output (once) for each row in the CSV. 

    Next we connect the process row execution port from the CSV reader into another sequence node to keep the next two steps organised. 

    Before inserting values into the cube, it is necessary to ensure that all dimension elements referenced in the CSV actually exist. To achieve this, we add a dimension builder node.

    Let us first focus on the Product dimension. Within the instructions editor, we define the strucructure of the product hiuerarchy.. Here we can dynamically reference values from the CSV column names. 

    In this example, we create a hierarchy called All Products by Brand. Brand elements are created under an All Brands parent. Products are ground under their respective brand and each product element is created using the values from the SKU column. Each product element is also given a readable alias using the product name column. We can also define a default hierarchy where all products appear under a single All Products element.

    Next, we add another dimension builder node for our Scenario dimension. Inside the dimension instructions editor, we define a very  simple structure. All scenario elements are created under the default hierarchy using values from the scenario column in the CSV.

    Next we add another dimension builder node to make the Department dimension. Inside the dimension instructions editor, we define another simple hierarchy, for departments,. Under the default hierarchy we create a parent element named All Departments and generate department elements beneath it using values from the department column in the CSV. 

    Once the dimensions are prepared, we need to insert data into the sales cube. 

    However, the CSV contains a date column formatted as day, month, and year, while the elements in our time dimension use a different format. To align the data and make sure the data matches the existing time dimension elements, we can convert the CSV date into the correct format using a map transform node. Inside the  modification section of the transform row node, we create a transformation for  the date field using a modeler formula. This formula reads the date value from the CSV row, interprets it correctly, using the original day, month, year format used by our time dimension and convert it into the year-month format required by our time dimension.

    With the row data prepared, we can begin inserting values into the cube by adding a cube update node. The first step is to insert the Units measure into the cube. For the value key we enter units. This tells the node which column from the row should be written into the cube. We then set the measure element to units, which determines which elements in the Sales Measures Dimension will store the value. 

    Next, we need to define the element keys that determine the exact location where the value will be stored in the cube. 

    The transformed date value is used for the Time dimension; the scenario column for the Scenario dimension; the department column for the Department dimension; and the SKU column for the Product dimension. Together, these keys uniquely identify and define the intersection at which the measure value will be written.

    Finally we repeat the same pattern for the remaining measures such as Price, Cost, and Discount. In each case, only the value key and target measure element change.

    Once all nodes are connected, the process is ready to run. When executed, the workflow reads each row from the CSV file, creates any missing dimension elements, converts the date into the correct time format, and inserts the measure values into the Sales cube.

    After the process completes, we create a workview to confirm that the data has been successfully loaded into the cube. In the workview, we can see the Sales cube displayed with rows showing the product hierarchy grouped by brand and product. The columns display the sales measures, including Units, Price, Cost, and Discount. This confirms that the CSV data has been correctly loaded into the cube and is now available for analysis and reporting.

  • To explore this feature, you can book a demo today.

Get the latest updates and news from MODLR

By submitting this form you agree to MODLR’s terms & conditions and privacy policy .