Comments (5)
Given that MDX and DAX are widely adopted in the MS ecosystem, we can just throw a parser them and convert them to Segmentation queries if possible. olap4j doesn't seem to be maintained but it seems to be the only alternative, I will check olap4j and see if I can get it working.
The XMLA server will implement the following endpoints:
https://docs.microsoft.com/en-us/analysis-services/xmla/xml-elements-methods-discover?view=asallproducts-allversions
https://docs.microsoft.com/en-us/analysis-services/xmla/xml-elements-methods-execute?view=asallproducts-allversions
Samples:
https://github.com/pentaho/mondrian/blob/d94651d21bc6f4047d297c0ebe91b0eda43b2bbd/mondrian/src/main/java/mondrian/tui/XmlaSupport.java
https://github.com/pentaho/mondrian/blob/d94651d21bc6f4047d297c0ebe91b0eda43b2bbd/mondrian/src/main/java/mondrian/xmla/impl/DefaultXmlaServlet.java
https://github.com/pentaho/mondrian/tree/d94651d21bc6f4047d297c0ebe91b0eda43b2bbd/mondrian/src/main/java/mondrian/xmla/impl
API:
https://docs.microsoft.com/en-us/analysis-services/xmla/xml-for-analysis-xmla-reference?view=power-bi-premium-current&preserve-view=true
DAX Parser: https://github.com/microsoft/powerquery-parser
MDX for Java: https://github.com/olap4j/olap4j and https://github.com/olap4j/olap4j-xmlaserver
MDX Grammer: https://github.com/antlr/grammars-v4/blob/master/mdx/mdx.g4
from metriql.
Once we build the XMLA server, we will parse MDX queries and generate Segmentation Query and generate the SQL for the underlying database. I'm dropping a SO question that can help us understand the language:
https://stackoverflow.com/questions/56788153/convert-mdx-to-sql-statement
Edit: Later I figured out that it's not that easy to build an MDX parser as it's a full language similar to SQL. See the current approach below.
from metriql.
Here is an alternative method: trinodb/trino#6886
If we use TOM in addition to ODBC, it should also work: https://www.powerbidevcamp.net/articles/programming-datasets-with-TOM/
Also see: openlookeng/hetu-odbc-driver#1
https://dax.tips/2020/07/30/automatically-create-measures-in-power-bi-using-vs-code/
https://github.com/olap4j/olap4j and https://github.com/olap4j/olap4j-server
from metriql.
Please see the relevant discussion if you're interested in being an early adopter! 🙏 #22
from metriql.
Any news on how we can best use metricql with PBI?
from metriql.
Related Issues (20)
- Installation Error
- maintain column order in CTE when order of selected columns changes in segmentation queries HOT 1
- Invalid query aliases when `materialize` is enabled
- Building Metriql With Local, Proprietary JAR File HOT 1
- How to eliminate double quotes from identifier names in metriql's automatically generated SELECT queries HOT 2
- Support `HAVING (COUNT(1) > 0)` in MQL
- Support for accessing Trino functions in SQL Context not working as expected
- Allow user-supplied names for precomputed tables (roll-up tables) HOT 3
- Unknown data type: Array(String) HOT 1
- unable to compile 0.6-SNAPSHOT HOT 2
- Does not support count_distinct dbt metric type HOT 3
- Metriql cannot find parent models of dbt metrics HOT 2
- Error Date-DateTime column in ClickHouse-Metriql
- Read timed out | socket_timeout does not work
- Repeated Alias HOT 1
- Neo4j support
- dbt 1.3.0 has changed raw_sql to raw_code HOT 1
- how to use pivots propertie?
- Superset Connection HOT 1
- profiles.yml does not exist in /root/.dbt/profiles.yml HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from metriql.