Excelgoodies logo +40 31 2299227

LEARN THIS HANDS ON

Power BI Reporting

. Live Online FILLING FAST
View all upcoming batches
Building Power BI Dashboards on SAGA and WinMentor Exports

Building Power BI Dashboards on SAGA and WinMentor Exports

Romanian accountants and analysts live in SAGA and WinMentor, but reporting usually stops at Excel tables and printed listings. This article shows how to turn those exports into a clean Power BI model with automated dashboards, focusing on typical accounting and management reporting scenarios. If you want to go deeper into shaping models and visuals for management, a dedicated course on practical Power BI reporting helps you systematise what we cover here.

1. What You Actually Get from SAGA and WinMentor

Before you build anything in Power BI, you need to understand the shape and quality of the exports you’re dealing with.

Typical SAGA exports

You’ll usually see:

  • Trial balance (balanță de verificare) – account, debit, credit, balance
  • Journal entries – document number, date, account debit/credit, amount, partner
  • Partners / clients / suppliers – codes, names, CUI, address
  • Invoices – document header and sometimes line-level detail

Common characteristics:

  • Exported as Excel or CSV
  • Often with merged header cells and subtotals
  • Romanian-specific formats (comma decimal separators, dd.mm.yyyy dates)

Typical WinMentor exports

WinMentor tends to offer:

  • Accounting journal with more detail (cost centers, projects)
  • Stock movements – item, warehouse, quantity, value
  • Sales / purchase registers – invoices, VAT breakdown
  • Master data – items, partners, accounts, cost centers

Common characteristics:

  • Multiple sheets per export
  • Columns sometimes repeated or renamed between reports
  • Extra header rows, sometimes in Romanian plus English

The goal in Power BI is always the same: turn these semi-structured exports into a star schema with clean fact tables (transactions) and dimension tables (master data).

2. Designing a Simple Model for Accounting Dashboards

Start with your reporting questions, then design the model backward.

Core facts

For most SAGA / WinMentor scenarios, you’ll want at least:

  • FactJournal – all accounting entries
  • FactInvoices – sales and purchase invoices
  • FactStockMovements (WinMentor) – for inventory reporting

Core dimensions

Link your facts to:

  • DimAccount – chart of accounts
  • DimPartner – clients and suppliers
  • DimDate – calendar table
  • DimCostCenter / DimProject – if you use analytical accounting

Example model layout

  • FactJournal → DimAccount (many-to-one, single direction)
  • FactJournal → DimPartner
  • FactJournal → DimDate (based on posting date)
  • FactInvoices → DimPartner
  • FactInvoices → DimDate (invoice date, due date)

If you keep this structure consistent across both SAGA and WinMentor, you can reuse measures and visuals with minimal changes.

3. Cleaning SAGA / WinMentor Exports with Power Query

Most of the work happens in Power Query. You want repeatable steps so you can refresh every month without manual fixes.

General cleaning pattern

For each exported file:

  1. Remove header noise
    • Delete top rows with titles and logos
    • Promote the real header row
  2. Fix data types
    • Set dates, numbers, text explicitly
  3. Standardise column names
    • Use English or consistent Romanian names
  4. Unpivot or split where needed
    • Turn wide tables into proper fact tables
  5. Remove subtotals and totals
    • Filter out rows with “TOTAL” or similar text

Example: Cleaning a SAGA trial balance

Suppose you have a SAGA export with the first 4 rows as titles and a proper header on row 5. A typical Power Query script might look like:

let
    Source = Excel.Workbook(File.Contents("C:\Data\SAGA\balanta.xlsx"), true),
    TB_Sheet = Source{[Name="Balanta"]}[Content],
    RemovedTopRows = Table.Skip(TB_Sheet, 4),
    PromotedHeaders = Table.PromoteHeaders(RemovedTopRows, [PromoteAllScalars=true]),
    RenamedColumns = Table.TransformColumnNames(
        PromotedHeaders,
        each Text.Replace(_, " ", "")
    ),
    FilterTotals = Table.SelectRows(RenamedColumns, each Text.StartsWith([Cont], "TOTAL") = false),
    ChangedTypes = Table.TransformColumnTypes(
        FilterTotals,
        {
            {"Cont", type text},
            {"D", type number},
            {"C", type number},
            {"Sold", type number}
        }
    )
