GitHub user dosubot[bot] added a comment to the discussion: Add Support for SQL Server Analysis Services (SSAS) Connection with MDX Query Execution, Dimension Management, Pivot Tables, and Domain User Login
<!-- Greeting --> Hey there, @ishirvani! I'm here to help you with any bugs, questions, or contributions you have. Let's tackle this together! 😊 <!-- Answer --> I found a similar unsolved discussion regarding the integration of SQL Server Analysis Services (SSAS) with Apache Superset. You can check it out here: [Add Support for SQL Server Analysis Services (SSAS) Connection with MDX Query Execution, Dimension Management, Pivot Tables, and Domain User Login](https://github.com/apache/superset/discussions/30182) <sup>[[1]](https://github.com/apache/superset/discussions/30182)</sup>. To enhance Apache Superset to support SSAS with features like MDX query execution, dimension and database management, pivot table functionalities, and domain user login, you would need to create a new DB engine spec for SSAS. Here is a high-level approach: 1. **Create a new DB engine spec for SSAS**: - Implement a new module in the `superset/db_engine_specs` directory, for example, `superset/db_engine_specs/ssas.py`. - Extend the `BaseEngineSpec` class to handle SSAS-specific functionalities. 2. **MDX Query Execution**: - Override the `execute` method to support MDX queries. - Ensure that the connection string and query execution logic are compatible with SSAS. 3. **Dimension and Database Management**: - Implement methods to fetch metadata about dimensions and databases. - Use SSAS-specific APIs or queries to retrieve this information. 4. **Pivot Table Functionalities**: - Extend the visualization capabilities to support pivot tables. - This might involve creating custom visualization plugins or extending existing ones to handle the multidimensional data returned by SSAS. 5. **Domain User Login**: - Integrate with the authentication system to support domain user login. - This might involve configuring Kerberos or another authentication mechanism supported by SSAS. Here is a simplified example of what the new DB engine spec might look like: ```python # superset/db_engine_specs/ssas.py from superset.db_engine_specs.base import BaseEngineSpec class SSASEngineSpec(BaseEngineSpec): engine = 'ssas' engine_name = 'SQL Server Analysis Services' @classmethod def execute(cls, cursor, query, **kwargs): # Implement MDX query execution logic cursor.execute(query) return cursor.fetchall() @classmethod def get_dimensions(cls, cursor): # Implement logic to fetch dimensions cursor.execute("SELECT * FROM $system.DISCOVER_DIMENSIONS") return cursor.fetchall() @classmethod def get_databases(cls, cursor): # Implement logic to fetch databases cursor.execute("SELECT * FROM $system.DISCOVER_CATALOGS") return cursor.fetchall() # Add more methods as needed to support other functionalities ``` 6. **Register the new DB engine spec**: - Add the new engine spec to the list of supported engines in Superset. ```python # superset/config.py from superset.db_engine_specs.ssas import SSASEngineSpec DATABASES = { 'ssas': SSASEngineSpec, # other database specs } ``` For domain user login, you can configure LDAP authentication in the `superset_config.py` file: ```python # When using LDAP Auth, setup the LDAP server AUTH_LDAP_SERVER = "ldap://ldapserver.new" ``` This is a simplified example, and the actual implementation would require more detailed handling of SSAS-specific features and integration points <sup>[[2]](https://github.com/apache/superset/blob/master/superset/db_engine_specs/README.md)</sup><sup>[[3]](https://github.com/apache/superset/blob/master/superset/config.py)</sup><sup>[[4]](https://github.com/apache/superset/blob/master/docs/docs/configuration/configuring-superset.mdx)</sup>. <!-- Dosu Comment Footer --> *To continue talking to [Dosu](https://dosu.dev), mention @dosu.* GitHub link: https://github.com/apache/superset/discussions/33093#discussioncomment-12797468 ---- This is an automatically sent email for [email protected]. To unsubscribe, please send an email to: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
