{"id":474937,"date":"2025-09-14T15:00:27","date_gmt":"2025-09-14T15:00:27","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=474937"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=474937","title":{"rendered":"<span>Superset deep-linking: \u043a\u0430\u043a Rison \u0438 Jinja \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0441\u0432\u043e\u0434\u043d\u044b\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0444\u043e\u043a\u0443\u0441-\u0430\u043d\u0430\u043b\u0438\u0437\u0430<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><strong><em>\u0418\u0437 \u043e\u0431\u0449\u0435\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u2014 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c (Deep-linking \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u043a\u0430\u043a \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 Drill-Through \u0432 Microsoft\u00a0 Power BI, <\/em>Tableau \u0438 Qlik<em>).<\/em><\/strong><\/p>\n<p>\u0417\u0430 \u043e\u0434\u0438\u043d \u043a\u043b\u0438\u043a \u0438\u0437 \u0441\u0432\u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u2014 \u043d\u0430 \u00ab\u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439\u00bb \u0441 \u0443\u0436\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a \u0432 Superset \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 URL-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 native_filters \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Rison \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 Jinja-\u043c\u0430\u043a\u0440\u043e\u0441\u0430\u043c\u0438.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3e3\/8ca\/12a\/3e38ca12a1896b113ede1fb3042bcd89.png\" width=\"751\" height=\"422\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/3e3\/8ca\/12a\/3e38ca12a1896b113ede1fb3042bcd89.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3e3\/8ca\/12a\/3e38ca12a1896b113ede1fb3042bcd89.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439, \u043a\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430\u043c\u0438, \u0437\u043d\u0430\u0435\u0442 \u044d\u0442\u0443 \u0431\u043e\u043b\u044c: \u0441\u043c\u043e\u0442\u0440\u0438\u0448\u044c \u043d\u0430 \u0441\u0432\u043e\u0434\u043d\u044b\u0439 \u043e\u0442\u0447\u0451\u0442, \u043d\u0430\u0445\u043e\u0434\u0438\u0448\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u2014 \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0435 \u0436\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 \u0441 \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439. \u0412 Superset \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0440\u0443\u0442\u0438\u043d\u043d\u043e\u0433\u043e \u00ab\u043f\u0440\u043e\u043a\u043b\u0438\u043a\u0438\u0432\u0430\u043d\u0438\u044f\u00bb: \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c deep-linking \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 Rison \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Jinja. \u0422\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0443\u0436\u0435 \u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c (\u0441\u0442\u0440\u0430\u043d\u0430, \u043a\u043b\u0438\u0435\u043d\u0442, \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u0438 \u0442. \u0434.). \u0422\u0430\u043a\u043e\u0439 deep-linking \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0443 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435. \u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e\u00a0 \u0430\u043d\u0430\u043b\u043e\u0433 Drill-Through, \u0434\u0430\u0432\u043d\u043e \u0441\u0442\u0430\u0432\u0448\u0435\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0432 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0445 BI-\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u2014 \u043b\u0438\u0434\u0435\u0440\u0430\u0445 \u0440\u044b\u043d\u043a\u0430 \u2014 <strong>Microsoft Power BI, Tableau \u0438 Qlik<\/strong> , \u0445\u043e\u0442\u044f \u0432 Superset \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0443\u0441\u0438\u043b\u0438\u0439 \u0434\u043b\u044f \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u043c \u0432\u0438\u0434\u0435\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043d\u0435\u043a\u0438\u0439 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 (cars_rison_dash(parent)) , \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043a\u0440\u043e\u0441\u0441-\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432) \u0438 \u043f\u043e\u0441\u043b\u0435 \u043a\u043b\u0438\u043a\u0430 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u00bb \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 (cars_rison_dash(child)) \u0441 \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0438\u0437 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/68bff87ee72f11488bba2098\" data-style=\"\" id=\"68bff87ee72f11488bba2098\" width=\"\"><\/div>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 \u0442\u0435\u043e\u0440\u0438\u044e.<\/p>\n<p>\u0422\u043e\u0442, \u043a\u0442\u043e \u0437\u0430\u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 cars \u043e\u0442\u0441\u044e\u0434\u0430: https:\/\/anonymfile.com\/BXZKQ\/cars.rar\u00a0 (\u043d\u0430 \u043d\u0435\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0432\u0441\u0435 \u0447\u0430\u0440\u0442\u044b \u043e\u0431\u043e\u0438\u0445 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432).<\/p>\n<p><strong>\u0418\u0442\u0430\u043a, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0435\u043e\u0440\u0438\u0438.<\/strong><\/p>\n<p><strong>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 rison-\u0444\u043e\u0440\u043c\u0430\u0442 \u0438 \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Superset<\/strong><\/p>\n<p><strong>Rison<\/strong> \u2014 \u044d\u0442\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 <strong>JSON<\/strong>, \u043d\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 <strong>URL<\/strong>.<\/p>\n<p>\u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u044b <strong>Rison<\/strong>.<\/p>\n<p>\u0412 JSON \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<p><code><strong>[\u00abCanada\u00bb, \u00abChina\u00bb]<\/strong><\/code><\/p>\n<p>\u0412 Rison \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0437\u0430\u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e:<\/p>\n<p><code><strong>!('Canada','China')<\/strong><\/code><\/p>\n<p>\u041e\u0431\u044a\u0435\u043a\u0442 \u0432 JSON:<\/p>\n<p><code><strong>{<\/strong><\/code><\/p>\n<p><code><strong>\u00abname\u00bb: \u00abLacazette\u00bb,<\/strong><\/code><\/p>\n<p><code><strong>\u00abage\u00bb: 27,<\/strong><\/code><\/p>\n<p><code><strong>\u00abstats\u00bb: {<\/strong><\/code><\/p>\n<p><code><strong>\u00abappearances\u00bb: 20,<\/strong><\/code><\/p>\n<p><code><strong>\u00abgoals\u00bb: 7,<\/strong><\/code><\/p>\n<p><code><strong>\u00abassists\u00bb: 5<\/strong><\/code><\/p>\n<p><code><strong>}<\/strong><\/code><\/p>\n<p><code><strong>}<\/strong><\/code><\/p>\n<p>\u0412 Rison:<\/p>\n<p><code><strong>(name:Lacazette,age:27,stats:(appearances:20,goals:7,assists:5))<\/strong><\/code><\/p>\n<p><strong>\u0412 Rison <\/strong>\u0441\u043a\u043e\u0431\u043a\u0438 (&#8230;) \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 , \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 JSON \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 {\u2026}, \u0430 \u0432\u043e\u0441\u043a\u043b\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u043d\u0430\u043a \u0441 \u043a\u0440\u0443\u0433\u043b\u044b\u043c\u0438 \u0441\u043a\u043e\u0431\u043a\u0430\u043c\u0438 !(&#8230;) \u0432 <strong>Rison<\/strong> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 JSON \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 [\u2026].\u00a0<\/p>\n<p>\u0421\u0442\u0440\u043e\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0431\u0435\u0437 \u043a\u0430\u0432\u044b\u0447\u0435\u043a, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432 \u0438\u043b\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432\u0440\u043e\u0434\u0435 :, ().<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e Rison \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0432 URL \u043a\u0430\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u2014 \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f \u00ab\u043e\u043f\u0430\u0441\u043d\u044b\u0435\u00bb \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0438\u0445 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041d\u043e \u0441\u0430\u043c\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f <strong>Rison<\/strong> \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u0430 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0441\u0432\u0435\u0441\u0442\u0438 \u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 URL \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0432 Rison \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u00ab\u0447\u0438\u0441\u0442\u044b\u043c\u0438\u00bb \u0438 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u043c\u0438.<\/p>\n<p><strong>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0432 Rison \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441 \u044d\u0442\u0438\u043c \u0436\u0435 \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c URI (Uniform Resource Identifier)-\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432, \u043a\u0430\u0432\u044b\u0447\u0435\u043a, \u0437\u0430\u043f\u044f\u0442\u044b\u0445 \u0438 \u043f\u0440\u043e\u0447.<\/strong><\/p>\n<p>\u0427\u0438\u0441\u0442\u0430\u044f Rison-\u0441\u0442\u0440\u043e\u043a\u0430 \u0432 \u0430\u0434\u0440\u0435\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:<\/p>\n<p><code>http:\/\/localhost:8089\/superset\/dashboard\/67\/<strong>?native_filters=(country:!('Canada','China'),year:2024)\u00a0\u00a0<\/strong><\/code><strong>\u00a0<\/strong><\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0443\u0434\u043e\u0431\u043d\u043e \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 <strong>native_filters <\/strong>\u00a0\u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e , \u0447\u0442\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442\u0441\u044f<strong> country <\/strong>\u043f\u043e \u0434\u0432\u0443\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c<strong> &#8216;Canada&#8217;,&#8217;China&#8217; <\/strong>, \u0430 \u0433\u043e\u0434<strong> year=2024.<\/strong><\/p>\n<p>\u0422\u0430 \u0436\u0435 \u0441\u0430\u043c\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 URI-\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432 \u0430\u0434\u0440\u0435\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:<\/p>\n<p><code>http:\/\/localhost:8089\/superset\/dashboard\/67\/<strong>?native_filters=%28country%3A%21%28%27Canada%27%2C%27China%27%29%2Cyear%3A2024%29<\/strong><\/code><\/p>\n<p><strong>\u0417\u0434\u0435\u0441\u044c:<\/strong><\/p>\n<ul>\n<li>\n<p>( \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u0432 %28,<\/p>\n<\/li>\n<li>\n<p>: \u0432 %3A,<\/p>\n<\/li>\n<li>\n<p>! \u0432 %21,<\/p>\n<\/li>\n<li>\n<p>, \u0432 %2C,<\/p>\n<\/li>\n<li>\n<p>&#8216; \u0432 %27,<\/p>\n<\/li>\n<li>\n<p>) \u0432 %29.<\/p>\n<\/li>\n<\/ul>\n<p> \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0438\u0439 \u0438 \u043f\u043b\u043e\u0445\u043e \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 <strong>Rison<\/strong> \u0438 \u0446\u0435\u043d\u0435\u043d: \u043e\u043d \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c <strong>URL<\/strong> \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u043c \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0448\u0438\u043d\u0435, \u043d\u043e \u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443. <\/p>\n<p><strong>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u043b\u044f \u0447\u0435\u0433\u043e Rison \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Superset.<\/strong><\/p>\n<p>\u0412 <strong>Apache Superset<\/strong> \u044d\u0442\u043e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 URL. \u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0437\u0434\u0435\u0441\u044c \u2014 native_filters:<\/p>\n<ul>\n<li>\n<p>\u0432 \u043d\u0451\u043c \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0440\u0430\u043d\u0430, \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430);<\/p>\n<\/li>\n<li>\n<p>Rison \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0431\u0435\u0437 \u00ab\u0440\u0430\u0437\u0434\u0443\u0432\u0430\u043d\u0438\u044f\u00bb URL.<\/p>\n<\/li>\n<\/ul>\n<p> \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438: \u0432\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435 Rison-\u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 native_filters, \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0435\u0451 \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442, \u0430 <strong>Superset<\/strong> \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u00ab\u0437\u043d\u0430\u0435\u0442\u00bb, \u0447\u0442\u043e \u0432 <strong>native_filters<\/strong> \u043b\u0435\u0436\u0438\u0442 \u0438\u043c\u0435\u043d\u043d\u043e Rison, \u0438 \u0443\u043c\u0435\u0435\u0442 \u0435\u0451 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0438 \u0434\u0430\u043b\u0435\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430. <\/p>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c <strong>deep-links<\/strong>: \u0441\u0441\u044b\u043b\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434  \u0441 \u0443\u0436\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438.\u00a0<\/p>\n<p>\u041f\u043e\u0434\u044b\u0442\u043e\u0436\u0438\u0432\u0430\u044f \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043f\u043e Rison, \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438- \u043f\u0430\u0440\u0441\u0435\u0440\u044b <strong>Rison <\/strong>\u0434\u043b\u044f \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f: <strong>JavaScript<\/strong>, <strong>Python<\/strong>, <strong>Golang \u0438 \u0434\u0440<\/strong>.<\/p>\n<p><strong>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u0432 Rison vs JSON \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0438\u0436\u0435.<\/strong><\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/92a\/d2f\/09e\/92ad2f09e309ac91ec24e87c9f47cd62.png\" width=\"624\" height=\"876\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/92a\/d2f\/09e\/92ad2f09e309ac91ec24e87c9f47cd62.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/92a\/d2f\/09e\/92ad2f09e309ac91ec24e87c9f47cd62.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/493\/f29\/0b0\/493f290b0220564e04da0fbeb6a57e44.png\" width=\"713\" height=\"1075\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/493\/f29\/0b0\/493f290b0220564e04da0fbeb6a57e44.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/493\/f29\/0b0\/493f290b0220564e04da0fbeb6a57e44.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431 \u0441 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0430 <\/strong><a href=\"https:\/\/github.com\/Nanonid\/rison\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/Nanonid\/rison<\/a><\/p>\n<p><strong>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Jinja Template \u0438 \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Apache Superset.<\/strong><\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u043b\u043e\u043a \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0432\u00a0 SQL \u2013 \u0437\u0430\u043f\u0440\u043e\u0441.<\/p>\n<p>\u0412 Apache Superset \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440 \u043d\u0430 Python <strong>Jinja<\/strong>. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u043f\u0440\u044f\u043c\u043e \u0432 SQL \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 SQL -\u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u00ab\u0436\u0438\u0432\u044b\u043c\u00bb \u2014 \u043e\u043d \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0432\u044b\u0431\u043e\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0445 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430.<\/p>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438, Jinja \u0432 Superset \u2014 \u044d\u0442\u043e \u0441\u043b\u043e\u0439 \u043c\u0435\u0436\u0434\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0438 SQL:<\/p>\n<ul>\n<li>\n<p>\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043a\u043b\u0438\u043a\u0430\u0435\u0442 \u0444\u0438\u043b\u044c\u0442\u0440;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u043c\u0430\u043a\u0440\u043e\u0441\u044b Jinja (filter_values, get_filters, from_dttm, to_dttm \u0438 \u0434\u0440\u0443\u0433\u0438\u0435) \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 SQL;<\/p>\n<\/li>\n<li>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 SQL \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0434\u043b\u044f Rison, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 deep-linking.<\/p>\n<\/li>\n<\/ul>\n<p> \u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e SQL-\u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 Jinja \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 Superset: <\/p>\n<p>\ud83d\udc49 <a href=\"https:\/\/superset.apache.org\/docs\/configuration\/sql-templating\/\" rel=\"noopener noreferrer nofollow\">https:\/\/superset.apache.org\/docs\/configuration\/sql-templating\/<\/a><\/p>\n<p>\u0425\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0430\u0437\u0431\u043e\u0440\u044b \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0437\u0434\u0435\u0441\u044c:<br \/> \ud83d\udc49 <a href=\"https:\/\/preset.io\/blog\/intro-jinja-templating-apache-superset\/\" rel=\"noopener noreferrer nofollow\">https:\/\/preset.io\/blog\/intro-jinja-templating-apache-superset\/<\/a><\/p>\n<p>\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Jinja \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0439:<\/p>\n<ul>\n<li>\n<p>{{ &#8230; }} \u2014 \u0432\u044b\u0432\u043e\u0434 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0438\u043b\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>{% &#8230; %} \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 (\u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u0446\u0438\u043a\u043b\u044b, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435);<\/p>\n<\/li>\n<li>\n<p>{# &#8230; #} \u2014 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<p> \u0412 \u0446\u0435\u043b\u044f\u0445 \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0432 <strong>Superset \u043c\u0430\u043a\u0440\u043e\u0441\u044b Jinja<\/strong><\/p>\n<p><strong>1) filter_values(name) \u2192 list\u00a0 <\/strong>: [\u2018value1\u2019 ,\u2026 , \u2019valueN\u2019].<\/p>\n<p><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442:<\/strong> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u0438\u0439 <strong>\u0441\u043f\u0438\u0441\u043e\u043a \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439<\/strong> \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0442\u0438\u043f\u0430 Value. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>name<\/strong> \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 <strong>filter_values<\/strong> \u2013 \u044d\u0442\u043e \u0438\u043c\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0434\u0435\u043b\u0430\u043d \u0444\u0438\u043b\u044c\u0442\u0440.<br \/> <strong>\u041a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:<\/strong> \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f IN (&#8230;) \u0438\u043b\u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u043b\u044f Rison.<\/p>\n<p><strong>2) get_filters(name) \u2192 list[dict]<\/strong><\/p>\n<p><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442:<\/strong> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <strong>\u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0441\u043b\u043e\u0432\u0438\u0439<\/strong> \u043f\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0434\u0435\u0442\u0430\u043b\u044f\u043c\u0438: \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 (op) \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (val). \u041f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432: \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043d\u044b\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0442\u0438\u043f\u0430 <strong>Numerical Range<\/strong>. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>name<\/strong> \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 <strong>get_filters<\/strong> \u2013 \u044d\u0442\u043e \u0438\u043c\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0434\u0435\u043b\u0430\u043d \u0444\u0438\u043b\u044c\u0442\u0440.<\/p>\n<p><strong>\u0417\u0430\u0447\u0435\u043c:<\/strong> \u043c\u043e\u0436\u043d\u043e \u0433\u0438\u0431\u043a\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c, \u043a\u0430\u043a\u0430\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0433\u0440\u0430\u043d\u044c\/\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0432\u044b\u0431\u0440\u0430\u043d \u043d\u0430 <strong>Numerical Range<\/strong> -\u0444\u0438\u043b\u044c\u0442\u0440\u0435, \u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 Rison-\u0443\u0437\u0435\u043b \u0438\u043b\u0438 SQL-\u0443\u0441\u043b\u043e\u0432\u0438\u0435.<\/p>\n<p><strong>3) from_dttm \/ to_dttm \u2192 str (\u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u0430\u0442)<\/strong><\/p>\n<p><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442:<\/strong> \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 <strong>\u043d\u0438\u0436\u043d\u044e\u044e\/\u0432\u0435\u0440\u0445\u043d\u044e\u044e \u0433\u0440\u0430\u043d\u0438\u0446\u044b<\/strong> \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 (\u0444\u0438\u043b\u044c\u0442\u0440 \u0442\u0438\u043f\u0430 <strong>Time Range<\/strong>) \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0433\u043e\u0442\u043e\u0432\u043e\u043c \u043a \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0432 SQL.<\/p>\n<p><strong>4) time_grain \u2192 str (ISO-8601 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c)<\/strong><\/p>\n<p><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442:<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 <strong>time grain<\/strong> (\u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0448\u0430\u0433 \u0432\u0440\u0435\u043c\u0435\u043d\u0438), \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 P1D (\u0434\u0435\u043d\u044c), P1W (\u043d\u0435\u0434\u0435\u043b\u044f), P1M (\u043c\u0435\u0441\u044f\u0446), PT1H (\u0447\u0430\u0441) \u0438 \u0442. \u0434.<\/p>\n<p><strong>\u0417\u0430\u0447\u0435\u043c:<\/strong> \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u0443\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c time_grain \u043d\u0438\u0436\u0435 \u043f\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0443 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 extraFormData Rison).<\/p>\n<p><strong>5) \u0412\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435: namespace(&#8230;) (Jinja-\u0444\u0438\u0447\u0430)<\/strong><\/p>\n<p><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442: <\/strong>\u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u0446\u0438\u043a\u043b\u0430.<\/p>\n<p><strong>\u0417\u0430\u0447\u0435\u043c: <\/strong>Jinja \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435 \u0434\u0430\u0451\u0442 \u00ab\u0432\u044b\u043d\u0435\u0441\u0442\u0438\u00bb \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u0446\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u044b\u043c set; namespace \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.<\/p>\n<p><strong>\u041d\u0443, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u0435\u043e\u0440\u0438\u0438 \u2014 \u043f\u043e\u0440\u0430 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430.<\/strong><\/p>\n<p><strong>\u0424\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043a\u0435\u0439\u0441\u0430:<\/strong><\/p>\n<ul>\n<li>\n<p>\u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u043a \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0443 \u0441 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u043c \u0441 \u043a\u0435\u043c-\u0442\u043e \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 Superset \u043e\u0442 3\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0432\u044b\u0448\u0435 <\/strong>(\u0432\u0441\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0432 \u044d\u0442\u043e\u043c \u043a\u0435\u0439\u0441\u0435 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 4 \u0438 5)<\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u043e\u043a\u0438\u043d\u0443\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043f\u043e \u044d\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434.<\/p>\n<p>\u0414\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>native_filters <\/strong>\u0432 <strong>URL<\/strong>&#8212; \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>(\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0442\u0443\u0442 : <a href=\"https:\/\/www.blef.fr\/superset-filters-in-url\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.blef.fr\/superset-filters-in-url\/<\/a> ):<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/487\/104\/148\/4871041485162964edbc356ccc97ba18.png\" width=\"1001\" height=\"139\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/487\/104\/148\/4871041485162964edbc356ccc97ba18.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/487\/104\/148\/4871041485162964edbc356ccc97ba18.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0422\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c <strong>native_filters_key<\/strong> \u0432 URL. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u043c\u0438 \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0431\u044b\u043b\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 <strong>key_value<\/strong>.<\/p>\n<p><strong>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 Rison-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 native_filters<\/strong><\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 URL, Superset \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 native_filters=(&#8230;). \u0412\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043a\u043b\u044e\u0447\u0438, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0435 \u0437\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.<\/p>\n<p>\ud83d\udc49<strong>__cache <\/strong>(\u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u0435\u0439\u0441\u0435 \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043b\u044e\u0447)<\/p>\n<p>\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043a\u044d\u0448 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u00ab\u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u0443\u044e\u00bb \u043f\u043e\u0434\u043f\u0438\u0441\u044c (label) \u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (value). Superset \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u044d\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430.<\/p>\n<p>\ud83d\udc49<strong>extraFormData<\/strong><\/p>\n<p>\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u043b\u043e\u043a, \u0433\u0434\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f, <strong>\u043a\u0430\u043a\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0432 SQL<\/strong>.<\/p>\n<ul>\n<li>\n<p>filters \u2192 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u0432\u0438\u0434\u0430 (col:, op:&lt;\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440&gt;, val:&lt;\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f&gt;).<\/p>\n<\/li>\n<li>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u0441\u044e\u0434\u0430 Superset \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u043a\u0430\u043a\u0443\u044e \u043a\u043e\u043b\u043e\u043d\u043a\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0438 \u043a\u0430\u043a\u0438\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\ud83d\udc49<strong>filterState<\/strong><\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442:<\/p>\n<ul>\n<li>\n<p>label \u2014 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 UI (\u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0438\u043b\u0438 \u0438\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u043c),<\/p>\n<\/li>\n<li>\n<p>value \u2014 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f,<\/p>\n<\/li>\n<li>\n<p>validateStatus \u2014 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u0444\u043b\u0430\u0433 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (!f = false, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430).<\/p>\n<\/li>\n<\/ul>\n<p>\ud83d\udc49<strong>ownState \u2014 <\/strong>\u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439. \u041e\u0431\u044b\u0447\u043d\u043e \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u043e\u0439 (), \u043d\u043e Superset \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0451 \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0444\u0438\u0447 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432). <\/p>\n<p><strong>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u043b\u043e\u043a\u043e\u0432<\/strong><\/p>\n<ul>\n<li>\n<p><code><strong>&lt;id&gt;<\/strong><\/code> \u2014 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 (NATIVE_FILTER-&#8230;). \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f Superset \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 Rison-\u0437\u0430\u043f\u0438\u0441\u0438 \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c.<\/p>\n<\/li>\n<\/ul>\n<p> \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435  \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <code><strong>NATIVE_FILTER-&lt;id&gt;<\/strong><\/code><strong> <\/strong>, \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0438\u043b\u0438 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432\u0435\u0431-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (\u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0438\u0436\u0435)<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fe2\/035\/dc0\/fe2035dc0c0f6d775659f8f455326ac0.png\" width=\"884\" height=\"866\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/fe2\/035\/dc0\/fe2035dc0c0f6d775659f8f455326ac0.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fe2\/035\/dc0\/fe2035dc0c0f6d775659f8f455326ac0.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<ul>\n<li>\n<p><code><strong>&lt;column&gt;<\/strong><\/code>\u2014 \u0438\u043c\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0432 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435), \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0444\u0438\u043b\u044c\u0442\u0440. \u0412\u0430\u0436\u043d\u043e: \u044d\u0442\u043e \u0438\u043c\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0438, \u0430 \u043d\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0432 UI. (\u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0432 UI \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 , \u0442\u0430\u043a\u043e\u0435 \u0436\u0435 \u043a\u0430\u043a \u0438 \u0438\u043c\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0438, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044d\u0442\u043e\u0442 \u0444\u0438\u043b\u044c\u0442\u0440 \u0441\u043e\u0437\u0434\u0430\u043d)<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/77e\/5b3\/ef2\/77e5b3ef2d4c1ef460dd97a3db7157be.png\" width=\"910\" height=\"860\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/77e\/5b3\/ef2\/77e5b3ef2d4c1ef460dd97a3db7157be.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/77e\/5b3\/ef2\/77e5b3ef2d4c1ef460dd97a3db7157be.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p><strong>validateStatus<\/strong> \u2014 \u0441\u0442\u0430\u0442\u0443\u0441 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 !f (false), Superset \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>val \u0438\u043b\u0438 <\/strong> <code><strong>&lt;value&gt;<\/strong><\/code> \u2014 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u0430. \u0412 Rison-\u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a<code> !('Canada','China')<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>op<\/strong> \u2014 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f (IN, =, &gt;=, &lt;=, IS NULL, BETWEEN \u0438 \u0434\u0440.). \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<p> \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 <strong>Superset<\/strong> \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0430: \u0438 \u0442\u043e, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 (__cache, filterState), \u0438 \u0442\u043e, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0432 SQL (extraFormData). <\/p>\n<p>\u0412\u043e\u0442 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0441\u044b\u043b\u043a\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 RISON \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/be1\/b66\/acb\/be1b66acb90f83f64967dfe8d3145742.png\" width=\"1909\" height=\"881\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/be1\/b66\/acb\/be1b66acb90f83f64967dfe8d3145742.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/be1\/b66\/acb\/be1b66acb90f83f64967dfe8d3145742.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u0430 \u0441\u043a\u0440\u0438\u043d\u0435 \u0446\u0432\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430 \u0432\u043e\u043a\u0440\u0443\u0433 \u0444\u0438\u043b\u044c\u0442\u0440\u0430, \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0446\u0432\u0435\u0442\u043e\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 Rison-\u0441\u0441\u044b\u043b\u043a\u0435 \u043d\u0438\u0436\u0435 , \u0433\u0434\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u0430.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9fa\/da5\/4c8\/9fada54c8d1fab7d4c5ea3cc91780da7.png\" width=\"996\" height=\"390\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/9fa\/da5\/4c8\/9fada54c8d1fab7d4c5ea3cc91780da7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9fa\/da5\/4c8\/9fada54c8d1fab7d4c5ea3cc91780da7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>\u0413\u0434\u0435 \u0435\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c id-\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0438 \u043a\u043b\u044e\u0447\/\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f , \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Superset \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430?<\/strong><\/p>\n<p>\u0412 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0431-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430.<\/p>\n<p>\u0417\u0430\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432\u0435\u0431-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u0432\u044b\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0434\u0435\u0442\u0441\u043a\u043e\u0433\u043e (!) \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430\u00a0 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 Apply filters. \u0412 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 Network\u00a0 \u0438 \u0441\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430\u0439\u0434\u0438\u0442\u0435\u00a0 \u0437\u0430\u043f\u0440\u043e\u0441 , \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043d\u0430 filter_state \u0438 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 payload \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c json , \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 (id -\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432, \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f). \u042d\u0442\u043e\u0442 json \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0437\u0435\u0446 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 rison.\u00a0\u00a0<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/58b\/655\/0ac\/58b6550ac371fcf2c9f3ae342fc430bf.png\" width=\"1928\" height=\"860\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/58b\/655\/0ac\/58b6550ac371fcf2c9f3ae342fc430bf.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/58b\/655\/0ac\/58b6550ac371fcf2c9f3ae342fc430bf.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>\u0418\u0442\u0430\u043a, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0432\u0430\u043b\u0438\u0434\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 RISON.<\/strong><\/p>\n<p><strong>\u041a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 URL ?<\/strong><\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e , \u0447\u0442\u043e\u0431\u044b \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u0430\u043c\u0438 \u0441\u0441\u044b\u043b\u043a\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 RISON \u0441\u0442\u0430\u043b\u0430 \u043a\u043b\u0438\u043a\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u043d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 \u0435\u0451 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0432 HTML-\u0442\u044d\u0433 <a href=\"https:\/\/%D0%B2%D0%B0%D1%88%D0%B0%20%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0%20%D0%B2%20%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B5%20RISON\" rel=\"noopener noreferrer nofollow\"><code><strong> <\/strong><\/code><\/a><code><strong>&lt;a href=\"\u0432\u0430\u0448\u0430 \u0441\u0441\u044b\u043b\u043a\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 RISON\"&gt; \u0442\u0435\u043a\u0441\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 &lt;\/a&gt;<\/strong>  <\/code>  <a href=\"https:\/\/%D0%B2%D0%B0%D1%88%D0%B0%20%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0%20%D0%B2%20%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B5%20RISON\" rel=\"noopener noreferrer nofollow\"><strong> <\/strong><\/a><strong> <\/strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u043a\u043b\u0438\u043a\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<p><code>SELECT *, '&lt;a href=\"'  \"\u0432\u0430\u0448\u0430 \u0441\u0441\u044b\u043b\u043a\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 RISON\"  '\"&gt;'  '\u0438\u043c\u044f \u0441\u0441\u044b\u043b\u043a\u0438 , \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435'  '&lt;\/a&gt;' as link<\/code><\/p>\n<p><strong>\u0418\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/strong><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0434\u0432\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430:<\/p>\n<ul>\n<li>\n<p>\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 , \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u043e\u0442 \u0434\u0430\u0448\u0431\u043e\u0440\u0434, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0432 \u0434\u0435\u0442\u0441\u043a\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434.<\/p>\n<\/li>\n<\/ul>\n<p> \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u043e\u0439: <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/538\/f6a\/dd7\/538f6add7453a008ded8236be7f5705b.png\" width=\"975\" height=\"402\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/538\/f6a\/dd7\/538f6add7453a008ded8236be7f5705b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/538\/f6a\/dd7\/538f6add7453a008ded8236be7f5705b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<ul>\n<li>\n<p>\u0434\u0435\u0442\u0441\u043a\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 , \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u043e\u0442 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 , \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0441 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430.<\/p>\n<\/li>\n<\/ul>\n<p> \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u043e\u0439: <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/87c\/181\/60f\/87c18160f642891bc6e009204ef9483c.png\" width=\"975\" height=\"455\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/87c\/181\/60f\/87c18160f642891bc6e009204ef9483c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/87c\/181\/60f\/87c18160f642891bc6e009204ef9483c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0424\u0438\u043b\u044c\u0442\u0440\u044b \u0432 \u043e\u0431\u043e\u0438\u0445 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430\u0445 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435.<\/p>\n<p><strong>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u044f\u0442\u044c\u044e \u0442\u0438\u043f\u0430\u043c\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 , \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 \u0432 <\/strong>Superset.<\/p>\n<p><strong>\u041d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b:<\/strong><\/p>\n<ul>\n<li>\n<p><strong>\u0444\u0438\u043b\u044c\u0442\u0440 \u0442\u0438\u043f\u0430 Numerical range \u043f\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0443 amount_pct<\/strong><\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fac\/10b\/342\/fac10b342f2e92d008bdf9a3eea08dc8.png\" width=\"880\" height=\"825\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/fac\/10b\/342\/fac10b342f2e92d008bdf9a3eea08dc8.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fac\/10b\/342\/fac10b342f2e92d008bdf9a3eea08dc8.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p><strong>2 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0442\u0438\u043f\u0430 Value \u043f\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c country \u0438 car<\/strong><\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/87d\/ec6\/1a2\/87dec61a218bdc0170a24d0e36080a07.png\" width=\"878\" height=\"825\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/87d\/ec6\/1a2\/87dec61a218bdc0170a24d0e36080a07.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/87d\/ec6\/1a2\/87dec61a218bdc0170a24d0e36080a07.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p><strong>\u0444\u0438\u043b\u044c\u0442\u0440 \u0442\u0438\u043f\u0430 Time range, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0438\u043e\u0434 \u0434\u0430\u0442 \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0441 \u0434\u0430\u0442\u043e\u0439.<\/strong><\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f70\/a66\/371\/f70a663714aa20ea7cea0099b08173ee.png\" width=\"881\" height=\"828\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f70\/a66\/371\/f70a663714aa20ea7cea0099b08173ee.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f70\/a66\/371\/f70a663714aa20ea7cea0099b08173ee.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/li>\n<li>\n<p><strong>\u0444\u0438\u043b\u044c\u0442\u0440 \u0442\u0438\u043f\u0430 Time grain, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0433\u0440\u0430\u043d\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c (\u0434\u0435\u043d\u044c, \u043c\u0435\u0441\u044f\u0446, \u0433\u043e\u0434, \u043a\u0432\u0430\u0440\u0442\u0430\u043b \u0438 \u0442. \u0434..) \u0434\u043b\u044f \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0441 \u0434\u0430\u0442\u043e\u0439<\/strong>.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9c5\/0fd\/388\/9c50fd388943e7a5f708ec75dabff24b.png\" width=\"874\" height=\"827\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/9c5\/0fd\/388\/9c50fd388943e7a5f708ec75dabff24b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9c5\/0fd\/388\/9c50fd388943e7a5f708ec75dabff24b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/li>\n<li>\n<p><strong>\u0444\u0438\u043b\u044c\u0442\u0440 \u0442\u0438\u043f\u0430 Time column*, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0438\u0437 \u0434\u0432\u0443\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0441 \u0434\u0430\u0442\u043e\u0439, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0438 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e \u0434\u0430\u0442\u0430\u043c . \u0412 \u043d\u0430\u0448\u0435\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0441 \u0434\u0430\u0442\u0430\u043c\u0438: date <\/strong>\u0438 <strong>date_of_shipment<\/strong><\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/408\/31d\/c8e\/40831dc8e2c50ad031b5d4180b3fe17d.png\" width=\"878\" height=\"825\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/408\/31d\/c8e\/40831dc8e2c50ad031b5d4180b3fe17d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/408\/31d\/c8e\/40831dc8e2c50ad031b5d4180b3fe17d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/li>\n<\/ul>\n<div class=\"floating-image\">\n<p>*\u0444\u0438\u043b\u044c\u0442\u0440 Time column \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0441\u0434\u0435\u043b\u0430\u043d \u043d\u0430 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c rison_time_column \u0441 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u043e\u0439 time_column_rison \u00a0\u0438 \u0434\u0432\u0443\u043c\u044f \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 <strong>date <\/strong>\u0438 <strong>date_of_shipment<\/strong>\u00a0\u0438 \u0438\u043c\u0435\u0435\u0442 \u0442\u0438\u043f Value , \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 Superset 5.0 \u043c\u0430\u043a\u0440\u043e\u0441 jinja time_column \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u00a0time_column \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0430\u043a\u0440\u043e\u0441 filter_values.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4b3\/1d7\/ed7\/4b31d7ed720a807bb24b608becebcb0f.png\" width=\"883\" height=\"822\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/4b3\/1d7\/ed7\/4b31d7ed720a807bb24b608becebcb0f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4b3\/1d7\/ed7\/4b31d7ed720a807bb24b608becebcb0f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<ul>\n<li>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 rison_time_column \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d \u0444\u0438\u043b\u044c\u0442\u0440\u0430 time_column \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3f4\/40b\/629\/3f440b629540cc7c0eb6374ce817b0cc.png\" width=\"607\" height=\"143\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/3f4\/40b\/629\/3f440b629540cc7c0eb6374ce817b0cc.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3f4\/40b\/629\/3f440b629540cc7c0eb6374ce817b0cc.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/li>\n<\/ul>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0445 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0431\u0440\u043e\u0448\u0435\u043d\u044b \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b URL \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0432 RISON-\u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0432\u0441\u0435\u0445 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432. <\/p>\n<p><strong>\u041d\u0438\u0436\u0435 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432.<\/strong><\/p>\n<p>\u041d\u0430 \u0441\u043a\u0440\u0438\u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u044b<\/p>\n<p>\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 ( <strong>Values, Numerical range, Time column, Time grain, Time range<\/strong>) .<\/p>\n<p>\u042d\u0442\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u0440\u043e\u0448\u0435\u043d\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0432 \u0441\u0441\u044b\u043b\u043a\u0443 <strong>URL <\/strong>\u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <strong>RISON<\/strong>, \u0432\u0435\u0434\u0443\u0449\u0443\u044e \u043d\u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/196\/e45\/e80\/196e45e800b1788ecb8bf402428695b6.png\" width=\"1875\" height=\"888\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/196\/e45\/e80\/196e45e800b1788ecb8bf402428695b6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/196\/e45\/e80\/196e45e800b1788ecb8bf402428695b6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0414\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 \u0438\u0437 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u0441\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 , \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 (\u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u0432\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 , \u0447\u0442\u043e \u043d\u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b, \u043a\u0430\u043a \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435).<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d68\/d09\/4e8\/d68d094e867946c43b0e1d2db52f9982.png\" width=\"1904\" height=\"890\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d68\/d09\/4e8\/d68d094e867946c43b0e1d2db52f9982.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d68\/d09\/4e8\/d68d094e867946c43b0e1d2db52f9982.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/strong><\/p>\n<p>\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0447\u0430\u0440\u0442\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 , \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430\u0448\u0443 \u0441\u0441\u044b\u043b\u043a\u0443 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 rison \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bf3\/4a7\/947\/bf34a79477ec9723b9625e1683c8c689.png\" width=\"1906\" height=\"768\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/bf3\/4a7\/947\/bf34a79477ec9723b9625e1683c8c689.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bf3\/4a7\/947\/bf34a79477ec9723b9625e1683c8c689.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>\u0414\u0430\u0442\u0430\u0441\u0435\u0442 \u043b\u0435\u0436\u0430\u0449\u0438\u0439 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u0442\u043e\u0433\u043e \u0447\u0430\u0440\u0442\u0430 \u0438\u043c\u0435\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 rison_test \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<\/strong><\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p><code>-- \u0431\u0430\u0437\u043e\u0432\u044b\u0439 URL \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430; \u043a \u043d\u0435\u043c\u0443 \u0434\u043e\u043f\u0438\u0448\u0435\u043c rison-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 ?native_filters=(...) --<\/code><\/p>\n<p><code>-- \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434<\/code><\/p>\n<p><code>{% set host_link = 'http:\/\/localhost:8089\/superset\/dashboard\/68\/' %}<\/code><\/p>\n<p><code>\u00a0<\/code><\/p>\n<p><code>-- ====== COUNTRY (values) ====== --<\/code><\/p>\n<p><code>-- \u0447\u0438\u0442\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d \u0438\u0437 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 'country' (\u0435\u0441\u043b\u0438 \u043f\u0443\u0441\u0442\u043e \u2014 []) --<\/code><\/p>\n<p><code>{% set country_values = filter_values('country') or [] %}<\/code><\/p>\n<p><code>-- \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u0438\u0434\u0430 'A','B','C' \u0434\u043b\u044f rison-\u0444\u043e\u0440\u043c\u0430\u0442\u0430 val:!('A','B','C') --<\/code><\/p>\n<p><code>{% set joined_country_values = (\"'\" ~ (country_values|join(\"'',''\")) ~ \"'\")<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0 if (country_values and not (country_values|length == 1 and country_values[0] == ''))<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0 else '' %}<\/code><\/p>\n<p><code>-- \u0444\u043b\u0430\u0433: \u0435\u0441\u0442\u044c \u043b\u0438 \u0447\u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e country --<\/code><\/p>\n<p><code>{% set has_country = joined_country_values|length &gt; 0 %}<\/code><\/p>\n<p><code>-- ID \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0432 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 --<\/code><\/p>\n<p><code>{% set country_filter_id = 'NATIVE_FILTER-KCSiou_mmLo7GC0HhDgg2' %}<\/code><\/p>\n<p><code>-- \u0438\u043c\u044f \u043f\u043e\u043b\u044f, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0432 extraFormData.filters (col:...) --<\/code><\/p>\n<p><code>{% set country_filter_col = 'country' %}<\/code><\/p>\n<p><code>\u00a0<\/code><\/p>\n<p><code>-- ====== CAR (values) ====== --<\/code><\/p>\n<p><code>-- \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 'car' --<\/code><\/p>\n<p><code>{% set car_values = filter_values('car') or [] %}<\/code><\/p>\n<p><code>-- \u0441\u043a\u043b\u0435\u0439\u043a\u0430 \u0432 'Ford','BMW' ...; \u0435\u0441\u043b\u0438 \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u0443\u0441\u0442 \u2014 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c ''. --<\/code><\/p>\n<p><code>{% set joined_car_values = (\"'\" + (car_values|join(\"'',''\")) + \"'\")<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0 if (car_values and not (car_values|length == 1 and car_values[0] == ''))<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0 else '' %}<\/code><\/p>\n<p><code>-- \u0444\u043b\u0430\u0433 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 --<\/code><\/p>\n<p><code>{% set has_car = joined_car_values|length &gt; 0 %}<\/code><\/p>\n<p><code>-- ID \u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0430 car --<\/code><\/p>\n<p><code>{% set car_filter_id = 'NATIVE_FILTER-jnWaKxTGzde9QKlaWkhFw' %}<\/code><\/p>\n<p><code>{% set car_filter_col = 'car' %}<\/code><\/p>\n<p><code>\u00a0<\/code><\/p>\n<p><code>-- ====== AMOUNT_PCT (numerical range) ====== --<\/code><\/p>\n<p><code>-- \u00ab\u0441\u044b\u0440\u044b\u0435\u00bb \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 (\u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u0441 op\/val) --<\/code><\/p>\n<p><code>{% set amount_values = get_filters('amount_pct') %}<\/code><\/p>\n<p><code>-- \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u0433\u0440\u0430\u043d\u0438\u0446 (&gt;=, &lt;=) --<\/code><\/p>\n<p><code>{% set ns = namespace(amt_gte=none, amt_lte=none) %}<\/code><\/p>\n<p><code>-- \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f --<\/code><\/p>\n<p><code>{% for f in amount_values %}<\/code><\/p>\n<p><code>\u00a0 {% if f.get('op') == '&gt;=' %}{% set ns.amt_gte = f.get('val') %}<\/code><\/p>\n<p><code>\u00a0 {% elif f.get('op') == '&lt;=' %}{% set ns.amt_lte = f.get('val') %}<\/code><\/p>\n<p><code>\u00a0 {% endif %}<\/code><\/p>\n<p><code>{% endfor %}<\/code><\/p>\n<p><code>-- \u0444\u043b\u0430\u0433\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u043b\u0435\u0432\u043e\u0439\/\u043f\u0440\u0430\u0432\u043e\u0439 \u0433\u0440\u0430\u043d\u0438\u0446 --<\/code><\/p>\n<p><code>{% set has_amt_gte = ns.amt_gte is not none %}<\/code><\/p>\n<p><code>{% set has_amt_lte = ns.amt_lte is not none %}<\/code><\/p>\n<p><code>-- \u0444\u0438\u043b\u044c\u0442\u0440 \u0430\u043a\u0442\u0438\u0432\u0435\u043d, \u0435\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u0430 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0430 --<\/code><\/p>\n<p><code>{% set has_amt = has_amt_gte or has_amt_lte %}<\/code><\/p>\n<p><code>-- ID \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0438 \u0438\u043c\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u043d\u0430 \u0434\u0435\u0442\u0441\u043a\u043e\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 --<\/code><\/p>\n<p><code>{% set amount_pct_filter_id = 'NATIVE_FILTER-9mhVcLwwwcgcQGr9AAz6U' %}<\/code><\/p>\n<p><code>{% set amount_pct_filter_col = 'amount_pct' %}<\/code><\/p>\n<p><code>\u00a0<\/code><\/p>\n<p><code>-- ====== TIME RANGE (\u0441\u0442\u0440\u043e\u0433\u043e \u043e\u0431\u0435 \u0434\u0430\u0442\u044b \u0438\u043b\u0438 \u043f\u0443\u0441\u0442\u043e) ====== --<\/code><\/p>\n<p><code>-- \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 Superset: \u043d\u0430\u0447\u0430\u043b\u043e\/\u043a\u043e\u043d\u0435\u0446 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 --<\/code><\/p>\n<p><code>{% set tr_start = from_dttm or none %}<\/code><\/p>\n<p><code>{% set tr_end\u00a0\u00a0 = to_dttm\u00a0\u00a0 or none %}<\/code><\/p>\n<p><code>-- ID \u0438 \u00ab\u043a\u043b\u044e\u0447\u00bb \u0434\u043b\u044f extraFormData --<\/code><\/p>\n<p><code>{% set time_range_filter_id = 'NATIVE_FILTER-d1X38vvpWK7xi0TsRk2CD' %}<\/code><\/p>\n<p><code>{% set time_range_filter_col = 'time_range' %}<\/code><\/p>\n<p><code>-- \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u044b \u043e\u0431\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b --<\/code><\/p>\n<p><code>{% set has_tr = (tr_start is not none) and (tr_end is not none) %}<\/code><\/p>\n<p><code>-- \u0438\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 'start : end' \u0434\u043b\u044f rison --<\/code><\/p>\n<p><code>{% set tr_value = tr_start ~ ' : ' ~ tr_end if has_tr else '' %}<\/code><\/p>\n<p><code>\u00a0<\/code><\/p>\n<p><code>-- ====== TIME GRAIN ====== --<\/code><\/p>\n<p><code>-- \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 time grain (ISO-8601 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c) \u0438\u043b\u0438 '' --<\/code><\/p>\n<p><code>{% set tg = time_grain or '' %}<\/code><\/p>\n<p><code>-- ID \u0438 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f extraFormData --<\/code><\/p>\n<p><code>{% set time_grain_filter_id = 'NATIVE_FILTER-hfCh5sDNmhZqhx3uOWiVZ' %}<\/code><\/p>\n<p><code>{% set time_grain_filter_col = 'time_grain_sqla' %}<\/code><\/p>\n<p><code>-- \u0430\u043a\u0442\u0438\u0432\u0435\u043d \u043b\u0438 \u0444\u0438\u043b\u044c\u0442\u0440 --<\/code><\/p>\n<p><code>{% set has_tg = tg|length &gt; 0 %}<\/code><\/p>\n<p><code>-- \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0445 \u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439 \u043a \u043a\u043e\u0434\u0430\u043c grain --<\/code><\/p>\n<p><code>{% set tg_label_map = {<\/code><\/p>\n<p><code>\u00a0 'PT1S':'Second',<\/code><\/p>\n<p><code>\u00a0 'PT2S':'2 second',<\/code><\/p>\n<p><code>\u00a0 'PT5S':'5 second',<\/code><\/p>\n<p><code>\u00a0 'PT15S':'15 second',<\/code><\/p>\n<p><code>\u00a0 'PT30S':'30 second',<\/code><\/p>\n<p><code>\u00a0 'PT1M':'Minute',<\/code><\/p>\n<p><code>\u00a0 'PT5M':'5 minute',<\/code><\/p>\n<p><code>\u00a0 'PT10M':'10 minute',<\/code><\/p>\n<p><code>\u00a0 'PT15M':'15 minute',<\/code><\/p>\n<p><code>\u00a0 'PT0.5H':'30 minute',<\/code><\/p>\n<p><code>\u00a0 'PT1H':'Hour',<\/code><\/p>\n<p><code>\u00a0 'P1D':'Day',<\/code><\/p>\n<p><code>\u00a0 'P1W':'Week',<\/code><\/p>\n<p><code>\u00a0 'P1M':'Month',<\/code><\/p>\n<p><code>\u00a0 'P3M':'Quarter',<\/code><\/p>\n<p><code>\u00a0 'P1Y':'Year'<\/code><\/p>\n<p><code>} %}<\/code><\/p>\n<p><code>-- \u0447\u0438\u0442\u0430\u0435\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0434\u043b\u044f UI (\u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u0435 \u2014 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434) --<\/code><\/p>\n<p><code>{% set tg_label = tg_label_map.get(tg, tg) %}<\/code><\/p>\n<p><code>\u00a0<\/code><\/p>\n<p><code>-- ====== TIME COLUMN (granularity_sqla) ====== --<\/code><\/p>\n<p><code>-- \u0431\u0435\u0440\u0451\u043c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u00ab\u043a\u043e\u043b\u043e\u043d\u043a\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438\u00bb \u0438\u0437 \u0441\u043f\u0435\u0446. \u0444\u0438\u043b\u044c\u0442\u0440\u0430-\u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 --<\/code><\/p>\n<p><code>{% set tc = filter_values('time_column_rison')[0] or [] %}<\/code><\/p>\n<p><code>-- \u0430\u043a\u0442\u0438\u0432\u0435\u043d \u043b\u0438 \u0444\u0438\u043b\u044c\u0442\u0440 time column --<\/code><\/p>\n<p><code>{% set has_tc = tc|length &gt; 0 %}<\/code><\/p>\n<p><code>-- ID \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0438 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f extraFormData --<\/code><\/p>\n<p><code>{% set time_column_filter_id = 'NATIVE_FILTER-UEUKhTtR9gYdgLoXK5eyi' %}<\/code><\/p>\n<p><code>{% set time_column_filter_col = 'granularity_sqla' %}<\/code><\/p>\n<p><code>\u00a0<\/code><\/p>\n<p><code>-- ====== SQL: \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 CTE \u0441 min\/max \u0434\u043b\u044f amount_pct ====== --<\/code><\/p>\n<p><code>WITH min_max_amt AS (<\/code><\/p>\n<p><code>\u00a0 SELECT MIN(amount_pct) AS amt_min, MAX(amount_pct) AS amt_max<\/code><\/p>\n<p><code>\u00a0 FROM cars<\/code><\/p>\n<p><code>),<\/code><\/p>\n<p><code>-- ====== SQL: \u0441\u0431\u043e\u0440\u043a\u0430 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441 rison \u0432 CTE filters ====== --<\/code><\/p>\n<p><code>filters AS (<\/code><\/p>\n<p><code>SELECT<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0 -- \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u043c \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e URL; \u0434\u0430\u043b\u0435\u0435 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043e\u043f\u0438\u0448\u0435\u043c ?native_filters=(...) --<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0 '{{ host_link }}'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0 -- \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c rison, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 --<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0 {% if has_country or has_car or has_amt or has_tr or has_tg or has_tc %}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0 || '?native_filters=('<\/code><\/p>\n<p><code>\u00a0<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 -- --- COUNTRY --- --<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 {% if has_country %}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 || '{{ country_filter_id }}'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 || ':(extraFormData:(filters:!((col:{{ country_filter_col }},op:IN,val:!('<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0  ''''  {{ joined_country_values }}  ''''  '))))'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 || ',filterState:(label:''{{ country_values|join(\",\") }}'',value:!('<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0  ''''  {{ joined_country_values }}  ''''  ')),ownState:())'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 {% endif %}<\/code><\/p>\n<p><code>\u00a0<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 -- --- CAR --- --<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 {% if has_car %}{% if has_country %} || ',' {% endif %}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 || '{{ car_filter_id }}'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 || ':(extraFormData:(filters:!((col:{{ car_filter_col }},op:IN,val:!('<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0  ''''  {{ joined_car_values }}  ''''  '))))'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 || ',filterState:(label:''{{ car_values|join(\",\") }}'',value:!('<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0  ''''  {{ joined_car_values }}  ''''  ')),ownState:())'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 {% endif %}<\/code><\/p>\n<p><code>\u00a0<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 -- --- AMOUNT_PCT (&gt;= \/ &lt;=) --- --<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 {% if has_amt %}{% if has_country or has_car %} || ',' {% endif %}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 || '{{ amount_pct_filter_id }}'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 || ':(extraFormData:(filters:!('<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {% if has_amt_gte %}|| '(col:{{ amount_pct_filter_col }},op:''&gt;='',val:'  {{ ns.amt_gte }}  ')'{% endif %}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {% if has_amt_gte and has_amt_lte %} || ',' {% endif %}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {% if has_amt_lte %}|| '(col:{{ amount_pct_filter_col }},op:''&lt;='',val:'  {{ ns.amt_lte }}  ')'{% endif %}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 || '))'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 || ',filterState:('<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {% if has_amt_gte and has_amt_lte %}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  'value:!('  {{ ns.amt_gte }}  ','  {{ ns.amt_lte }}  '),label:'  ''''  {{ ns.amt_gte }}  ' \u2264 x \u2264 '  {{ ns.amt_lte }}  ''''<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {% elif has_amt_gte %}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  'value:!('  {{ ns.amt_gte }}  ','  mm.amt_max  '),label:'  ''''  {{ ns.amt_gte }}  ' \u2264 x \u2264 '  mm.amt_max  ''''<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {% else %}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  'value:!('  mm.amt_min  ','  {{ ns.amt_lte }}  '),label:'  ''''  mm.amt_min  ' \u2264 x \u2264 '  {{ ns.amt_lte }}  ''''<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {% endif %}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 || '),ownState:())'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 {% endif %}<\/code><\/p>\n<p><code>\u00a0<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 -- --- TIME RANGE (\u043e\u0431\u0435 \u0434\u0430\u0442\u044b) --- --<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 {% if has_tr %}{% if has_country or has_car or has_amt %} || ',' {% endif %}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 || '{{ time_range_filter_id }}'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0  ':(extraFormData:(time_range:'  ''''  '{{ tr_value }}'  '''' || '),'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0  'filterState:(value:'  ''''  '{{ tr_value }}'  '''' || '),ownState:())'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 {% endif %}<\/code><\/p>\n<p><code>\u00a0<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 -- --- TIME GRAIN --- --<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 {% if has_tg %}{% if has_country or has_car or has_amt or has_tr %} || ',' {% endif %}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 || '{{ time_grain_filter_id }}'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0  ':(extraFormData:({{ time_grain_filter_col }}:'  ''''  '{{ tg }}'  '''' || '),'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0  'filterState:(label:'  ''''  '{{ tg_label }}'  ''''  ',value:!('''  '{{ tg }}' || ''')),ownState:())'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 {% endif %}<\/code><\/p>\n<p><code>\u00a0<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 -- --- TIME COLUMN --- --<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 {% if has_tc %}{% if has_country or has_car or has_amt or has_tr or has_tg %} || ',' {% endif %}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 || '{{ time_column_filter_id }}'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0  ':(extraFormData:({{ time_column_filter_col }}:'  ''''  '{{ tc }}'  '''' || '),'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0  'filterState:(value:!('''  '{{ tc }}'  ''''  ')),ownState:())'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0\u00a0\u00a0 {% endif %}<\/code><\/p>\n<p><code>\u00a0<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0 || ')'<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0 {% endif %}<\/code><\/p>\n<p><code>\u00a0\u00a0\u00a0 AS link_plain<\/code><\/p>\n<p><code>FROM min_max_amt mm<\/code><\/p>\n<p><code>)<\/code><\/p>\n<p><code>-- \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u043b\u0435\u043a\u0442: \u043e\u0442\u0434\u0430\u0451\u043c \u00ab\u0441\u044b\u0440\u0443\u044e\u00bb \u0441\u0441\u044b\u043b\u043a\u0443 \u0438 HTML-\u044f\u043a\u043e\u0440\u044c \u0434\u043b\u044f \u043a\u043b\u0438\u043a\u0430 --<\/code><\/p>\n<p><code>SELECT *,<\/code><\/p>\n<p><code>\u00a0 '&lt;a href=\"'  link_plain  '\" target=\"_blank\"&gt;link&lt;\/a&gt;' AS link<\/code><\/p>\n<p><code>FROM filters;<\/code><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p> \u0412 \u043a\u043e\u0434\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0435 link_plain \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 RISON \u0438 \u043a\u043b\u0438\u043a\u0430\u0431\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 <code>\u00a0'&lt;a href=\"'  link_plain  '\" target=\"_blank\"&gt;link&lt;\/a&gt;' <\/code>    \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0435 link. <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0451.<\/p>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e, \u0447\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430! \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/946710\/\"> https:\/\/habr.com\/ru\/articles\/946710\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><strong><em>\u0418\u0437 \u043e\u0431\u0449\u0435\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u2014 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u0438\u043a\u043e\u043c (Deep-linking \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u043a\u0430\u043a \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 Drill-Through \u0432 Microsoft\u00a0 Power BI, <\/em>Tableau \u0438 Qlik<em>).<\/em><\/strong><\/p>\n<p>\u0417\u0430 \u043e\u0434\u0438\u043d \u043a\u043b\u0438\u043a \u0438\u0437 \u0441\u0432\u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u2014 \u043d\u0430 \u00ab\u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439\u00bb \u0441 \u0443\u0436\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a \u0432 Superset \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 URL-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 native_filters \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Rison \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 Jinja-\u043c\u0430\u043a\u0440\u043e\u0441\u0430\u043c\u0438.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439, \u043a\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430\u043c\u0438, \u0437\u043d\u0430\u0435\u0442 \u044d\u0442\u0443 \u0431\u043e\u043b\u044c: \u0441\u043c\u043e\u0442\u0440\u0438\u0448\u044c \u043d\u0430 \u0441\u0432\u043e\u0434\u043d\u044b\u0439 \u043e\u0442\u0447\u0451\u0442, \u043d\u0430\u0445\u043e\u0434\u0438\u0448\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u2014 \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0435 \u0436\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 \u0441 \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439. \u0412 Superset \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0440\u0443\u0442\u0438\u043d\u043d\u043e\u0433\u043e \u00ab\u043f\u0440\u043e\u043a\u043b\u0438\u043a\u0438\u0432\u0430\u043d\u0438\u044f\u00bb: \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c deep-linking \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 Rison \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Jinja. \u0422\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0443\u0436\u0435 \u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c (\u0441\u0442\u0440\u0430\u043d\u0430, \u043a\u043b\u0438\u0435\u043d\u0442, \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u0438 \u0442. \u0434.). \u0422\u0430\u043a\u043e\u0439 deep-linking \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0443 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435. \u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e\u00a0 \u0430\u043d\u0430\u043b\u043e\u0433 Drill-Through, \u0434\u0430\u0432\u043d\u043e \u0441\u0442\u0430\u0432\u0448\u0435\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0432 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0445 BI-\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u2014 \u043b\u0438\u0434\u0435\u0440\u0430\u0445 \u0440\u044b\u043d\u043a\u0430 \u2014 <strong>Microsoft Power BI, Tableau \u0438 Qlik<\/strong> , \u0445\u043e\u0442\u044f \u0432 Superset \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0443\u0441\u0438\u043b\u0438\u0439 \u0434\u043b\u044f \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u043c \u0432\u0438\u0434\u0435\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043d\u0435\u043a\u0438\u0439 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 (cars_rison_dash(parent)) , \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043a\u0440\u043e\u0441\u0441-\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432) \u0438 \u043f\u043e\u0441\u043b\u0435 \u043a\u043b\u0438\u043a\u0430 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u00bb \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 (cars_rison_dash(child)) \u0441 \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0438\u0437 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/68bff87ee72f11488bba2098\" data-style=\"\" id=\"68bff87ee72f11488bba2098\" width=\"\"><\/div>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 \u0442\u0435\u043e\u0440\u0438\u044e.<\/p>\n<p>\u0422\u043e\u0442, \u043a\u0442\u043e \u0437\u0430\u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 cars \u043e\u0442\u0441\u044e\u0434\u0430: https:\/\/anonymfile.com\/BXZKQ\/cars.rar\u00a0 (\u043d\u0430 \u043d\u0435\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0432\u0441\u0435 \u0447\u0430\u0440\u0442\u044b \u043e\u0431\u043e\u0438\u0445 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432).<\/p>\n<p><strong>\u0418\u0442\u0430\u043a, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0435\u043e\u0440\u0438\u0438.<\/strong><\/p>\n<p><strong>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 rison-\u0444\u043e\u0440\u043c\u0430\u0442 \u0438 \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Superset<\/strong><\/p>\n<p><strong>Rison<\/strong> \u2014 \u044d\u0442\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 <strong>JSON<\/strong>, \u043d\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 <strong>URL<\/strong>.<\/p>\n<p>\u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u044b <strong>Rison<\/strong>.<\/p>\n<p>\u0412 JSON \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<p><code><strong>[\u00abCanada\u00bb, \u00abChina\u00bb]<\/strong><\/code><\/p>\n<p>\u0412 Rison \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0437\u0430\u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e:<\/p>\n<p><code><strong>!('Canada','China')<\/strong><\/code><\/p>\n<p>\u041e\u0431\u044a\u0435\u043a\u0442 \u0432 JSON:<\/p>\n<p><code><strong>{<\/strong><\/code><\/p>\n<p><code><strong>\u00abname\u00bb: \u00abLacazette\u00bb,<\/strong><\/code><\/p>\n<p><code><strong>\u00abage\u00bb: 27,<\/strong><\/code><\/p>\n<p><code><strong>\u00abstats\u00bb: {<\/strong><\/code><\/p>\n<p><code><strong>\u00abappearances\u00bb: 20,<\/strong><\/code><\/p>\n<p><code><strong>\u00abgoals\u00bb: 7,<\/strong><\/code><\/p>\n<p><code><strong>\u00abassists\u00bb: 5<\/strong><\/code><\/p>\n<p><code><strong>}<\/strong><\/code><\/p>\n<p><code><strong>}<\/strong><\/code><\/p>\n<p>\u0412 Rison:<\/p>\n<p><code><strong>(name:Lacazette,age:27,stats:(appearances:20,goals:7,assists:5))<\/strong><\/code><\/p>\n<p><strong>\u0412 Rison <\/strong>\u0441\u043a\u043e\u0431\u043a\u0438 (&#8230;) \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 , \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 JSON \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 {\u2026}, \u0430 \u0432\u043e\u0441\u043a\u043b\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u043d\u0430\u043a \u0441 \u043a\u0440\u0443\u0433\u043b\u044b\u043c\u0438 \u0441\u043a\u043e\u0431\u043a\u0430\u043c\u0438 !(&#8230;) \u0432 <strong>Rison<\/strong> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 JSON \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 [\u2026].\u00a0<\/p>\n<p>\u0421\u0442\u0440\u043e\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0431\u0435\u0437 \u043a\u0430\u0432\u044b\u0447\u0435\u043a, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432 \u0438\u043b\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432\u0440\u043e\u0434\u0435 :, ().<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e Rison \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0432 URL \u043a\u0430\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u2014 \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f \u00ab\u043e\u043f\u0430\u0441\u043d\u044b\u0435\u00bb \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0438\u0445 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041d\u043e \u0441\u0430\u043c\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f <strong>Rison<\/strong> \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u0430 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0441\u0432\u0435\u0441\u0442\u0438 \u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 URL \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0432 Rison \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u00ab\u0447\u0438\u0441\u0442\u044b\u043c\u0438\u00bb \u0438 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u043c\u0438.<\/p>\n<p><strong>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0432 Rison \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441 \u044d\u0442\u0438\u043c \u0436\u0435 \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c URI (Uniform Resource Identifier)-\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432, \u043a\u0430\u0432\u044b\u0447\u0435\u043a, \u0437\u0430\u043f\u044f\u0442\u044b\u0445 \u0438 \u043f\u0440\u043e\u0447.<\/strong><\/p>\n<p>\u0427\u0438\u0441\u0442\u0430\u044f Rison-\u0441\u0442\u0440\u043e\u043a\u0430 \u0432 \u0430\u0434\u0440\u0435\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:<\/p>\n<p><code>http:\/\/localhost:8089\/superset\/dashboard\/67\/<strong>?native_filters=(country:!('Canada','China'),year:2024)\u00a0\u00a0<\/strong><\/code><strong>\u00a0<\/strong><\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0443\u0434\u043e\u0431\u043d\u043e \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 <strong>native_filters <\/strong>\u00a0\u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e , \u0447\u0442\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442\u0441\u044f<strong> country <\/strong>\u043f\u043e \u0434\u0432\u0443\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c<strong> &#8216;Canada&#8217;,&#8217;China&#8217; <\/strong>, \u0430 \u0433\u043e\u0434<strong> year=2024.<\/strong><\/p>\n<p>\u0422\u0430 \u0436\u0435 \u0441\u0430\u043c\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 URI-\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432 \u0430\u0434\u0440\u0435\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:<\/p>\n<p><code>http:\/\/localhost:8089\/superset\/dashboard\/67\/<strong>?native_filters=%28country%3A%21%28%27Canada%27%2C%27China%27%29%2Cyear%3A2024%29<\/strong><\/code><\/p>\n<p><strong>\u0417\u0434\u0435\u0441\u044c:<\/strong><\/p>\n<ul>\n<li>\n<p>( \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u0432 %28,<\/p>\n<\/li>\n<li>\n<p>: \u0432 %3A,<\/p>\n<\/li>\n<li>\n<p>! \u0432 %21,<\/p>\n<\/li>\n<li>\n<p>, \u0432 %2C,<\/p>\n<\/li>\n<li>\n<p>&#8216; \u0432 %27,<\/p>\n<\/li>\n<li>\n<p>) \u0432 %29.<\/p>\n<\/li>\n<\/ul>\n<p> \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0438\u0439 \u0438 \u043f\u043b\u043e\u0445\u043e \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 <strong>Rison<\/strong> \u0438 \u0446\u0435\u043d\u0435\u043d: \u043e\u043d \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c <strong>URL<\/strong> \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u043c \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0448\u0438\u043d\u0435, \u043d\u043e \u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443. <\/p>\n<p><strong>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u043b\u044f \u0447\u0435\u0433\u043e Rison \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Superset.<\/strong><\/p>\n<p>\u0412 <strong>Apache Superset<\/strong> \u044d\u0442\u043e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 URL. \u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0437\u0434\u0435\u0441\u044c \u2014 native_filters:<\/p>\n<ul>\n<li>\n<p>\u0432 \u043d\u0451\u043c \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0440\u0430\u043d\u0430, \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430);<\/p>\n<\/li>\n<li>\n<p>Rison \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0431\u0435\u0437 \u00ab\u0440\u0430\u0437\u0434\u0443\u0432\u0430\u043d\u0438\u044f\u00bb URL.<\/p>\n<\/li>\n<\/ul>\n<p> \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438: \u0432\u044b \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435 Rison-\u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 native_filters, \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0435\u0451 \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442, \u0430 <strong>Superset<\/strong> \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u00ab\u0437\u043d\u0430\u0435\u0442\u00bb, \u0447\u0442\u043e \u0432 <strong>native_filters<\/strong> \u043b\u0435\u0436\u0438\u0442 \u0438\u043c\u0435\u043d\u043d\u043e Rison, \u0438 \u0443\u043c\u0435\u0435\u0442 \u0435\u0451 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0438 \u0434\u0430\u043b\u0435\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430. <\/p>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c <strong>deep-links<\/strong>: \u0441\u0441\u044b\u043b\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434  \u0441 \u0443\u0436\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438.\u00a0<\/p>\n<p>\u041f\u043e\u0434\u044b\u0442\u043e\u0436\u0438\u0432\u0430\u044f \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043f\u043e Rison, \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438- \u043f\u0430\u0440\u0441\u0435\u0440\u044b <strong>Rison <\/strong>\u0434\u043b\u044f \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f: <strong>JavaScript<\/strong>, <strong>Python<\/strong>, <strong>Golang \u0438 \u0434\u0440<\/strong>.<\/p>\n<p><strong>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u0432 Rison vs JSON \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0438\u0436\u0435.<\/strong><\/p>\n<figure class=\"full-width\"><\/figure>\n<figure class=\"full-width\"><\/figure>\n<p><strong>\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431 \u0441 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0430 <\/strong><a href=\"https:\/\/github.com\/Nanonid\/rison\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/Nanonid\/rison<\/a><\/p>\n<p><strong>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Jinja Template \u0438 \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Apache Superset.<\/strong><\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u043b\u043e\u043a \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0432\u00a0 SQL \u2013 \u0437\u0430\u043f\u0440\u043e\u0441.<\/p>\n<p>\u0412 Apache Superset \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440 \u043d\u0430 Python <strong>Jinja<\/strong>. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u043f\u0440\u044f\u043c\u043e \u0432 SQL \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 SQL -\u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u00ab\u0436\u0438\u0432\u044b\u043c\u00bb \u2014 \u043e\u043d \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0432\u044b\u0431\u043e\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0445 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430.<\/p>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438, Jinja \u0432 Superset \u2014 \u044d\u0442\u043e \u0441\u043b\u043e\u0439 \u043c\u0435\u0436\u0434\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0438 SQL:<\/p>\n<ul>\n<li>\n<p>\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043a\u043b\u0438\u043a\u0430\u0435\u0442 \u0444\u0438\u043b\u044c\u0442\u0440;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u043c\u0430\u043a\u0440\u043e\u0441\u044b Jinja (filter_values, get_filters, from_dttm, to_dttm \u0438 \u0434\u0440\u0443\u0433\u0438\u0435) \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 SQL;<\/p>\n<\/li>\n<li>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 SQL \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0434\u043b\u044f Rison, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 deep-linking.<\/p>\n<\/li>\n<\/ul>\n<p> \u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e SQL-\u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 Jinja \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 Superset: <\/p>\n<p>\ud83d\udc49 <a href=\"https:\/\/superset.apache.org\/docs\/configuration\/sql-templating\/\" rel=\"noopener noreferrer nofollow\">https:\/\/superset.apache.org\/docs\/configuration\/sql-templating\/<\/a><\/p>\n<p>\u0425\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0430\u0437\u0431\u043e\u0440\u044b \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0437\u0434\u0435\u0441\u044c:<br \/> \ud83d\udc49 <a href=\"https:\/\/preset.io\/blog\/intro-jinja-templating-apache-superset\/\" rel=\"noopener noreferrer nofollow\">https:\/\/preset.io\/blog\/intro-jinja-templating-apache-superset\/<\/a><\/p>\n<p>\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Jinja \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0439:<\/p>\n<ul>\n<li>\n<p>{{ &#8230; }} \u2014 \u0432\u044b\u0432\u043e\u0434 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0438\u043b\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>{% &#8230; %} \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 (\u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u0446\u0438\u043a\u043b\u044b, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435);<\/p>\n<\/li>\n<li>\n<p>{# &#8230; #} \u2014 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<p> \u0412 \u0446\u0435\u043b\u044f\u0445 \u043d\u0430\u0448\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0432 <strong>Superset \u043c\u0430\u043a\u0440\u043e\u0441\u044b Jinja<\/strong><\/p>\n<p><strong>1) filter_values(name) \u2192 list\u00a0 <\/strong>: [\u2018value1\u2019 ,\u2026 , \u2019valueN\u2019].<\/p>\n<p><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442:<\/strong> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u0438\u0439 <strong>\u0441\u043f\u0438\u0441\u043e\u043a \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439<\/strong> \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0442\u0438\u043f\u0430 Value. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>name<\/strong> \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 <strong>filter_values<\/strong> \u2013 \u044d\u0442\u043e \u0438\u043c\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0434\u0435\u043b\u0430\u043d \u0444\u0438\u043b\u044c\u0442\u0440.<br \/> <strong>\u041a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:<\/strong> \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f IN (&#8230;) \u0438\u043b\u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u043b\u044f Rison.<\/p>\n<p><strong>2) get_filters(name) \u2192 list[dict]<\/strong><\/p>\n<p><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442:<\/strong> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <strong>\u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0441\u043b\u043e\u0432\u0438\u0439<\/strong> \u043f\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0434\u0435\u0442\u0430\u043b\u044f\u043c\u0438: \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 (op) \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (val). \u041f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432: \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043d\u044b\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0442\u0438\u043f\u0430 <strong>Numerical Range<\/strong>. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>name<\/strong> \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 <strong>get_filters<\/strong> \u2013 \u044d\u0442\u043e \u0438\u043c\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0434\u0435\u043b\u0430\u043d \u0444\u0438\u043b\u044c\u0442\u0440.<\/p>\n<p><strong>\u0417\u0430\u0447\u0435\u043c:<\/strong> \u043c\u043e\u0436\u043d\u043e \u0433\u0438\u0431\u043a\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c, \u043a\u0430\u043a\u0430\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0433\u0440\u0430\u043d\u044c\/\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0432\u044b\u0431\u0440\u0430\u043d \u043d\u0430 <strong>Numerical Range<\/strong> -\u0444\u0438\u043b\u044c\u0442\u0440\u0435, \u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 Rison-\u0443\u0437\u0435\u043b \u0438\u043b\u0438 SQL-\u0443\u0441\u043b\u043e\u0432\u0438\u0435.<\/p>\n<p><strong>3) from_dttm \/ to_dttm \u2192 str (\u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u0430\u0442)<\/strong><\/p>\n<p><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442:<\/strong> \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 <strong>\u043d\u0438\u0436\u043d\u044e\u044e\/\u0432\u0435\u0440\u0445\u043d\u044e\u044e \u0433\u0440\u0430\u043d\u0438\u0446\u044b<\/strong> \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 (\u0444\u0438\u043b\u044c\u0442\u0440 \u0442\u0438\u043f\u0430 <strong>Time Range<\/strong>) \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0433\u043e\u0442\u043e\u0432\u043e\u043c \u043a \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0432 SQL.<\/p>\n<p><strong>4) time_grain \u2192 str (ISO-8601 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c)<\/strong><\/p>\n<p><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442:<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 <strong>time grain<\/strong> (\u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0448\u0430\u0433 \u0432\u0440\u0435\u043c\u0435\u043d\u0438), \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 P1D (\u0434\u0435\u043d\u044c), P1W (\u043d\u0435\u0434\u0435\u043b\u044f), P1M (\u043c\u0435\u0441\u044f\u0446), PT1H (\u0447\u0430\u0441) \u0438 \u0442. \u0434.<\/p>\n<p><strong>\u0417\u0430\u0447\u0435\u043c:<\/strong> \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u0443\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c time_grain \u043d\u0438\u0436\u0435 \u043f\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0443 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 extraFormData Rison).<\/p>\n<p><strong>5) \u0412\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435: namespace(&#8230;) (Jinja-\u0444\u0438\u0447\u0430)<\/strong><\/p>\n<p><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442: <\/strong>\u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u0446\u0438\u043a\u043b\u0430.<\/p>\n<p><strong>\u0417\u0430\u0447\u0435\u043c: <\/strong>Jinja \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435 \u0434\u0430\u0451\u0442 \u00ab\u0432\u044b\u043d\u0435\u0441\u0442\u0438\u00bb \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u0446\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u044b\u043c set; namespace \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.<\/p>\n<p><strong>\u041d\u0443, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u0435\u043e\u0440\u0438\u0438 \u2014 \u043f\u043e\u0440\u0430 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430.<\/strong><\/p>\n<p><strong>\u0424\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043a\u0435\u0439\u0441\u0430:<\/strong><\/p>\n<ul>\n<li>\n<p>\u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u043a \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0443 \u0441 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u043c \u0441 \u043a\u0435\u043c-\u0442\u043e \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 Superset \u043e\u0442 3\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0432\u044b\u0448\u0435 <\/strong>(\u0432\u0441\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0432 \u044d\u0442\u043e\u043c \u043a\u0435\u0439\u0441\u0435 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 4 \u0438 5)<\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u043e\u043a\u0438\u043d\u0443\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043f\u043e \u044d\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434.<\/p>\n<p>\u0414\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>native_filters <\/strong>\u0432 <strong>URL<\/strong>&#8212; \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>(\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0442\u0443\u0442 : <a href=\"https:\/\/www.blef.fr\/superset-filters-in-url\/\" rel=\"noopener noreferrer nofollow\">https:\/\/www.blef.fr\/superset-filters-in-url\/<\/a> ):<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0422\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c <strong>native_filters_key<\/strong> \u0432 URL. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u043c\u0438 \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0431\u044b\u043b\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 <strong>key_value<\/strong>.<\/p>\n<p><strong>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 Rison-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 native_filters<\/strong><\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 URL, Superset \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 native_filters=(&#8230;). \u0412\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043a\u043b\u044e\u0447\u0438, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0435 \u0437\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.<\/p>\n<p>\ud83d\udc49<strong>__cache <\/strong>(\u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u0435\u0439\u0441\u0435 \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043b\u044e\u0447)<\/p>\n<p>\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043a\u044d\u0448 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u00ab\u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u0443\u044e\u00bb \u043f\u043e\u0434\u043f\u0438\u0441\u044c (label) \u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (value). Superset \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u044d\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430.<\/p>\n<p>\ud83d\udc49<strong>extraFormData<\/strong><\/p>\n<p>\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u043b\u043e\u043a, \u0433\u0434\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f, <strong>\u043a\u0430\u043a\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0432 SQL<\/strong>.<\/p>\n<ul>\n<li>\n<p>filters \u2192 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u0432\u0438\u0434\u0430 (col:, op:&lt;\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440&gt;, val:&lt;\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f&gt;).<\/p>\n<\/li>\n<li>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u0441\u044e\u0434\u0430 Superset \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u043a\u0430\u043a\u0443\u044e \u043a\u043e\u043b\u043e\u043d\u043a\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0438 \u043a\u0430\u043a\u0438\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\ud83d\udc49<strong>filterState<\/strong><\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442:<\/p>\n<ul>\n<li>\n<p>label \u2014 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 UI (\u043e\u0431\u044b\u0447\u043d\u043e<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-474937","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/474937","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=474937"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/474937\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=474937"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=474937"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=474937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}