in
    ChangedTypes

This gives you a clean trial balance table that can be used either as a fact table or to validate your journal-based reporting.

Example: Cleaning WinMentor journal

WinMentor journals often have multiple header rows and Romanian date formats:

let
    Source = Excel.Workbook(File.Contents("C:\Data\WinMentor\jurnal.xlsx"), true),
    JurnalSheet = Source{[Name="Jurnal"]}[Content],
    RemovedTopRows = Table.Skip(JurnalSheet, 6),
    PromotedHeaders = Table.PromoteHeaders(RemovedTopRows, [PromoteAllScalars=true]),
    ChangedTypes = Table.TransformColumnTypes(
        PromotedHeaders,
        {
            {"Data", type date},
            {"Document", type text},
            {"ContDebit", type text},
            {"ContCredit", type text},
            {"Suma", type number},
            {"Partener", type text},
            {"CentruCost", type text}
        }
    ),
    FilterEmptyRows = Table.SelectRows(ChangedTypes, each [Document] <> null)
in
    FilterEmptyRows

From there you can split debit and credit entries into a unified fact table.

4. Building a Unified FactJournal Table

Whether you use SAGA or WinMentor, a clean FactJournal is the backbone of accounting dashboards.

Structure of FactJournal

Recommended columns:

  • JournalID – unique row ID
  • DocumentNo
  • PostingDate
  • Account
  • PartnerCode
  • CostCenter
  • Project
  • DebitAmount
  • CreditAmount

Creating FactJournal in Power Query

If your export has separate debit and credit account columns, you can normalise them:

let
    Source = Excel.Workbook(File.Contents("C:\Data\WinMentor\jurnal.xlsx"), true),
    JurnalSheet = Source{[Name="Jurnal"]}[Content],
    Cleaned = // (use previous cleaning steps here),
    // Create debit rows
    DebitRows = Table.AddColumn(Cleaned, "EntryType", each "Debit"),
    DebitRenamed = Table.RenameColumns(DebitRows, {{"ContDebit", "Account"}}),
    DebitSelected = Table.SelectColumns(DebitRenamed, {"Document", "Data", "Account", "Partener", "CentruCost", "Suma", "EntryType"}),
    // Create credit rows
    CreditRows = Table.AddColumn(Cleaned, "EntryType", each "Credit"),
    CreditRenamed = Table.RenameColumns(CreditRows, {{"ContCredit", "Account"}}),
    CreditSelected = Table.SelectColumns(CreditRenamed, {"Document", "Data", "Account", "Partener", "CentruCost", "Suma", "EntryType"}),
    // Merge debit and credit
    Combined = Table.Combine({DebitSelected, CreditSelected}),
    // Add signed amount
    AddSignedAmount = Table.AddColumn(
        Combined,
        "Amount",
        each if [EntryType] = "Debit" then [Suma] else -[Suma],
        type number
    )
in
    AddSignedAmount

Now you have a single Amount column with sign, which makes DAX measures much simpler.

5. Essential DAX Measures for SAGA / WinMentor Dashboards

With a clean FactJournal, you can define reusable measures for most accounting views.

Basic measures

Total Amount :=
SUM ( FactJournal[Amount] )

Total Debit :=
SUM ( FactJournal[DebitAmount] )

Total Credit :=
SUM ( FactJournal[CreditAmount] )

Balance :=
[Total Debit] - [Total Credit]

Trial balance per account

Account Balance :=
CALCULATE ( [Balance], ALLEXCEPT ( DimAccount, DimAccount[Account] ) )

Use this in a matrix with DimAccount[Account] and DimAccount[AccountName] to replicate and extend the SAGA / WinMentor trial balance.

P&L and cost center reporting

