dosubot[bot] commented on issue #30184: URL: https://github.com/apache/superset/issues/30184#issuecomment-2335142509
<!-- 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.* -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
