superset: Error querying data from prestodb
Kindly help. I get this error while querying my data after connecting to prestodb
{u'errorLocation': {u'columnNumber': 25, u'lineNumber': 3}, u'failureInfo': {u'suppressed': [], u'message': u"line 3:25: '>=' cannot be applied to timestamp, varchar(26)", u'errorLocation': {u'columnNumber': 25, u'lineNumber': 3}, u'type': u'com.facebook.presto.sql.analyzer.SemanticException', u'stack': [u'com.facebook.presto.sql.analyzer.ExpressionAnalyzer$Visitor.getOperator(ExpressionAnalyzer.java:989)', u'com.facebook.presto.sql.analyzer.ExpressionAnalyzer$Visitor.visitComparisonExpression(ExpressionAnalyzer.java:429)', u'com.facebook.presto.sql.analyzer.ExpressionAnalyzer$Visitor.visitComparisonExpression(ExpressionAnalyzer.java:221)', u'com.facebook.presto.sql.tree.ComparisonExpression.accept(ComparisonExpression.java:133)', u'com.facebook.presto.sql.tree.StackableAstVisitor.process(StackableAstVisitor.java:28)', u'com.facebook.presto.sql.analyzer.ExpressionAnalyzer$Visitor.process(ExpressionAnalyzer.java:240)', u'com.facebook.presto.sql.analyzer.ExpressionAnalyzer$Visitor.coerceType(ExpressionAnalyzer.java:1012)', u'com.facebook.presto.sql.analyzer.ExpressionAnalyzer$Visitor.visitLogicalBinaryExpression(ExpressionAnalyzer.java:412)', u'com.facebook.presto.sql.analyzer.ExpressionAnalyzer$Visitor.visitLogicalBinaryExpression(ExpressionAnalyzer.java:221)', u'com.facebook.presto.sql.tree.LogicalBinaryExpression.accept(LogicalBinaryExpression.java:85)', u'com.facebook.presto.sql.tree.StackableAstVisitor.process(StackableAstVisitor.java:28)', u'com.facebook.presto.sql.analyzer.ExpressionAnalyzer$Visitor.process(ExpressionAnalyzer.java:240)', u'com.facebook.presto.sql.analyzer.ExpressionAnalyzer.analyze(ExpressionAnalyzer.java:213)', u'com.facebook.presto.sql.analyzer.ExpressionAnalyzer.analyzeExpression(ExpressionAnalyzer.java:1195)', u'com.facebook.presto.sql.analyzer.StatementAnalyzer.analyzeExpression(StatementAnalyzer.java:2019)', u'com.facebook.presto.sql.analyzer.StatementAnalyzer.analyzeWhere(StatementAnalyzer.java:1851)', u'com.facebook.presto.sql.analyzer.StatementAnalyzer.lambda$visitQuerySpecification$12(StatementAnalyzer.java:1165)', u'java.util.Optional.ifPresent(Optional.java:159)', u'com.facebook.presto.sql.analyzer.StatementAnalyzer.visitQuerySpecification(StatementAnalyzer.java:1165)', u'com.facebook.presto.sql.analyzer.StatementAnalyzer.visitQuerySpecification(StatementAnalyzer.java:229)', u'com.facebook.presto.sql.tree.QuerySpecification.accept(QuerySpecification.java:125)', u'com.facebook.presto.sql.tree.AstVisitor.process(AstVisitor.java:22)', u'com.facebook.presto.sql.analyzer.StatementAnalyzer.visitQuery(StatementAnalyzer.java:929)', u'com.facebook.presto.sql.analyzer.StatementAnalyzer.visitQuery(StatementAnalyzer.java:229)', u'com.facebook.presto.sql.tree.Query.accept(Query.java:103)', u'com.facebook.presto.sql.tree.AstVisitor.process(AstVisitor.java:22)', u'com.facebook.presto.sql.analyzer.Analyzer.analyze(Analyzer.java:60)', u'com.facebook.presto.execution.SqlQueryExecution.doAnalyzeQuery(SqlQueryExecution.java:273)', u'com.facebook.presto.execution.SqlQueryExecution.analyzeQuery(SqlQueryExecution.java:259)', u'com.facebook.presto.execution.SqlQueryExecution.start(SqlQueryExecution.java:223)', u'com.facebook.presto.execution.QueuedExecution.lambda$start$1(QueuedExecution.java:62)', u'java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)', u'java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)', u'java.lang.Thread.run(Thread.java:745)']}, u'errorType': u'USER_ERROR', u'errorName': u'SYNTAX_ERROR', u'errorCode': 1, u'message': u"line 3:25: '>=' cannot be applied to timestamp, varchar(26)"}
Thanks in advance
About this issue
- Original URL
- State: closed
- Created 8 years ago
- Comments: 16 (11 by maintainers)
Is there any other feedback on this? We’re seeing hte same issues. We got around it by casting our original ts to a varchar but it feels “dirty”.
The exception is due to Presto misinterpreting the date as a varchar. In your field definition of the table, add
timestamp '{}'to database expression. It will change the SQL query fromfieldname <= '2016-07-20 07:00:00'tofieldname <= timestamp '2016-07-20 07:00:00'.See https://prestodb.io/docs/current/functions/datetime.html. Requires a change in pyhive for sqlalchemy which currently doesn’t handle time conversions correctly.