If your chart of accounts follows a standard structure (e.g., 7xx for expenses, 7xx/6xx for P&L), you can slice by ranges:

Total Expenses :=
CALCULATE (
    [Total Amount],
    FILTER (
        DimAccount,
        LEFT ( DimAccount[Account], 1 ) IN { "6", "7" }
    )
)

Total Revenue :=
CALCULATE (
    [Total Amount],
    FILTER (
        DimAccount,
        LEFT ( DimAccount[Account], 1 ) = "7"
    )
)

Profit :=
[Total Revenue] - [Total Expenses]

For cost center dashboards, just add DimCostCenter to your visuals and reuse the same measures.

6. Handling Monthly Imports and File Management

The biggest pain point with SAGA and WinMentor is that data usually comes as monthly exports, not a live connection.

Practical file strategy

Use a simple folder-based approach:

  • One folder per system:
    • C:\Data\SAGA\Imports (monthly files)
    • C:\Data\WinMentor\Imports
  • File naming convention:
    • SAGA_Journal_2024-01.xlsx
    • WinMentor_Journal_2024-01.xlsx

Power Query: folder import pattern

Instead of connecting to single files, connect to a folder and append all monthly exports:

let
    Source = Folder.Files("C:\Data\SAGA\Imports"),
    Filtered = Table.SelectRows(Source, each Text.StartsWith([Name], "SAGA_Journal")),
    AddContent = Table.AddColumn(Filtered, "Data", each Excel.Workbook([Content], true)),
    ExpandSheets = Table.ExpandTableColumn(AddContent, "Data", {"Name", "Data"}, {"SheetName", "TableData"}),
    KeepJournalSheet = Table.SelectRows(ExpandSheets, each [SheetName] = "Jurnal"),
    ExpandTable = Table.ExpandTableColumn(KeepJournalSheet, "TableData", Table.ColumnNames(KeepJournalSheet{0}[TableData])),
    // Apply cleaning steps here (remove headers, set types, etc.)
    Cleaned = // ...
    AddPeriod = Table.AddColumn(Cleaned, "Period", each Date.FromText(Text.Middle([Name], 12, 7)))
in
    AddPeriod

Once this is set, adding a new monthly file to the folder automatically extends your data on refresh.

7. Visuals That Make Sense for Accounting Users

Accountants are used to printed reports, not fancy dashboards. Start with familiar layouts and then add interactivity.

Core visuals

  • Matrix for trial balance

    • Rows: DimAccount[Account], DimAccount[AccountName]
    • Values: Total Debit, Total Credit, Balance
    • Filters: DimDate[Year], DimDate[Month]
  • Matrix for P&L

    • Rows: P&L structure (you can build a separate DimPL table)
    • Values: Total Revenue, Total Expenses, Profit
    • Filters: DimCostCenter, DimProject
  • Bar charts for top clients

    • Axis: DimPartner[PartnerName]
    • Values: Total Revenue
    • Filters: period, region
  • Line chart for monthly evolution

    • Axis: DimDate[Month]
    • Values: Total Revenue, Total Expenses, Profit

Make it usable, not flashy

Focus on:

  • Clear labels (Romanian terms where needed)
  • Consistent colours for revenue, expenses, profit
  • Tooltips with document-level drill-through

Accountants will adopt dashboards faster if they can still reconcile numbers against SAGA / WinMentor reports, so keep a “control” page with a simple trial balance and journal listing.

8. A Practical Takeaway

If you do one thing after reading this, build a robust FactJournal table from your SAGA or WinMentor exports, with a signed Amount column and clean dimensions for accounts, partners, dates, and cost centers. Once that backbone is in place, every new dashboard—P&L, cost center, client profitability, VAT checks—becomes a matter of adding measures and visuals, not rebuilding data prep from scratch.

Power BI

New

Next Batches Now Live

Power BIPower BI
SQLSQL
Power AppsPower Apps
Power AutomatePower Automate
Microsoft FabricMicrosoft Fabrics
AzureAzure Data Engineering
Explore Dates & Reserve Your Spot → Reserve Your Spot →