superset icon indicating copy to clipboard operation
superset copied to clipboard

Jinja template is not working when async query is enabled

Open anthony6401 opened this issue 3 years ago • 7 comments

Following up from #16412

I tried using jinja template with global async queries(GAQ) enabled in version 1.3.0. I got the same error as stated in here (#14786).

In recent release (v1.3.1rc1), the issue was addressed and it should be fixed. However, I tried to install the new release and enable jinja template as well as GAQ to simulate the previous error. It doesn't throw any error, but now it shows wrong values.

Expected results

GAQ should work with jinja templating and shows correct values.

Actual results

As you can see from the screenshot, the chart returns 0. However, if you look at the bottom data, it returns 4625 (which is the correct one) instead of 0.

Screenshots

image

Looking at the logs it seems the first query (for the chart) pass through the jinja template, but has no context/variable that should be appended, hence it put the value None.

superset_app             | 172.21.0.1 - - [09/Sep/2021 10:47:39] "GET /api/v1/async_event/?last_id=1631183590197-0 HTTP/1.1" 200 -
superset_app             | 2021-09-09 10:47:39,394:INFO:werkzeug:172.21.0.1 - - [09/Sep/2021 10:47:39] "GET /api/v1/async_event/?last_id=1631183590197-0 HTTP/1.1" 200 -
superset_app             | 2021-09-09 10:47:39,443:DEBUG:superset.sql_parse:Parsing with sqlparse statement: SELECT *
superset_app             | FROM "Flights"
superset_app             | WHERE "AIRLINE" = 'None'
superset_app             | 2021-09-09 10:47:39,456:INFO:superset.common.utils:Cache key: 165593a0806194e5c6b40923f7e946b2
superset_app             | 2021-09-09 10:47:39,456:DEBUG:superset.stats_logger:[stats_logger] (incr) loading_from_cache
superset_app             | 2021-09-09 10:47:39,456:DEBUG:superset.stats_logger:[stats_logger] (incr) loaded_from_cache
superset_app             | 2021-09-09 10:47:39,456:INFO:superset.common.utils:Serving from cache
superset_app             | 2021-09-09 10:47:39,461:DEBUG:superset.stats_logger:[stats_logger] (incr) ChartRestApi.data_from_cache.success
superset_app             | 2021-09-09 10:47:39,461:DEBUG:superset.stats_logger:[stats_logger] (timing) ChartRestApi.data_from_cache.time | 45.62420000002021
superset_app             | 172.21.0.1 - - [09/Sep/2021 10:47:39] "GET /api/v1/chart/data/qc-3420381c3553925b0c069dc140aaca1a HTTP/1.1" 200 -
superset_app             | 2021-09-09 10:47:39,467:INFO:werkzeug:172.21.0.1 - - [09/Sep/2021 10:47:39] "GET /api/v1/chart/data/qc-3420381c3553925b0c069dc140aaca1a HTTP/1.1" 200 -
superset_app             | 2021-09-09 10:47:39,592:DEBUG:superset.sql_parse:Parsing with sqlparse statement: SELECT *
superset_app             | FROM "Flights"
superset_app             | WHERE "AIRLINE" = 'UA'

Just for reference, I used this query for this test.

SELECT *
FROM "Flights"
WHERE "AIRLINE" = '{{ url_param('test') }}'

How to reproduce the bug

  1. Enable GAQ.
  2. Use url_param function in jinja template.
  3. Run any dataset with jinja templating.

Environment

(please complete the following information):

  • superset version: 1.3.1rc1
  • python version: 3.7.9
  • node.js version: 14

Checklist

Make sure to follow these steps before submitting your issue - thank you!

  • [x] I have checked the superset logs for python stacktraces and included it here as text if there are any.
  • [x] I have reproduced the issue with at least the latest released version of superset.
  • [x] I have checked the issue tracker for the same issue and I haven't found one similar.

anthony6401 avatar Sep 09 '21 11:09 anthony6401

+1. Noticing same behaviour.

The second time the chart is reloaded, the url_param gets passed in properly.

kekwan avatar Feb 22 '22 00:02 kekwan

Validated on latest master.

image

zhaoyongjie avatar Feb 23 '22 07:02 zhaoyongjie

@zhaoyongjie I am also encountering this 422 Error. Is your response also {"message":"Error loading data from cache"}? It seems to be related to the chart data cache.

image

kekwan avatar Feb 23 '22 18:02 kekwan

@zhaoyongjie I am also encountering this 422 Error. Is your response also {"message":"Error loading data from cache"}? It seems to be related to the chart data cache.

image

I am working on this. this is because the cache-key was incorrect calculation when it applied url_param.

zhaoyongjie avatar Feb 24 '22 03:02 zhaoyongjie

Hi, I am facing the same kind of issue. I am using the Jinja template variable {{ current_aw_user_id() }} in my queries. my queries is very simple:

SELECT * FROM attendance where id ='{{current_aw_user_id()}}'; SELECT * FROM user where reporting_to_id ='{{current_aw_user_id()}}';

I am facing the same "Unexpected error" issue.

Screenshot 2022-04-19 at 3 25 43 PM Screenshot 2022-04-19 at 3 25 52 PM

what could be the issue, I went through multiple posts but didn't find any solution.

SanjaySharma avatar Apr 26 '22 12:04 SanjaySharma

I believe I'm having the same issue in my deployment.

The dashboard/chart loads just fine after I refresh the page.

a-cid avatar Aug 25 '22 18:08 a-cid

Hi all... is this still an issue in 3.x that anyone can validate?

rusackas avatar Feb 12 '24 19:02 rusackas

Closing as stale, but happy to revisit/reopen if folks are facing this in 4.x

rusackas avatar Jun 10 '24 19:06 rusackas