MDX Parser for Java and .NET
General SQL Parser (GSP) parses MDX — Multidimensional Expressions for Analysis Services cubes — with a dedicated, hand-tuned grammar: full AST access, offline syntax validation, and column-level data lineage for cube queries. One commercial SDK, available for Java and .NET.
MDX queries that GSP parses
SELECT [Measures].[Sales Amount] ON COLUMNS,
[Product].[Category].Members ON ROWS
FROM [Adventure Works]; Parse it in Java
import gudusoft.gsqlparser.*;
TGSqlParser parser = new TGSqlParser(EDbVendor.dbvmdx);
parser.sqltext = sql; // the MDX query above
if (parser.parse() == 0) {
System.out.println(parser.sqlstatements.size() + " statement(s) parsed");
} else {
System.out.println(parser.getErrormessage());
} Parse it in C#
using gudusoft.gsqlparser;
TGSqlParser parser = new TGSqlParser(EDbVendor.dbvmdx);
parser.sqltext = sql; // the MDX query above
if (parser.parse() == 0)
{
Console.WriteLine(parser.sqlstatements.size() + " statement(s) parsed");
}
else
{
Console.WriteLine(parser.Errormessage);
} Same grammar, .NET-idiomatic API — properties instead of Java getters. See the C# quick start or the .NET SQL Parser SDK.
What GSP handles in MDX
- Cube SELECT with axis specifications (ON COLUMNS, ON ROWS, numbered axes), NON EMPTY, and HAVING
- WITH and CREATE [SESSION] MEMBER / CREATE SET calculated definitions
- CREATE SUBCUBE, SESSION CUBE, GLOBAL CUBE, REFRESH CUBE, and ALTER CUBE
- DRILLTHROUGH queries and cell / dimension PROPERTIES clauses
- MDX script statements — SCOPE ... END SCOPE, CALCULATE, FREEZE, IF ... THEN, CASE
- Bracketed multi-segment identifiers and member, tuple, and set expressions
Beyond parsing, the same AST powers table/column extraction, validation, formatting, and column-level lineage for MDX.
Recent MDX parser updates
- 2026-04-05 [MDX] Add data lineage support for MDX queries
Full history in the release notes.
MDX resources
- Java quick start — Maven/Gradle setup and first parse
- C# quick start — .NET setup and first parse
Common questions
Do I need a live MDX connection to validate queries?
No. GSP validates MDX syntax completely offline. You get error line and column positions, the offending token, and a hint — with no server, driver, or credentials involved.
Can I use the MDX parser from C# / .NET?
Yes. The .NET edition parses MDX with the same grammar, and the API is idiomatic .NET rather than a Java transliteration: where Java has parser.getErrormessage() and stmt.getResultColumnList(), C# has parser.Errormessage and stmt.ResultColumnList. The package id is gudusoft.gsqlparser, multi-targeting net10.0 and netstandard2.0, so .NET Framework 4.6.2+ hosts are covered too.
Can GSP extract column-level lineage from MDX queries?
Yes. The built-in DataFlowAnalyzer produces column-level lineage, impact analysis, and call graphs from MDX scripts — it is the engine behind Gudu SQLFlow and the lineage integrations for DataHub and OpenMetadata.