You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by hu...@apache.org on 2023/04/21 18:23:55 UTC
[superset] 01/01: fix x-axis issue for cpq
This is an automated email from the ASF dual-hosted git repository.
hugh pushed a commit to branch cpq-x-axis-fix
in repository https://gitbox.apache.org/repos/asf/superset.git
commit 43d2fcc42854a000e634e68927081d74a2c1ab4e
Author: hughhhh <hu...@gmail.com>
AuthorDate: Fri Apr 21 12:48:46 2023 -0400
fix x-axis issue for cpq
---
superset/models/sql_lab.py | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/superset/models/sql_lab.py b/superset/models/sql_lab.py
index d37ed440db..b2f0c8c1ed 100644
--- a/superset/models/sql_lab.py
+++ b/superset/models/sql_lab.py
@@ -41,6 +41,7 @@ from sqlalchemy import (
)
from sqlalchemy.engine.url import URL
from sqlalchemy.orm import backref, relationship
+from sqlalchemy.sql.elements import ColumnElement, literal_column
from superset import security_manager
from superset.jinja_context import BaseTemplateProcessor, get_template_processor
@@ -52,7 +53,7 @@ from superset.models.helpers import (
)
from superset.sql_parse import CtasMethod, ParsedQuery, Table
from superset.sqllab.limiting_factor import LimitingFactor
-from superset.utils.core import QueryStatus, user_label
+from superset.utils.core import get_column_name, QueryStatus, user_label
if TYPE_CHECKING:
from superset.connectors.sqla.models import TableColumn
@@ -329,6 +330,29 @@ class Query(
return col
return None
+ def adhoc_column_to_sqla(
+ self,
+ col: "AdhocColumn", # type: ignore
+ force_type_check: bool = False,
+ template_processor: Optional[BaseTemplateProcessor] = None,
+ ) -> ColumnElement:
+ """
+ Turn an adhoc column into a sqlalchemy column.
+ :param col: Adhoc column definition
+ :param template_processor: template_processor instance
+ :returns: The metric defined as a sqlalchemy column
+ :rtype: sqlalchemy.sql.column
+ """
+ label = get_column_name(col)
+ expression = self._process_sql_expression(
+ expression=col["sqlExpression"],
+ database_id=self.database_id,
+ schema=self.schema,
+ template_processor=template_processor,
+ )
+ sqla_column = literal_column(expression)
+ return self.make_sqla_column_compatible(sqla_column, label)
+
class SavedQuery(Model, AuditMixinNullable, ExtraJSONMixin, ImportExportMixin):
"""ORM model for SQL query"""