deploying docs: docs: add lost _filters param docs (#23316) (apache/superset@eb3d5602c2a0dc7e280576e702540c6e86e83cee)
diff --git a/404.html b/404.html
index 7981886..796d845 100644
--- a/404.html
+++ b/404.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/js/18cf5ace.400fd8a9.js b/assets/js/18cf5ace.400fd8a9.js
new file mode 100644
index 0000000..5875674
--- /dev/null
+++ b/assets/js/18cf5ace.400fd8a9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[4343],{90362:function(e,t,n){n.r(t),n.d(t,{assets:function(){return s},contentTitle:function(){return l},default:function(){return m},frontMatter:function(){return i},metadata:function(){return o},toc:function(){return p}});var a=n(83117),r=(n(67294),n(3905));const i={title:"SQL Templating",hide_title:!0,sidebar_position:10,version:1},l=void 0,o={unversionedId:"installation/sql-templating",id:"installation/sql-templating",title:"SQL Templating",description:"SQL Templating",source:"@site/docs/installation/sql-templating.mdx",sourceDirName:"installation",slug:"/installation/sql-templating",permalink:"/docs/installation/sql-templating",draft:!1,editUrl:"https://github.com/apache/superset/tree/master/docs/docs/installation/sql-templating.mdx",tags:[],version:"current",sidebarPosition:10,frontMatter:{title:"SQL Templating",hide_title:!0,sidebar_position:10,version:1},sidebar:"tutorialSidebar",previous:{title:"Alerts and Reports",permalink:"/docs/installation/alerts-reports"},next:{title:"Running on Kubernetes",permalink:"/docs/installation/running-on-kubernetes"}},s={},p=[{value:"SQL Templating",id:"sql-templating",level:2},{value:"Jinja Templates",id:"jinja-templates",level:3},{value:"Available Macros",id:"available-macros",level:3}],u={toc:p},c="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"sql-templating"},"SQL Templating"),(0,r.kt)("h3",{id:"jinja-templates"},"Jinja Templates"),(0,r.kt)("p",null,"SQL Lab and Explore supports ",(0,r.kt)("a",{parentName:"p",href:"https://jinja.palletsprojects.com/en/2.11.x/"},"Jinja templating")," in queries.\nTo enable templating, the ",(0,r.kt)("inlineCode",{parentName:"p"},"ENABLE_TEMPLATE_PROCESSING")," ",(0,r.kt)("a",{parentName:"p",href:"https://superset.apache.org/docs/installation/configuring-superset#feature-flags"},"feature flag")," needs to be enabled in\n",(0,r.kt)("inlineCode",{parentName:"p"},"superset_config.py"),". When templating is enabled, python code can be embedded in virtual datasets and\nin Custom SQL in the filter and metric controls in Explore. By default, the following variables are\nmade available in the Jinja context:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"columns"),": columns which to group by in the query"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"filter"),": filters applied in the query"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"from_dttm"),": start ",(0,r.kt)("inlineCode",{parentName:"li"},"datetime")," value from the selected time range (",(0,r.kt)("inlineCode",{parentName:"li"},"None")," if undefined)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"to_dttm"),": end ",(0,r.kt)("inlineCode",{parentName:"li"},"datetime")," value from the selected time range (",(0,r.kt)("inlineCode",{parentName:"li"},"None")," if undefined)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"groupby"),": columns which to group by in the query (deprecated)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"metrics"),": aggregate expressions in the query"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"row_limit"),": row limit of the query"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"row_offset"),": row offset of the query"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"table_columns"),": columns available in the dataset"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"time_column"),": temporal column of the query (",(0,r.kt)("inlineCode",{parentName:"li"},"None")," if undefined)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"time_grain"),": selected time grain (",(0,r.kt)("inlineCode",{parentName:"li"},"None")," if undefined)")),(0,r.kt)("p",null,"For example, to add a time range to a virtual dataset, you can write the following:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT *\nFROM tbl\nWHERE dttm_col > '{{ from_dttm }}' and dttm_col < '{{ to_dttm }}'\n")),(0,r.kt)("p",null,"You can also use ",(0,r.kt)("a",{parentName:"p",href:"https://jinja.palletsprojects.com/en/2.11.x/templates/#tests"},"Jinja's logic"),"\nto make your query robust to clearing the timerange filter:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT *\nFROM tbl\nWHERE (\n    {% if from_dttm is not none %}\n        dttm_col > '{{ from_dttm }}' AND\n    {% endif %}\n    {% if to_dttm is not none %}\n        dttm_col < '{{ to_dttm }}' AND\n    {% endif %}\n    true\n)\n")),(0,r.kt)("p",null,"Note how the Jinja parameters are called within double brackets in the query, and without in the\nlogic blocks."),(0,r.kt)("p",null,"To add custom functionality to the Jinja context, you need to overload the default Jinja\ncontext in your environment by defining the ",(0,r.kt)("inlineCode",{parentName:"p"},"JINJA_CONTEXT_ADDONS")," in your superset configuration\n(",(0,r.kt)("inlineCode",{parentName:"p"},"superset_config.py"),"). Objects referenced in this dictionary are made available for users to use\nwhere the Jinja context is made available."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-python"},"JINJA_CONTEXT_ADDONS = {\n    'my_crazy_macro': lambda x: x*2,\n}\n")),(0,r.kt)("p",null,"Default values for jinja templates can be specified via ",(0,r.kt)("inlineCode",{parentName:"p"},"Parameters")," menu in the SQL Lab user interface.\nIn the UI you can assign a set of parameters as JSON"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n  "my_table": "foo"\n}\n')),(0,r.kt)("p",null,"The parameters become available in your SQL (example: ",(0,r.kt)("inlineCode",{parentName:"p"},"SELECT * FROM {{ my_table }}")," ) by using Jinja templating syntax.\nSQL Lab template parameters are stored with the dataset as ",(0,r.kt)("inlineCode",{parentName:"p"},"TEMPLATE PARAMETERS"),"."),(0,r.kt)("p",null,"There is a special ",(0,r.kt)("inlineCode",{parentName:"p"},"_filters")," parameter which can be used to test filters used in the jinja template."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n  "_filters": [\n    {\n      "col": "action_type",\n      "op": "IN",\n      "val": ["sell", "buy"]\n    }\n  ]\n}\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT action, count(*) as times\nFROM logs\nWHERE action in {{ filter_values('action_type'))|where_in }}\nGROUP BY action\n")),(0,r.kt)("p",null,"Note ",(0,r.kt)("inlineCode",{parentName:"p"},"_filters")," is not stored with the dataset. It's only used within the SQL Lab UI."),(0,r.kt)("p",null,"Besides default Jinja templating, SQL lab also supports self-defined template processor by setting\nthe ",(0,r.kt)("inlineCode",{parentName:"p"},"CUSTOM_TEMPLATE_PROCESSORS")," in your superset configuration. The values in this dictionary\noverwrite the default Jinja template processors of the specified database engine. The example below\nconfigures a custom presto template processor which implements its own logic of processing macro\ntemplate with regex parsing. It uses the ",(0,r.kt)("inlineCode",{parentName:"p"},"$")," style macro instead of ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ }}")," style in Jinja\ntemplating."),(0,r.kt)("p",null,"By configuring it with ",(0,r.kt)("inlineCode",{parentName:"p"},"CUSTOM_TEMPLATE_PROCESSORS"),", a SQL template on a presto database is\nprocessed by the custom one rather than the default one."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-python"},'def DATE(\n    ts: datetime, day_offset: SupportsInt = 0, hour_offset: SupportsInt = 0\n) -> str:\n    """Current day as a string."""\n    day_offset, hour_offset = int(day_offset), int(hour_offset)\n    offset_day = (ts + timedelta(days=day_offset, hours=hour_offset)).date()\n    return str(offset_day)\n\nclass CustomPrestoTemplateProcessor(PrestoTemplateProcessor):\n    """A custom presto template processor."""\n\n    engine = "presto"\n\n    def process_template(self, sql: str, **kwargs) -> str:\n        """Processes a sql template with $ style macro using regex."""\n        # Add custom macros functions.\n        macros = {\n            "DATE": partial(DATE, datetime.utcnow())\n        }  # type: Dict[str, Any]\n        # Update with macros defined in context and kwargs.\n        macros.update(self.context)\n        macros.update(kwargs)\n\n        def replacer(match):\n            """Expand $ style macros with corresponding function calls."""\n            macro_name, args_str = match.groups()\n            args = [a.strip() for a in args_str.split(",")]\n            if args == [""]:\n                args = []\n            f = macros[macro_name[1:]]\n            return f(*args)\n\n        macro_names = ["$" + name for name in macros.keys()]\n        pattern = r"(%s)\\s*\\(([^()]*)\\)" % "|".join(map(re.escape, macro_names))\n        return re.sub(pattern, replacer, sql)\n\nCUSTOM_TEMPLATE_PROCESSORS = {\n    CustomPrestoTemplateProcessor.engine: CustomPrestoTemplateProcessor\n}\n')),(0,r.kt)("p",null,"SQL Lab also includes a live query validation feature with pluggable backends. You can configure\nwhich validation implementation is used with which database engine by adding a block like the\nfollowing to your configuration file:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-python"},"FEATURE_FLAGS = {\n    'SQL_VALIDATORS_BY_ENGINE': {\n        'presto': 'PrestoDBSQLValidator',\n    }\n}\n")),(0,r.kt)("p",null,"The available validators and names can be found in\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/apache/superset/tree/master/superset/sql_validators"},"sql_validators"),"."),(0,r.kt)("h3",{id:"available-macros"},"Available Macros"),(0,r.kt)("p",null,"In this section, we'll walkthrough the pre-defined Jinja macros in Superset."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Current Username")),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ current_username() }}")," macro returns the username of the currently logged in user."),(0,r.kt)("p",null,"If you have caching enabled in your Superset configuration, then by default the ",(0,r.kt)("inlineCode",{parentName:"p"},"username")," value will be used\nby Superset when calculating the cache key. A cache key is a unique identifier that determines if there's a\ncache hit in the future and Superset can retrieve cached data."),(0,r.kt)("p",null,"You can disable the inclusion of the ",(0,r.kt)("inlineCode",{parentName:"p"},"username")," value in the calculation of the\ncache key by adding the following parameter to your Jinja code:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"{{ current_username(add_to_cache_keys=False) }}\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Current User ID")),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ current_user_id() }}")," macro returns the user_id of the currently logged in user."),(0,r.kt)("p",null,"If you have caching enabled in your Superset configuration, then by default the ",(0,r.kt)("inlineCode",{parentName:"p"},"user_id")," value will be used\nby Superset when calculating the cache key. A cache key is a unique identifier that determines if there's a\ncache hit in the future and Superset can retrieve cached data."),(0,r.kt)("p",null,"You can disable the inclusion of the ",(0,r.kt)("inlineCode",{parentName:"p"},"user_id")," value in the calculation of the\ncache key by adding the following parameter to your Jinja code:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"{{ current_user_id(add_to_cache_keys=False) }}\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Custom URL Parameters")),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ url_param('custom_variable') }}")," macro lets you define arbitrary URL\nparameters and reference them in your SQL code."),(0,r.kt)("p",null,"Here's a concrete example:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"You write the following query in SQL Lab:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT count(*)\nFROM ORDERS\nWHERE country_code = '{{ url_param('countrycode') }}'\n"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"You're hosting Superset at the domain ",(0,r.kt)("a",{parentName:"p",href:"http://www.example.com"},"www.example.com")," and you send your\ncoworker in Spain the following SQL Lab URL ",(0,r.kt)("inlineCode",{parentName:"p"},"www.example.com/superset/sqllab?countrycode=ES"),"\nand your coworker in the USA the following SQL Lab URL ",(0,r.kt)("inlineCode",{parentName:"p"},"www.example.com/superset/sqllab?countrycode=US"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For your coworker in Spain, the SQL Lab query will be rendered as:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT count(*)\nFROM ORDERS\nWHERE country_code = 'ES'\n"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For your coworker in the USA, the SQL Lab query will be rendered as:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT count(*)\nFROM ORDERS\nWHERE country_code = 'US'\n")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Explicitly Including Values in Cache Key")),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ cache_key_wrapper() }}")," function explicitly instructs Superset to add a value to the\naccumulated list of values used in the calculation of the cache key."),(0,r.kt)("p",null,"This function is only needed when you want to wrap your own custom function return values\nin the cache key. You can gain more context\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/apache/superset/blob/efd70077014cbed62e493372d33a2af5237eaadf/superset/jinja_context.py#L133-L148"},"here"),"."),(0,r.kt)("p",null,"Note that this function powers the caching of the ",(0,r.kt)("inlineCode",{parentName:"p"},"user_id")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"username")," values\nin the ",(0,r.kt)("inlineCode",{parentName:"p"},"current_user_id()")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"current_username()")," function calls (if you have caching enabled)."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Filter Values")),(0,r.kt)("p",null,"You can retrieve the value for a specific filter as a list using ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ filter_values() }}"),"."),(0,r.kt)("p",null,"This is useful if:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"You want to use a filter component to filter a query where the name of filter component column doesn't match the one in the select statement"),(0,r.kt)("li",{parentName:"ul"},"You want to have the ability for filter inside the main query for performance purposes")),(0,r.kt)("p",null,"Here's a concrete example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT action, count(*) as times\nFROM logs\nWHERE\n    action in {{ filter_values('action_type')|where_in }}\nGROUP BY action\n")),(0,r.kt)("p",null,"There ",(0,r.kt)("inlineCode",{parentName:"p"},"where_in")," filter converts the list of values from ",(0,r.kt)("inlineCode",{parentName:"p"},"filter_values('action_type')")," into a string suitable for an ",(0,r.kt)("inlineCode",{parentName:"p"},"IN")," expression."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Filters for a Specific Column")),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ get_filters() }}")," macro returns the filters applied to a given column. In addition to\nreturning the values (similar to how ",(0,r.kt)("inlineCode",{parentName:"p"},"filter_values()")," does), the ",(0,r.kt)("inlineCode",{parentName:"p"},"get_filters()")," macro\nreturns the operator specified in the Explore UI."),(0,r.kt)("p",null,"This is useful if:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"You want to handle more than the IN operator in your SQL clause"),(0,r.kt)("li",{parentName:"ul"},"You want to handle generating custom SQL conditions for a filter"),(0,r.kt)("li",{parentName:"ul"},"You want to have the ability to filter inside the main query for speed purposes")),(0,r.kt)("p",null,"Here's a concrete example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"}," WITH RECURSIVE\n    superiors(employee_id, manager_id, full_name, level, lineage) AS (\n    SELECT\n        employee_id,\n        manager_id,\n        full_name,\n    1 as level,\n    employee_id as lineage\n    FROM\n        employees\n    WHERE\n    1=1\n\n    {# Render a blank line #}\n    {%- for filter in get_filters('full_name', remove_filter=True) -%}\n\n    {%- if filter.get('op') == 'IN' -%}\n        AND\n        full_name IN {{ filter.get('val')|where_in }}\n    {%- endif -%}\n\n    {%- if filter.get('op') == 'LIKE' -%}\n        AND\n        full_name LIKE {{ \"'\" + filter.get('val') + \"'\" }}\n    {%- endif -%}\n\n    {%- endfor -%}\n    UNION ALL\n        SELECT\n            e.employee_id,\n            e.manager_id,\n            e.full_name,\n    s.level + 1 as level,\n    s.lineage\n        FROM\n            employees e,\n        superiors s\n        WHERE s.manager_id = e.employee_id\n    )\n\n    SELECT\n    employee_id, manager_id, full_name, level, lineage\n    FROM\n    superiors\n    order by lineage, level\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Datasets")),(0,r.kt)("p",null,"It's possible to query physical and virtual datasets using the ",(0,r.kt)("inlineCode",{parentName:"p"},"dataset")," macro. This is useful if you've defined computed columns and metrics on your datasets, and want to reuse the definition in adhoc SQL Lab queries."),(0,r.kt)("p",null,"To use the macro, first you need to find the ID of the dataset. This can be done by going to the view showing all the datasets, hovering over the dataset you're interested in, and looking at its URL. For example, if the URL for a dataset is ",(0,r.kt)("a",{parentName:"p",href:"https://superset.example.org/explore/?dataset_type=table&dataset_id=42"},"https://superset.example.org/explore/?dataset_type=table&dataset_id=42")," its ID is 42."),(0,r.kt)("p",null,"Once you have the ID you can query it as if it were a table:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"SELECT * FROM {{ dataset(42) }} LIMIT 10\n")),(0,r.kt)("p",null,"If you want to select the metric definitions as well, in addition to the columns, you need to pass an additional keyword argument:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"SELECT * FROM {{ dataset(42, include_metrics=True) }} LIMIT 10\n")),(0,r.kt)("p",null,"Since metrics are aggregations, the resulting SQL expression will be grouped by all non-metric columns. You can specify a subset of columns to group by instead:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'SELECT * FROM {{ dataset(42, include_metrics=True, columns=["ds", "category"]) }} LIMIT 10\n')))}m.isMDXComponent=!0},3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return f}});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=p(n),d=r,f=c["".concat(s,".").concat(d)]||c[d]||m[d]||i;return n?a.createElement(f,l(l({ref:t},u),{},{components:n})):a.createElement(f,l({ref:t},u))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=d;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:r,l[1]=o;for(var p=2;p<i;p++)l[p]=n[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,n)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/assets/js/18cf5ace.a53db9e9.js b/assets/js/18cf5ace.a53db9e9.js
deleted file mode 100644
index 4b2ee0a..0000000
--- a/assets/js/18cf5ace.a53db9e9.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[4343],{90362:function(e,t,n){n.r(t),n.d(t,{assets:function(){return s},contentTitle:function(){return l},default:function(){return m},frontMatter:function(){return i},metadata:function(){return o},toc:function(){return p}});var a=n(83117),r=(n(67294),n(3905));const i={title:"SQL Templating",hide_title:!0,sidebar_position:10,version:1},l=void 0,o={unversionedId:"installation/sql-templating",id:"installation/sql-templating",title:"SQL Templating",description:"SQL Templating",source:"@site/docs/installation/sql-templating.mdx",sourceDirName:"installation",slug:"/installation/sql-templating",permalink:"/docs/installation/sql-templating",draft:!1,editUrl:"https://github.com/apache/superset/tree/master/docs/docs/installation/sql-templating.mdx",tags:[],version:"current",sidebarPosition:10,frontMatter:{title:"SQL Templating",hide_title:!0,sidebar_position:10,version:1},sidebar:"tutorialSidebar",previous:{title:"Alerts and Reports",permalink:"/docs/installation/alerts-reports"},next:{title:"Running on Kubernetes",permalink:"/docs/installation/running-on-kubernetes"}},s={},p=[{value:"SQL Templating",id:"sql-templating",level:2},{value:"Jinja Templates",id:"jinja-templates",level:3},{value:"Available Macros",id:"available-macros",level:3}],u={toc:p},c="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"sql-templating"},"SQL Templating"),(0,r.kt)("h3",{id:"jinja-templates"},"Jinja Templates"),(0,r.kt)("p",null,"SQL Lab and Explore supports ",(0,r.kt)("a",{parentName:"p",href:"https://jinja.palletsprojects.com/en/2.11.x/"},"Jinja templating")," in queries.\nTo enable templating, the ",(0,r.kt)("inlineCode",{parentName:"p"},"ENABLE_TEMPLATE_PROCESSING")," ",(0,r.kt)("a",{parentName:"p",href:"https://superset.apache.org/docs/installation/configuring-superset#feature-flags"},"feature flag")," needs to be enabled in\n",(0,r.kt)("inlineCode",{parentName:"p"},"superset_config.py"),". When templating is enabled, python code can be embedded in virtual datasets and\nin Custom SQL in the filter and metric controls in Explore. By default, the following variables are\nmade available in the Jinja context:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"columns"),": columns which to group by in the query"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"filter"),": filters applied in the query"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"from_dttm"),": start ",(0,r.kt)("inlineCode",{parentName:"li"},"datetime")," value from the selected time range (",(0,r.kt)("inlineCode",{parentName:"li"},"None")," if undefined)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"to_dttm"),": end ",(0,r.kt)("inlineCode",{parentName:"li"},"datetime")," value from the selected time range (",(0,r.kt)("inlineCode",{parentName:"li"},"None")," if undefined)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"groupby"),": columns which to group by in the query (deprecated)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"metrics"),": aggregate expressions in the query"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"row_limit"),": row limit of the query"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"row_offset"),": row offset of the query"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"table_columns"),": columns available in the dataset"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"time_column"),": temporal column of the query (",(0,r.kt)("inlineCode",{parentName:"li"},"None")," if undefined)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"time_grain"),": selected time grain (",(0,r.kt)("inlineCode",{parentName:"li"},"None")," if undefined)")),(0,r.kt)("p",null,"For example, to add a time range to a virtual dataset, you can write the following:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT * from tbl where dttm_col > '{{ from_dttm }}' and dttm_col < '{{ to_dttm }}'\n")),(0,r.kt)("p",null,"You can also use ",(0,r.kt)("a",{parentName:"p",href:"https://jinja.palletsprojects.com/en/2.11.x/templates/#tests"},"Jinja's logic"),"\nto make your query robust to clearing the timerange filter:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT *\nFROM tbl\nWHERE (\n    {% if from_dttm is not none %}\n        dttm_col > '{{ from_dttm }}' AND\n    {% endif %}\n    {% if to_dttm is not none %}\n        dttm_col < '{{ to_dttm }}' AND\n    {% endif %}\n    true\n)\n")),(0,r.kt)("p",null,"Note how the Jinja parameters are called within double brackets in the query, and without in the\nlogic blocks."),(0,r.kt)("p",null,"To add custom functionality to the Jinja context, you need to overload the default Jinja\ncontext in your environment by defining the ",(0,r.kt)("inlineCode",{parentName:"p"},"JINJA_CONTEXT_ADDONS")," in your superset configuration\n(",(0,r.kt)("inlineCode",{parentName:"p"},"superset_config.py"),"). Objects referenced in this dictionary are made available for users to use\nwhere the Jinja context is made available."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-python"},"JINJA_CONTEXT_ADDONS = {\n    'my_crazy_macro': lambda x: x*2,\n}\n")),(0,r.kt)("p",null,"Besides default Jinja templating, SQL lab also supports self-defined template processor by setting\nthe ",(0,r.kt)("inlineCode",{parentName:"p"},"CUSTOM_TEMPLATE_PROCESSORS")," in your superset configuration. The values in this dictionary\noverwrite the default Jinja template processors of the specified database engine. The example below\nconfigures a custom presto template processor which implements its own logic of processing macro\ntemplate with regex parsing. It uses the ",(0,r.kt)("inlineCode",{parentName:"p"},"$")," style macro instead of ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ }}")," style in Jinja\ntemplating."),(0,r.kt)("p",null,"By configuring it with ",(0,r.kt)("inlineCode",{parentName:"p"},"CUSTOM_TEMPLATE_PROCESSORS"),", a SQL template on a presto database is\nprocessed by the custom one rather than the default one."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-python"},'def DATE(\n    ts: datetime, day_offset: SupportsInt = 0, hour_offset: SupportsInt = 0\n) -> str:\n    """Current day as a string."""\n    day_offset, hour_offset = int(day_offset), int(hour_offset)\n    offset_day = (ts + timedelta(days=day_offset, hours=hour_offset)).date()\n    return str(offset_day)\n\nclass CustomPrestoTemplateProcessor(PrestoTemplateProcessor):\n    """A custom presto template processor."""\n\n    engine = "presto"\n\n    def process_template(self, sql: str, **kwargs) -> str:\n        """Processes a sql template with $ style macro using regex."""\n        # Add custom macros functions.\n        macros = {\n            "DATE": partial(DATE, datetime.utcnow())\n        }  # type: Dict[str, Any]\n        # Update with macros defined in context and kwargs.\n        macros.update(self.context)\n        macros.update(kwargs)\n\n        def replacer(match):\n            """Expand $ style macros with corresponding function calls."""\n            macro_name, args_str = match.groups()\n            args = [a.strip() for a in args_str.split(",")]\n            if args == [""]:\n                args = []\n            f = macros[macro_name[1:]]\n            return f(*args)\n\n        macro_names = ["$" + name for name in macros.keys()]\n        pattern = r"(%s)\\s*\\(([^()]*)\\)" % "|".join(map(re.escape, macro_names))\n        return re.sub(pattern, replacer, sql)\n\nCUSTOM_TEMPLATE_PROCESSORS = {\n    CustomPrestoTemplateProcessor.engine: CustomPrestoTemplateProcessor\n}\n')),(0,r.kt)("p",null,"SQL Lab also includes a live query validation feature with pluggable backends. You can configure\nwhich validation implementation is used with which database engine by adding a block like the\nfollowing to your configuration file:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-python"},"FEATURE_FLAGS = {\n    'SQL_VALIDATORS_BY_ENGINE': {\n        'presto': 'PrestoDBSQLValidator',\n    }\n}\n")),(0,r.kt)("p",null,"The available validators and names can be found in\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/apache/superset/tree/master/superset/sql_validators"},"sql_validators"),"."),(0,r.kt)("h3",{id:"available-macros"},"Available Macros"),(0,r.kt)("p",null,"In this section, we'll walkthrough the pre-defined Jinja macros in Superset."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Current Username")),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ current_username() }}")," macro returns the username of the currently logged in user."),(0,r.kt)("p",null,"If you have caching enabled in your Superset configuration, then by default the ",(0,r.kt)("inlineCode",{parentName:"p"},"username")," value will be used\nby Superset when calculating the cache key. A cache key is a unique identifier that determines if there's a\ncache hit in the future and Superset can retrieve cached data."),(0,r.kt)("p",null,"You can disable the inclusion of the ",(0,r.kt)("inlineCode",{parentName:"p"},"username")," value in the calculation of the\ncache key by adding the following parameter to your Jinja code:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"{{ current_username(add_to_cache_keys=False) }}\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Current User ID")),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ current_user_id() }}")," macro returns the user_id of the currently logged in user."),(0,r.kt)("p",null,"If you have caching enabled in your Superset configuration, then by default the ",(0,r.kt)("inlineCode",{parentName:"p"},"user_id")," value will be used\nby Superset when calculating the cache key. A cache key is a unique identifier that determines if there's a\ncache hit in the future and Superset can retrieve cached data."),(0,r.kt)("p",null,"You can disable the inclusion of the ",(0,r.kt)("inlineCode",{parentName:"p"},"user_id")," value in the calculation of the\ncache key by adding the following parameter to your Jinja code:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"{{ current_user_id(add_to_cache_keys=False) }}\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Custom URL Parameters")),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ url_param('custom_variable') }}")," macro lets you define arbitrary URL\nparameters and reference them in your SQL code."),(0,r.kt)("p",null,"Here's a concrete example:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"You write the following query in SQL Lab:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre"},"SELECT count(*)\nFROM ORDERS\nWHERE country_code = '{{ url_param('countrycode') }}'\n"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"You're hosting Superset at the domain ",(0,r.kt)("a",{parentName:"p",href:"http://www.example.com"},"www.example.com")," and you send your\ncoworker in Spain the following SQL Lab URL ",(0,r.kt)("inlineCode",{parentName:"p"},"www.example.com/superset/sqllab?countrycode=ES"),"\nand your coworker in the USA the following SQL Lab URL ",(0,r.kt)("inlineCode",{parentName:"p"},"www.example.com/superset/sqllab?countrycode=US"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For your coworker in Spain, the SQL Lab query will be rendered as:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre"},"SELECT count(*)\nFROM ORDERS\nWHERE country_code = 'ES'\n"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For your coworker in the USA, the SQL Lab query will be rendered as:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre"},"SELECT count(*)\nFROM ORDERS\nWHERE country_code = 'US'\n")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Explicitly Including Values in Cache Key")),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ cache_key_wrapper() }}")," function explicitly instructs Superset to add a value to the\naccumulated list of values used in the calculation of the cache key."),(0,r.kt)("p",null,"This function is only needed when you want to wrap your own custom function return values\nin the cache key. You can gain more context\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/apache/superset/blob/efd70077014cbed62e493372d33a2af5237eaadf/superset/jinja_context.py#L133-L148"},"here"),"."),(0,r.kt)("p",null,"Note that this function powers the caching of the ",(0,r.kt)("inlineCode",{parentName:"p"},"user_id")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"username")," values\nin the ",(0,r.kt)("inlineCode",{parentName:"p"},"current_user_id()")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"current_username()")," function calls (if you have caching enabled)."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Filter Values")),(0,r.kt)("p",null,"You can retrieve the value for a specific filter as a list using ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ filter_values() }}"),"."),(0,r.kt)("p",null,"This is useful if:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"You want to use a filter component to filter a query where the name of filter component column doesn't match the one in the select statement"),(0,r.kt)("li",{parentName:"ul"},"You want to have the ability for filter inside the main query for performance purposes")),(0,r.kt)("p",null,"Here's a concrete example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"SELECT action, count(*) as times\nFROM logs\nWHERE\n    action in {{ filter_values('action_type')|where_in }}\nGROUP BY action\n")),(0,r.kt)("p",null,"There ",(0,r.kt)("inlineCode",{parentName:"p"},"where_in")," filter converts the list of values from ",(0,r.kt)("inlineCode",{parentName:"p"},"filter_values('action_type')")," into a string suitable for an ",(0,r.kt)("inlineCode",{parentName:"p"},"IN")," expression."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Filters for a Specific Column")),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ get_filters() }}")," macro returns the filters applied to a given column. In addition to\nreturning the values (similar to how ",(0,r.kt)("inlineCode",{parentName:"p"},"filter_values()")," does), the ",(0,r.kt)("inlineCode",{parentName:"p"},"get_filters()")," macro\nreturns the operator specified in the Explore UI."),(0,r.kt)("p",null,"This is useful if:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"You want to handle more than the IN operator in your SQL clause"),(0,r.kt)("li",{parentName:"ul"},"You want to handle generating custom SQL conditions for a filter"),(0,r.kt)("li",{parentName:"ul"},"You want to have the ability to filter inside the main query for speed purposes")),(0,r.kt)("p",null,"Here's a concrete example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"}," WITH RECURSIVE\n    superiors(employee_id, manager_id, full_name, level, lineage) AS (\n    SELECT\n        employee_id,\n        manager_id,\n        full_name,\n    1 as level,\n    employee_id as lineage\n    FROM\n        employees\n    WHERE\n    1=1\n\n    {# Render a blank line #}\n    {%- for filter in get_filters('full_name', remove_filter=True) -%}\n\n    {%- if filter.get('op') == 'IN' -%}\n        AND\n        full_name IN {{ filter.get('val')|where_in }}\n    {%- endif -%}\n\n    {%- if filter.get('op') == 'LIKE' -%}\n        AND\n        full_name LIKE {{ \"'\" + filter.get('val') + \"'\" }}\n    {%- endif -%}\n\n    {%- endfor -%}\n    UNION ALL\n        SELECT\n            e.employee_id,\n            e.manager_id,\n            e.full_name,\n    s.level + 1 as level,\n    s.lineage\n        FROM\n            employees e,\n        superiors s\n        WHERE s.manager_id = e.employee_id\n    )\n\n    SELECT\n    employee_id, manager_id, full_name, level, lineage\n    FROM\n    superiors\n    order by lineage, level\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Datasets")),(0,r.kt)("p",null,"It's possible to query physical and virtual datasets using the ",(0,r.kt)("inlineCode",{parentName:"p"},"dataset")," macro. This is useful if you've defined computed columns and metrics on your datasets, and want to reuse the definition in adhoc SQL Lab queries."),(0,r.kt)("p",null,"To use the macro, first you need to find the ID of the dataset. This can be done by going to the view showing all the datasets, hovering over the dataset you're interested in, and looking at its URL. For example, if the URL for a dataset is ",(0,r.kt)("a",{parentName:"p",href:"https://superset.example.org/explore/?dataset_type=table&dataset_id=42"},"https://superset.example.org/explore/?dataset_type=table&dataset_id=42")," its ID is 42."),(0,r.kt)("p",null,"Once you have the ID you can query it as if it were a table:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"SELECT * FROM {{ dataset(42) }} LIMIT 10\n")),(0,r.kt)("p",null,"If you want to select the metric definitions as well, in addition to the columns, you need to pass an additional keyword argument:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"SELECT * FROM {{ dataset(42, include_metrics=True) }} LIMIT 10\n")),(0,r.kt)("p",null,"Since metrics are aggregations, the resulting SQL expression will be grouped by all non-metric columns. You can specify a subset of columns to group by instead:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'SELECT * FROM {{ dataset(42, include_metrics=True, columns=["ds", "category"]) }} LIMIT 10\n')))}m.isMDXComponent=!0},3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return f}});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=p(n),d=r,f=c["".concat(s,".").concat(d)]||c[d]||m[d]||i;return n?a.createElement(f,l(l({ref:t},u),{},{components:n})):a.createElement(f,l({ref:t},u))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=d;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:r,l[1]=o;for(var p=2;p<i;p++)l[p]=n[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,n)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.efcada53.js b/assets/js/runtime~main.57d9aa12.js
similarity index 98%
rename from assets/js/runtime~main.efcada53.js
rename to assets/js/runtime~main.57d9aa12.js
index e303a86..6ed4348 100644
--- a/assets/js/runtime~main.efcada53.js
+++ b/assets/js/runtime~main.57d9aa12.js
@@ -1 +1 @@
-!function(){"use strict";var e,c,f,a,d,t={},b={};function n(e){var c=b[e];if(void 0!==c)return c.exports;var f=b[e]={id:e,loaded:!1,exports:{}};return t[e].call(f.exports,f,f.exports,n),f.loaded=!0,f.exports}n.m=t,n.c=b,e=[],n.O=function(c,f,a,d){if(!f){var t=1/0;for(u=0;u<e.length;u++){f=e[u][0],a=e[u][1],d=e[u][2];for(var b=!0,r=0;r<f.length;r++)(!1&d||t>=d)&&Object.keys(n.O).every((function(e){return n.O[e](f[r])}))?f.splice(r--,1):(b=!1,d<t&&(t=d));if(b){e.splice(u--,1);var o=a();void 0!==o&&(c=o)}}return c}d=d||0;for(var u=e.length;u>0&&e[u-1][2]>d;u--)e[u]=e[u-1];e[u]=[f,a,d]},n.n=function(e){var c=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(c,{a:c}),c},f=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},n.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var d=Object.create(null);n.r(d);var t={};c=c||[null,f({}),f([]),f(f)];for(var b=2&a&&e;"object"==typeof b&&!~c.indexOf(b);b=f(b))Object.getOwnPropertyNames(b).forEach((function(c){t[c]=function(){return e[c]}}));return t.default=function(){return e},n.d(d,t),d},n.d=function(e,c){for(var f in c)n.o(c,f)&&!n.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:c[f]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(c,f){return n.f[f](e,c),c}),[]))},n.u=function(e){return"assets/js/"+({53:"935f2afb",112:"afef705c",229:"25f17725",340:"070b53d1",396:"0ae8b3d4",515:"53bb5fc4",599:"3c585fdb",674:"67158350",907:"c1424005",1083:"bd23e567",1444:"69a4ab96",1533:"6edc47f3",2331:"19682bb8",2429:"d5417e33",2942:"eb23a929",3085:"1f391b9e",3206:"f8409a7e",3237:"1df93b7f",3628:"fa1a3aa0",3672:"cf6ffe2f",3775:"496bf018",3821:"21b4b958",3909:"cd90435d",3945:"a309f86e",3996:"9791fd42",4003:"6432bc55",4014:"5e50ba72",4096:"c76f729d",4244:"4cc2c078",4281:"1c734f75",4343:"18cf5ace",4490:"262418cd",4519:"2c412ea7",4586:"dc3fdd24",4628:"1ce51947",4729:"0c21af39",4796:"471df853",4992:"dc737160",5097:"a584ba2a",5324:"a9e1a7f6",5542:"729f57ad",5551:"da60bc8f",5643:"30334fcd",5720:"30256b0d",5851:"8660bbc8",5906:"e7c796a6",6126:"e0a8f778",6230:"2bafca50",6455:"4e664dc4",6547:"1c42a294",6552:"6948bca1",6849:"57b59cd4",6860:"dbb131dd",7107:"d76e6194",7251:"9d6fd8ea",7271:"6a90d500",7277:"7d0180ef",7285:"b92f705c",7380:"640bc8a0",7414:"393be207",7566:"972382ea",7587:"3ec2c3f7",7600:"2461ffa2",7706:"ce3fa444",7886:"5818c28e",7918:"17896441",7920:"1a4e3797",7937:"9a9c044b",8005:"600a9360",8015:"0e9953cd",8342:"eb3b0997",8402:"3c835dee",8561:"07f0ce13",8718:"31e90f3c",8784:"35a5de3c",8835:"36ea7a08",8844:"b46ab14b",8853:"c296437a",8888:"ee5d850a",8915:"f9cc156b",9243:"40974919",9317:"f5f07875",9514:"1be78505",9594:"507542a3",9596:"88eaec5a",9617:"d83b78fc",9623:"904d61ef",9822:"fe0957ee"}[e]||e)+"."+{53:"a5a9f890",112:"037959f9",229:"6f0973f7",340:"9df04a07",396:"1c29df3d",515:"fdcf4b53",599:"87957ed4",674:"6dabe36a",713:"99e9d020",907:"5c11ba30",975:"f774d13a",1083:"5ff33e16",1273:"69e721b0",1444:"9f51b303",1533:"11e55bb3",2331:"f5171ac3",2429:"846ad222",2942:"4aea84b8",3085:"87285d3f",3206:"c252c9bf",3237:"84c309b2",3628:"c25f6dcc",3672:"2aa3fcd4",3775:"0c9b920c",3821:"469eaa2c",3909:"f7279511",3945:"dcdec8e1",3996:"af670bd8",4003:"cbd2aa80",4014:"5f1e7f45",4096:"6ffc016f",4244:"9f830456",4281:"d6f972a4",4343:"a53db9e9",4357:"5b91ec26",4471:"2709ee9c",4490:"0eb2274e",4519:"5d1841f6",4586:"7d65f63b",4628:"8a9236e6",4729:"1bc6c912",4796:"cb5ddcdd",4973:"c6898e57",4992:"cec4e1e4",5097:"ee7e7cee",5324:"994d4608",5394:"a01111fd",5542:"2a66f3ff",5551:"c109fc14",5643:"22801a5c",5720:"b7c8dab2",5851:"1faa431c",5906:"4677ded7",6126:"17ef2ac0",6230:"3f664693",6455:"969c9522",6547:"2d2e0af3",6552:"50ef3194",6780:"d6c1721a",6849:"de88fba5",6860:"7feb7ec0",6945:"4bafa2e2",7107:"1a2e23f8",7129:"7092a5fb",7251:"760d4bb3",7271:"34231fe7",7277:"4a3d2805",7285:"8833c07a",7380:"77459691",7414:"c071156c",7566:"8261e8cd",7587:"b9e34961",7600:"e9879a7e",7706:"e511e1f7",7886:"5b0d8f89",7918:"c32f74bc",7920:"78abfdc3",7937:"de358044",8005:"5466ce47",8015:"5fc4ccd8",8342:"96a05863",8402:"48892d55",8484:"ae1870c7",8505:"4285b4de",8561:"46111572",8718:"4018a38e",8784:"510042e9",8835:"9507f1aa",8844:"4de54d91",8853:"5ed1bb89",8888:"e70ec5af",8915:"e5f890a4",9243:"16870015",9317:"5d940b1e",9514:"e8a886b4",9594:"aab880a1",9596:"b91a4241",9617:"a29ed3c7",9623:"26847188",9822:"b220d2cb"}[e]+".js"},n.miniCssF=function(e){},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=function(e,c){return Object.prototype.hasOwnProperty.call(e,c)},a={},d="docs-v-2:",n.l=function(e,c,f,t){if(a[e])a[e].push(c);else{var b,r;if(void 0!==f)for(var o=document.getElementsByTagName("script"),u=0;u<o.length;u++){var i=o[u];if(i.getAttribute("src")==e||i.getAttribute("data-webpack")==d+f){b=i;break}}b||(r=!0,(b=document.createElement("script")).charset="utf-8",b.timeout=120,n.nc&&b.setAttribute("nonce",n.nc),b.setAttribute("data-webpack",d+f),b.src=e),a[e]=[c];var l=function(c,f){b.onerror=b.onload=null,clearTimeout(s);var d=a[e];if(delete a[e],b.parentNode&&b.parentNode.removeChild(b),d&&d.forEach((function(e){return e(f)})),c)return c(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=l.bind(null,b.onerror),b.onload=l.bind(null,b.onload),r&&document.head.appendChild(b)}},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},n.p="/",n.gca=function(e){return e={17896441:"7918",40974919:"9243",67158350:"674","935f2afb":"53",afef705c:"112","25f17725":"229","070b53d1":"340","0ae8b3d4":"396","53bb5fc4":"515","3c585fdb":"599",c1424005:"907",bd23e567:"1083","69a4ab96":"1444","6edc47f3":"1533","19682bb8":"2331",d5417e33:"2429",eb23a929:"2942","1f391b9e":"3085",f8409a7e:"3206","1df93b7f":"3237",fa1a3aa0:"3628",cf6ffe2f:"3672","496bf018":"3775","21b4b958":"3821",cd90435d:"3909",a309f86e:"3945","9791fd42":"3996","6432bc55":"4003","5e50ba72":"4014",c76f729d:"4096","4cc2c078":"4244","1c734f75":"4281","18cf5ace":"4343","262418cd":"4490","2c412ea7":"4519",dc3fdd24:"4586","1ce51947":"4628","0c21af39":"4729","471df853":"4796",dc737160:"4992",a584ba2a:"5097",a9e1a7f6:"5324","729f57ad":"5542",da60bc8f:"5551","30334fcd":"5643","30256b0d":"5720","8660bbc8":"5851",e7c796a6:"5906",e0a8f778:"6126","2bafca50":"6230","4e664dc4":"6455","1c42a294":"6547","6948bca1":"6552","57b59cd4":"6849",dbb131dd:"6860",d76e6194:"7107","9d6fd8ea":"7251","6a90d500":"7271","7d0180ef":"7277",b92f705c:"7285","640bc8a0":"7380","393be207":"7414","972382ea":"7566","3ec2c3f7":"7587","2461ffa2":"7600",ce3fa444:"7706","5818c28e":"7886","1a4e3797":"7920","9a9c044b":"7937","600a9360":"8005","0e9953cd":"8015",eb3b0997:"8342","3c835dee":"8402","07f0ce13":"8561","31e90f3c":"8718","35a5de3c":"8784","36ea7a08":"8835",b46ab14b:"8844",c296437a:"8853",ee5d850a:"8888",f9cc156b:"8915",f5f07875:"9317","1be78505":"9514","507542a3":"9594","88eaec5a":"9596",d83b78fc:"9617","904d61ef":"9623",fe0957ee:"9822"}[e]||e,n.p+n.u(e)},function(){var e={1303:0,532:0};n.f.j=function(c,f){var a=n.o(e,c)?e[c]:void 0;if(0!==a)if(a)f.push(a[2]);else if(/^(1303|532)$/.test(c))e[c]=0;else{var d=new Promise((function(f,d){a=e[c]=[f,d]}));f.push(a[2]=d);var t=n.p+n.u(c),b=new Error;n.l(t,(function(f){if(n.o(e,c)&&(0!==(a=e[c])&&(e[c]=void 0),a)){var d=f&&("load"===f.type?"missing":f.type),t=f&&f.target&&f.target.src;b.message="Loading chunk "+c+" failed.\n("+d+": "+t+")",b.name="ChunkLoadError",b.type=d,b.request=t,a[1](b)}}),"chunk-"+c,c)}},n.O.j=function(c){return 0===e[c]};var c=function(c,f){var a,d,t=f[0],b=f[1],r=f[2],o=0;if(t.some((function(c){return 0!==e[c]}))){for(a in b)n.o(b,a)&&(n.m[a]=b[a]);if(r)var u=r(n)}for(c&&c(f);o<t.length;o++)d=t[o],n.o(e,d)&&e[d]&&e[d][0](),e[d]=0;return n.O(u)},f=self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[];f.forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}()}();
\ No newline at end of file
+!function(){"use strict";var e,c,f,a,d,t={},b={};function n(e){var c=b[e];if(void 0!==c)return c.exports;var f=b[e]={id:e,loaded:!1,exports:{}};return t[e].call(f.exports,f,f.exports,n),f.loaded=!0,f.exports}n.m=t,n.c=b,e=[],n.O=function(c,f,a,d){if(!f){var t=1/0;for(u=0;u<e.length;u++){f=e[u][0],a=e[u][1],d=e[u][2];for(var b=!0,r=0;r<f.length;r++)(!1&d||t>=d)&&Object.keys(n.O).every((function(e){return n.O[e](f[r])}))?f.splice(r--,1):(b=!1,d<t&&(t=d));if(b){e.splice(u--,1);var o=a();void 0!==o&&(c=o)}}return c}d=d||0;for(var u=e.length;u>0&&e[u-1][2]>d;u--)e[u]=e[u-1];e[u]=[f,a,d]},n.n=function(e){var c=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(c,{a:c}),c},f=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},n.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var d=Object.create(null);n.r(d);var t={};c=c||[null,f({}),f([]),f(f)];for(var b=2&a&&e;"object"==typeof b&&!~c.indexOf(b);b=f(b))Object.getOwnPropertyNames(b).forEach((function(c){t[c]=function(){return e[c]}}));return t.default=function(){return e},n.d(d,t),d},n.d=function(e,c){for(var f in c)n.o(c,f)&&!n.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:c[f]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(c,f){return n.f[f](e,c),c}),[]))},n.u=function(e){return"assets/js/"+({53:"935f2afb",112:"afef705c",229:"25f17725",340:"070b53d1",396:"0ae8b3d4",515:"53bb5fc4",599:"3c585fdb",674:"67158350",907:"c1424005",1083:"bd23e567",1444:"69a4ab96",1533:"6edc47f3",2331:"19682bb8",2429:"d5417e33",2942:"eb23a929",3085:"1f391b9e",3206:"f8409a7e",3237:"1df93b7f",3628:"fa1a3aa0",3672:"cf6ffe2f",3775:"496bf018",3821:"21b4b958",3909:"cd90435d",3945:"a309f86e",3996:"9791fd42",4003:"6432bc55",4014:"5e50ba72",4096:"c76f729d",4244:"4cc2c078",4281:"1c734f75",4343:"18cf5ace",4490:"262418cd",4519:"2c412ea7",4586:"dc3fdd24",4628:"1ce51947",4729:"0c21af39",4796:"471df853",4992:"dc737160",5097:"a584ba2a",5324:"a9e1a7f6",5542:"729f57ad",5551:"da60bc8f",5643:"30334fcd",5720:"30256b0d",5851:"8660bbc8",5906:"e7c796a6",6126:"e0a8f778",6230:"2bafca50",6455:"4e664dc4",6547:"1c42a294",6552:"6948bca1",6849:"57b59cd4",6860:"dbb131dd",7107:"d76e6194",7251:"9d6fd8ea",7271:"6a90d500",7277:"7d0180ef",7285:"b92f705c",7380:"640bc8a0",7414:"393be207",7566:"972382ea",7587:"3ec2c3f7",7600:"2461ffa2",7706:"ce3fa444",7886:"5818c28e",7918:"17896441",7920:"1a4e3797",7937:"9a9c044b",8005:"600a9360",8015:"0e9953cd",8342:"eb3b0997",8402:"3c835dee",8561:"07f0ce13",8718:"31e90f3c",8784:"35a5de3c",8835:"36ea7a08",8844:"b46ab14b",8853:"c296437a",8888:"ee5d850a",8915:"f9cc156b",9243:"40974919",9317:"f5f07875",9514:"1be78505",9594:"507542a3",9596:"88eaec5a",9617:"d83b78fc",9623:"904d61ef",9822:"fe0957ee"}[e]||e)+"."+{53:"a5a9f890",112:"037959f9",229:"6f0973f7",340:"9df04a07",396:"1c29df3d",515:"fdcf4b53",599:"87957ed4",674:"6dabe36a",713:"99e9d020",907:"5c11ba30",975:"f774d13a",1083:"5ff33e16",1273:"69e721b0",1444:"9f51b303",1533:"11e55bb3",2331:"f5171ac3",2429:"846ad222",2942:"4aea84b8",3085:"87285d3f",3206:"c252c9bf",3237:"84c309b2",3628:"c25f6dcc",3672:"2aa3fcd4",3775:"0c9b920c",3821:"469eaa2c",3909:"f7279511",3945:"dcdec8e1",3996:"af670bd8",4003:"cbd2aa80",4014:"5f1e7f45",4096:"6ffc016f",4244:"9f830456",4281:"d6f972a4",4343:"400fd8a9",4357:"5b91ec26",4471:"2709ee9c",4490:"0eb2274e",4519:"5d1841f6",4586:"7d65f63b",4628:"8a9236e6",4729:"1bc6c912",4796:"cb5ddcdd",4973:"c6898e57",4992:"cec4e1e4",5097:"ee7e7cee",5324:"994d4608",5394:"a01111fd",5542:"2a66f3ff",5551:"c109fc14",5643:"22801a5c",5720:"b7c8dab2",5851:"1faa431c",5906:"4677ded7",6126:"17ef2ac0",6230:"3f664693",6455:"969c9522",6547:"2d2e0af3",6552:"50ef3194",6780:"d6c1721a",6849:"de88fba5",6860:"7feb7ec0",6945:"4bafa2e2",7107:"1a2e23f8",7129:"7092a5fb",7251:"760d4bb3",7271:"34231fe7",7277:"4a3d2805",7285:"8833c07a",7380:"77459691",7414:"c071156c",7566:"8261e8cd",7587:"b9e34961",7600:"e9879a7e",7706:"e511e1f7",7886:"5b0d8f89",7918:"c32f74bc",7920:"78abfdc3",7937:"de358044",8005:"5466ce47",8015:"5fc4ccd8",8342:"96a05863",8402:"48892d55",8484:"ae1870c7",8505:"4285b4de",8561:"46111572",8718:"4018a38e",8784:"510042e9",8835:"9507f1aa",8844:"4de54d91",8853:"5ed1bb89",8888:"e70ec5af",8915:"e5f890a4",9243:"16870015",9317:"5d940b1e",9514:"e8a886b4",9594:"aab880a1",9596:"b91a4241",9617:"a29ed3c7",9623:"26847188",9822:"b220d2cb"}[e]+".js"},n.miniCssF=function(e){},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=function(e,c){return Object.prototype.hasOwnProperty.call(e,c)},a={},d="docs-v-2:",n.l=function(e,c,f,t){if(a[e])a[e].push(c);else{var b,r;if(void 0!==f)for(var o=document.getElementsByTagName("script"),u=0;u<o.length;u++){var i=o[u];if(i.getAttribute("src")==e||i.getAttribute("data-webpack")==d+f){b=i;break}}b||(r=!0,(b=document.createElement("script")).charset="utf-8",b.timeout=120,n.nc&&b.setAttribute("nonce",n.nc),b.setAttribute("data-webpack",d+f),b.src=e),a[e]=[c];var l=function(c,f){b.onerror=b.onload=null,clearTimeout(s);var d=a[e];if(delete a[e],b.parentNode&&b.parentNode.removeChild(b),d&&d.forEach((function(e){return e(f)})),c)return c(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=l.bind(null,b.onerror),b.onload=l.bind(null,b.onload),r&&document.head.appendChild(b)}},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},n.p="/",n.gca=function(e){return e={17896441:"7918",40974919:"9243",67158350:"674","935f2afb":"53",afef705c:"112","25f17725":"229","070b53d1":"340","0ae8b3d4":"396","53bb5fc4":"515","3c585fdb":"599",c1424005:"907",bd23e567:"1083","69a4ab96":"1444","6edc47f3":"1533","19682bb8":"2331",d5417e33:"2429",eb23a929:"2942","1f391b9e":"3085",f8409a7e:"3206","1df93b7f":"3237",fa1a3aa0:"3628",cf6ffe2f:"3672","496bf018":"3775","21b4b958":"3821",cd90435d:"3909",a309f86e:"3945","9791fd42":"3996","6432bc55":"4003","5e50ba72":"4014",c76f729d:"4096","4cc2c078":"4244","1c734f75":"4281","18cf5ace":"4343","262418cd":"4490","2c412ea7":"4519",dc3fdd24:"4586","1ce51947":"4628","0c21af39":"4729","471df853":"4796",dc737160:"4992",a584ba2a:"5097",a9e1a7f6:"5324","729f57ad":"5542",da60bc8f:"5551","30334fcd":"5643","30256b0d":"5720","8660bbc8":"5851",e7c796a6:"5906",e0a8f778:"6126","2bafca50":"6230","4e664dc4":"6455","1c42a294":"6547","6948bca1":"6552","57b59cd4":"6849",dbb131dd:"6860",d76e6194:"7107","9d6fd8ea":"7251","6a90d500":"7271","7d0180ef":"7277",b92f705c:"7285","640bc8a0":"7380","393be207":"7414","972382ea":"7566","3ec2c3f7":"7587","2461ffa2":"7600",ce3fa444:"7706","5818c28e":"7886","1a4e3797":"7920","9a9c044b":"7937","600a9360":"8005","0e9953cd":"8015",eb3b0997:"8342","3c835dee":"8402","07f0ce13":"8561","31e90f3c":"8718","35a5de3c":"8784","36ea7a08":"8835",b46ab14b:"8844",c296437a:"8853",ee5d850a:"8888",f9cc156b:"8915",f5f07875:"9317","1be78505":"9514","507542a3":"9594","88eaec5a":"9596",d83b78fc:"9617","904d61ef":"9623",fe0957ee:"9822"}[e]||e,n.p+n.u(e)},function(){var e={1303:0,532:0};n.f.j=function(c,f){var a=n.o(e,c)?e[c]:void 0;if(0!==a)if(a)f.push(a[2]);else if(/^(1303|532)$/.test(c))e[c]=0;else{var d=new Promise((function(f,d){a=e[c]=[f,d]}));f.push(a[2]=d);var t=n.p+n.u(c),b=new Error;n.l(t,(function(f){if(n.o(e,c)&&(0!==(a=e[c])&&(e[c]=void 0),a)){var d=f&&("load"===f.type?"missing":f.type),t=f&&f.target&&f.target.src;b.message="Loading chunk "+c+" failed.\n("+d+": "+t+")",b.name="ChunkLoadError",b.type=d,b.request=t,a[1](b)}}),"chunk-"+c,c)}},n.O.j=function(c){return 0===e[c]};var c=function(c,f){var a,d,t=f[0],b=f[1],r=f[2],o=0;if(t.some((function(c){return 0!==e[c]}))){for(a in b)n.o(b,a)&&(n.m[a]=b[a]);if(r)var u=r(n)}for(c&&c(f);o<t.length;o++)d=t[o],n.o(e,d)&&e[d]&&e[d][0](),e[d]=0;return n.O(u)},f=self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[];f.forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}()}();
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
index 32f33c4..3b93618 100644
--- a/community/index.html
+++ b/community/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/index.html b/docs/api/index.html
index 1d98a45..779d763 100644
--- a/docs/api/index.html
+++ b/docs/api/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -37,7 +37,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/contributing-page/index.html b/docs/contributing/contributing-page/index.html
index d398dbd..a4f22e4 100644
--- a/docs/contributing/contributing-page/index.html
+++ b/docs/contributing/contributing-page/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -36,7 +36,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/conventions-and-typing/index.html b/docs/contributing/conventions-and-typing/index.html
index 72bed01..b94e0b9 100644
--- a/docs/contributing/conventions-and-typing/index.html
+++ b/docs/contributing/conventions-and-typing/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -38,7 +38,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/creating-viz-plugins/index.html b/docs/contributing/creating-viz-plugins/index.html
index cb69ee3..ebbce61 100644
--- a/docs/contributing/creating-viz-plugins/index.html
+++ b/docs/contributing/creating-viz-plugins/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -50,7 +50,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/hooks-and-linting/index.html b/docs/contributing/hooks-and-linting/index.html
index 90c6d0a..3b7cf04 100644
--- a/docs/contributing/hooks-and-linting/index.html
+++ b/docs/contributing/hooks-and-linting/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -35,7 +35,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/local-backend/index.html b/docs/contributing/local-backend/index.html
index 66fc7c4..c9890d9 100644
--- a/docs/contributing/local-backend/index.html
+++ b/docs/contributing/local-backend/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -37,7 +37,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/pull-request-guidelines/index.html b/docs/contributing/pull-request-guidelines/index.html
index c914cab..8e84157 100644
--- a/docs/contributing/pull-request-guidelines/index.html
+++ b/docs/contributing/pull-request-guidelines/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/style-guide/index.html b/docs/contributing/style-guide/index.html
index d6cbc43..cfc80ff 100644
--- a/docs/contributing/style-guide/index.html
+++ b/docs/contributing/style-guide/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -37,7 +37,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/testing-locally/index.html b/docs/contributing/testing-locally/index.html
index 67319a0..9bd9968 100644
--- a/docs/contributing/testing-locally/index.html
+++ b/docs/contributing/testing-locally/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -41,7 +41,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/translations/index.html b/docs/contributing/translations/index.html
index 912f1ba..eb057e9 100644
--- a/docs/contributing/translations/index.html
+++ b/docs/contributing/translations/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -65,7 +65,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/types-of-contributions/index.html b/docs/contributing/types-of-contributions/index.html
index e971c53..4ec8ac3 100644
--- a/docs/contributing/types-of-contributions/index.html
+++ b/docs/contributing/types-of-contributions/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/creating-charts-dashboards/creating-your-first-dashboard/index.html b/docs/creating-charts-dashboards/creating-your-first-dashboard/index.html
index da0465a..861aa85 100644
--- a/docs/creating-charts-dashboards/creating-your-first-dashboard/index.html
+++ b/docs/creating-charts-dashboards/creating-your-first-dashboard/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -80,7 +80,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/creating-charts-dashboards/exploring-data/index.html b/docs/creating-charts-dashboards/exploring-data/index.html
index df0f9a1..6069ff7 100644
--- a/docs/creating-charts-dashboards/exploring-data/index.html
+++ b/docs/creating-charts-dashboards/exploring-data/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -139,7 +139,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/ascend/index.html b/docs/databases/ascend/index.html
index f1de5f1..bbe4a98 100644
--- a/docs/databases/ascend/index.html
+++ b/docs/databases/ascend/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/athena/index.html b/docs/databases/athena/index.html
index cccd457..30dce48 100644
--- a/docs/databases/athena/index.html
+++ b/docs/databases/athena/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -36,7 +36,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/bigquery/index.html b/docs/databases/bigquery/index.html
index a9f496d..0a0de9e 100644
--- a/docs/databases/bigquery/index.html
+++ b/docs/databases/bigquery/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -40,7 +40,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/clickhouse/index.html b/docs/databases/clickhouse/index.html
index 108a054..4ebf72a 100644
--- a/docs/databases/clickhouse/index.html
+++ b/docs/databases/clickhouse/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -36,7 +36,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/cockroachdb/index.html b/docs/databases/cockroachdb/index.html
index a5ef6ad..eb7dfcf 100644
--- a/docs/databases/cockroachdb/index.html
+++ b/docs/databases/cockroachdb/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -35,7 +35,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/cratedb/index.html b/docs/databases/cratedb/index.html
index c298f99..fa216e0 100644
--- a/docs/databases/cratedb/index.html
+++ b/docs/databases/cratedb/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -38,7 +38,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/databricks/index.html b/docs/databases/databricks/index.html
index fa58f7e..eee1776 100644
--- a/docs/databases/databricks/index.html
+++ b/docs/databases/databricks/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/db-connection-ui/index.html b/docs/databases/db-connection-ui/index.html
index 4b186a6..ebbd0a1 100644
--- a/docs/databases/db-connection-ui/index.html
+++ b/docs/databases/db-connection-ui/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/docker-add-drivers/index.html b/docs/databases/docker-add-drivers/index.html
index c35eff7..5c52965 100644
--- a/docs/databases/docker-add-drivers/index.html
+++ b/docs/databases/docker-add-drivers/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -49,7 +49,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/dremio/index.html b/docs/databases/dremio/index.html
index b70a987..d7dc576 100644
--- a/docs/databases/dremio/index.html
+++ b/docs/databases/dremio/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -36,7 +36,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/drill/index.html b/docs/databases/drill/index.html
index e634d78..f17daae 100644
--- a/docs/databases/drill/index.html
+++ b/docs/databases/drill/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -41,7 +41,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/druid/index.html b/docs/databases/druid/index.html
index 6f69b4a..bba01e9 100644
--- a/docs/databases/druid/index.html
+++ b/docs/databases/druid/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -50,7 +50,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/dynamodb/index.html b/docs/databases/dynamodb/index.html
index b7f38e6..77694a8 100644
--- a/docs/databases/dynamodb/index.html
+++ b/docs/databases/dynamodb/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/elasticsearch/index.html b/docs/databases/elasticsearch/index.html
index 49df6d8..48143a8 100644
--- a/docs/databases/elasticsearch/index.html
+++ b/docs/databases/elasticsearch/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -41,7 +41,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/exasol/index.html b/docs/databases/exasol/index.html
index 7cea8db..334dd0f 100644
--- a/docs/databases/exasol/index.html
+++ b/docs/databases/exasol/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -35,7 +35,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/extra-settings/index.html b/docs/databases/extra-settings/index.html
index 3885bd9..62ccd4c 100644
--- a/docs/databases/extra-settings/index.html
+++ b/docs/databases/extra-settings/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -44,7 +44,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/firebird/index.html b/docs/databases/firebird/index.html
index 39039fc..7f2f2ba 100644
--- a/docs/databases/firebird/index.html
+++ b/docs/databases/firebird/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -35,7 +35,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/firebolt/index.html b/docs/databases/firebolt/index.html
index a3dece7..41ccd42 100644
--- a/docs/databases/firebolt/index.html
+++ b/docs/databases/firebolt/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -35,7 +35,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/google-sheets/index.html b/docs/databases/google-sheets/index.html
index fda73d3..0032f03 100644
--- a/docs/databases/google-sheets/index.html
+++ b/docs/databases/google-sheets/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -38,7 +38,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/hana/index.html b/docs/databases/hana/index.html
index 64b62e0..5ed644b 100644
--- a/docs/databases/hana/index.html
+++ b/docs/databases/hana/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/hive/index.html b/docs/databases/hive/index.html
index 8ed7ef4..0f9ae17 100644
--- a/docs/databases/hive/index.html
+++ b/docs/databases/hive/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/hologres/index.html b/docs/databases/hologres/index.html
index 09193bb..87874c9 100644
--- a/docs/databases/hologres/index.html
+++ b/docs/databases/hologres/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/ibm-db2/index.html b/docs/databases/ibm-db2/index.html
index 5bce074..651be66 100644
--- a/docs/databases/ibm-db2/index.html
+++ b/docs/databases/ibm-db2/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -35,7 +35,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/impala/index.html b/docs/databases/impala/index.html
index f7d4e10..c8c99b9 100644
--- a/docs/databases/impala/index.html
+++ b/docs/databases/impala/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/installing-database-drivers/index.html b/docs/databases/installing-database-drivers/index.html
index 7b0f5f0..12ad549 100644
--- a/docs/databases/installing-database-drivers/index.html
+++ b/docs/databases/installing-database-drivers/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -43,7 +43,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/kusto/index.html b/docs/databases/kusto/index.html
index 723f4ff..6188d10 100644
--- a/docs/databases/kusto/index.html
+++ b/docs/databases/kusto/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -36,7 +36,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/kylin/index.html b/docs/databases/kylin/index.html
index 9150fb2..a0f7046 100644
--- a/docs/databases/kylin/index.html
+++ b/docs/databases/kylin/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -35,7 +35,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/mysql/index.html b/docs/databases/mysql/index.html
index 3ab0cf9..38c6747 100644
--- a/docs/databases/mysql/index.html
+++ b/docs/databases/mysql/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -35,7 +35,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/netezza/index.html b/docs/databases/netezza/index.html
index 4d12a42..83c7001 100644
--- a/docs/databases/netezza/index.html
+++ b/docs/databases/netezza/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -35,7 +35,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/oracle/index.html b/docs/databases/oracle/index.html
index 1c927c2..f0e216f 100644
--- a/docs/databases/oracle/index.html
+++ b/docs/databases/oracle/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -35,7 +35,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/pinot/index.html b/docs/databases/pinot/index.html
index 85f8611..1718ea5 100644
--- a/docs/databases/pinot/index.html
+++ b/docs/databases/pinot/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/postgres/index.html b/docs/databases/postgres/index.html
index 8427b9e..3440be8 100644
--- a/docs/databases/postgres/index.html
+++ b/docs/databases/postgres/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -39,7 +39,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/presto/index.html b/docs/databases/presto/index.html
index 63195ba..58603b1 100644
--- a/docs/databases/presto/index.html
+++ b/docs/databases/presto/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -35,7 +35,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/redshift/index.html b/docs/databases/redshift/index.html
index 39f1356..6e2ab3a 100644
--- a/docs/databases/redshift/index.html
+++ b/docs/databases/redshift/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -35,7 +35,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/risingwave/index.html b/docs/databases/risingwave/index.html
index f1c4ad1..866b621 100644
--- a/docs/databases/risingwave/index.html
+++ b/docs/databases/risingwave/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -35,7 +35,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/rockset/index.html b/docs/databases/rockset/index.html
index 9fe3c76..ce8cc7d 100644
--- a/docs/databases/rockset/index.html
+++ b/docs/databases/rockset/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/snowflake/index.html b/docs/databases/snowflake/index.html
index 808ee8b..70fdf33 100644
--- a/docs/databases/snowflake/index.html
+++ b/docs/databases/snowflake/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -43,7 +43,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/solr/index.html b/docs/databases/solr/index.html
index 986f99c..a9c711d 100644
--- a/docs/databases/solr/index.html
+++ b/docs/databases/solr/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -35,7 +35,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/spark-sql/index.html b/docs/databases/spark-sql/index.html
index 9622bd8..21c9577 100644
--- a/docs/databases/spark-sql/index.html
+++ b/docs/databases/spark-sql/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/sql-server/index.html b/docs/databases/sql-server/index.html
index 2f80420..d26cf93 100644
--- a/docs/databases/sql-server/index.html
+++ b/docs/databases/sql-server/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/teradata/index.html b/docs/databases/teradata/index.html
index 1c824c0..d6d3555 100644
--- a/docs/databases/teradata/index.html
+++ b/docs/databases/teradata/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -41,7 +41,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/timescaledb/index.html b/docs/databases/timescaledb/index.html
index 354e5c5..5263009 100644
--- a/docs/databases/timescaledb/index.html
+++ b/docs/databases/timescaledb/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -35,7 +35,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/trino/index.html b/docs/databases/trino/index.html
index 7822fcf..024c9b5 100644
--- a/docs/databases/trino/index.html
+++ b/docs/databases/trino/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -36,7 +36,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/vertica/index.html b/docs/databases/vertica/index.html
index 04d8a68..0267f32 100644
--- a/docs/databases/vertica/index.html
+++ b/docs/databases/vertica/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -36,7 +36,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/yugabytedb/index.html b/docs/databases/yugabytedb/index.html
index 3b20607..1ec3245 100644
--- a/docs/databases/yugabytedb/index.html
+++ b/docs/databases/yugabytedb/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -36,7 +36,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/frequently-asked-questions/index.html b/docs/frequently-asked-questions/index.html
index 6c759ff..0546874 100644
--- a/docs/frequently-asked-questions/index.html
+++ b/docs/frequently-asked-questions/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -117,7 +117,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/alerts-reports/index.html b/docs/installation/alerts-reports/index.html
index c128e5c..f69d3ab 100644
--- a/docs/installation/alerts-reports/index.html
+++ b/docs/installation/alerts-reports/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -61,7 +61,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/async-queries-celery/index.html b/docs/installation/async-queries-celery/index.html
index 0644099..adcc0f8 100644
--- a/docs/installation/async-queries-celery/index.html
+++ b/docs/installation/async-queries-celery/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -50,7 +50,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/cache/index.html b/docs/installation/cache/index.html
index 747f3a5..cb70a82 100644
--- a/docs/installation/cache/index.html
+++ b/docs/installation/cache/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/configuring-superset/index.html b/docs/installation/configuring-superset/index.html
index f5a5122..c90dbfb 100644
--- a/docs/installation/configuring-superset/index.html
+++ b/docs/installation/configuring-superset/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -71,7 +71,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/event-logging/index.html b/docs/installation/event-logging/index.html
index 2f21b61..f7cd669 100644
--- a/docs/installation/event-logging/index.html
+++ b/docs/installation/event-logging/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -40,7 +40,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/installing-superset-from-scratch/index.html b/docs/installation/installing-superset-from-scratch/index.html
index 2cd871e..81618f7 100644
--- a/docs/installation/installing-superset-from-scratch/index.html
+++ b/docs/installation/installing-superset-from-scratch/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/installing-superset-using-docker-compose/index.html b/docs/installation/installing-superset-using-docker-compose/index.html
index 5dbb9f0..b62dc52 100644
--- a/docs/installation/installing-superset-using-docker-compose/index.html
+++ b/docs/installation/installing-superset-using-docker-compose/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -57,7 +57,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/networking-settings/index.html b/docs/installation/networking-settings/index.html
index 954026b..ff0fb45 100644
--- a/docs/installation/networking-settings/index.html
+++ b/docs/installation/networking-settings/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -43,7 +43,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/running-on-kubernetes/index.html b/docs/installation/running-on-kubernetes/index.html
index e8cdd58..2f91107 100644
--- a/docs/installation/running-on-kubernetes/index.html
+++ b/docs/installation/running-on-kubernetes/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -41,7 +41,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/setup-ssh-tunneling/index.html b/docs/installation/setup-ssh-tunneling/index.html
index 7c0b9dd..b187326 100644
--- a/docs/installation/setup-ssh-tunneling/index.html
+++ b/docs/installation/setup-ssh-tunneling/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/sql-templating/index.html b/docs/installation/sql-templating/index.html
index 01840f1..915481b 100644
--- a/docs/installation/sql-templating/index.html
+++ b/docs/installation/sql-templating/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -26,12 +26,14 @@
 To enable templating, the <code>ENABLE_TEMPLATE_PROCESSING</code> <a href="https://superset.apache.org/docs/installation/configuring-superset#feature-flags" target="_blank" rel="noopener noreferrer">feature flag</a> needs to be enabled in
 <code>superset_config.py</code>. When templating is enabled, python code can be embedded in virtual datasets and
 in Custom SQL in the filter and metric controls in Explore. By default, the following variables are
-made available in the Jinja context:</p><ul><li><code>columns</code>: columns which to group by in the query</li><li><code>filter</code>: filters applied in the query</li><li><code>from_dttm</code>: start <code>datetime</code> value from the selected time range (<code>None</code> if undefined)</li><li><code>to_dttm</code>: end <code>datetime</code> value from the selected time range (<code>None</code> if undefined)</li><li><code>groupby</code>: columns which to group by in the query (deprecated)</li><li><code>metrics</code>: aggregate expressions in the query</li><li><code>row_limit</code>: row limit of the query</li><li><code>row_offset</code>: row offset of the query</li><li><code>table_columns</code>: columns available in the dataset</li><li><code>time_column</code>: temporal column of the query (<code>None</code> if undefined)</li><li><code>time_grain</code>: selected time grain (<code>None</code> if undefined)</li></ul><p>For example, to add a time range to a virtual dataset, you can write the following:</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> tbl </span><span class="token keyword" style="color:#00009f">where</span><span class="token plain"> dttm_col </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;{{ from_dttm }}&#x27;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">and</span><span class="token plain"> dttm_col </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;{{ to_dttm }}&#x27;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>You can also use <a href="https://jinja.palletsprojects.com/en/2.11.x/templates/#tests" target="_blank" rel="noopener noreferrer">Jinja&#x27;s logic</a>
+made available in the Jinja context:</p><ul><li><code>columns</code>: columns which to group by in the query</li><li><code>filter</code>: filters applied in the query</li><li><code>from_dttm</code>: start <code>datetime</code> value from the selected time range (<code>None</code> if undefined)</li><li><code>to_dttm</code>: end <code>datetime</code> value from the selected time range (<code>None</code> if undefined)</li><li><code>groupby</code>: columns which to group by in the query (deprecated)</li><li><code>metrics</code>: aggregate expressions in the query</li><li><code>row_limit</code>: row limit of the query</li><li><code>row_offset</code>: row offset of the query</li><li><code>table_columns</code>: columns available in the dataset</li><li><code>time_column</code>: temporal column of the query (<code>None</code> if undefined)</li><li><code>time_grain</code>: selected time grain (<code>None</code> if undefined)</li></ul><p>For example, to add a time range to a virtual dataset, you can write the following:</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> tbl</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> dttm_col </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;{{ from_dttm }}&#x27;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">and</span><span class="token plain"> dttm_col </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;{{ to_dttm }}&#x27;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>You can also use <a href="https://jinja.palletsprojects.com/en/2.11.x/templates/#tests" target="_blank" rel="noopener noreferrer">Jinja&#x27;s logic</a>
 to make your query robust to clearing the timerange filter:</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> tbl</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    {</span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> from_dttm </span><span class="token operator" style="color:#393A34">is</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">not</span><span class="token plain"> none </span><span class="token operator" style="color:#393A34">%</span><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        dttm_col </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;{{ from_dttm }}&#x27;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">AND</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    {</span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> endif </span><span class="token operator" style="color:#393A34">%</span><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    {</span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> to_dttm </span><span class="token operator" style="color:#393A34">is</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">not</span><span class="token plain"> none </span><span class="token operator" style="color:#393A34">%</span><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        dttm_col </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;{{ to_dttm }}&#x27;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">AND</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    {</span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> endif </span><span class="token operator" style="color:#393A34">%</span><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Note how the Jinja parameters are called within double brackets in the query, and without in the
 logic blocks.</p><p>To add custom functionality to the Jinja context, you need to overload the default Jinja
 context in your environment by defining the <code>JINJA_CONTEXT_ADDONS</code> in your superset configuration
 (<code>superset_config.py</code>). Objects referenced in this dictionary are made available for users to use
-where the Jinja context is made available.</p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">JINJA_CONTEXT_ADDONS </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">&#x27;my_crazy_macro&#x27;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">lambda</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> x</span><span class="token operator" style="color:#393A34">*</span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Besides default Jinja templating, SQL lab also supports self-defined template processor by setting
+where the Jinja context is made available.</p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">JINJA_CONTEXT_ADDONS </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">&#x27;my_crazy_macro&#x27;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">lambda</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> x</span><span class="token operator" style="color:#393A34">*</span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Default values for jinja templates can be specified via <code>Parameters</code> menu in the SQL Lab user interface.
+In the UI you can assign a set of parameters as JSON</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">&quot;my_table&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;foo&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The parameters become available in your SQL (example: <code>SELECT * FROM {{ my_table }}</code> ) by using Jinja templating syntax.
+SQL Lab template parameters are stored with the dataset as <code>TEMPLATE PARAMETERS</code>.</p><p>There is a special <code>_filters</code> parameter which can be used to test filters used in the jinja template.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">&quot;_filters&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">&quot;col&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;action_type&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">&quot;op&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;IN&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">&quot;val&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">&quot;sell&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;buy&quot;</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">action</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">count</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> times</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> logs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">action</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">in</span><span class="token plain"> {{ filter_values</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">&#x27;action_type&#x27;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">|</span><span class="token plain">where_in }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">GROUP</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">BY</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">action</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Note <code>_filters</code> is not stored with the dataset. It&#x27;s only used within the SQL Lab UI.</p><p>Besides default Jinja templating, SQL lab also supports self-defined template processor by setting
 the <code>CUSTOM_TEMPLATE_PROCESSORS</code> in your superset configuration. The values in this dictionary
 overwrite the default Jinja template processors of the specified database engine. The example below
 configures a custom presto template processor which implements its own logic of processing macro
@@ -47,13 +49,13 @@
 by Superset when calculating the cache key. A cache key is a unique identifier that determines if there&#x27;s a
 cache hit in the future and Superset can retrieve cached data.</p><p>You can disable the inclusion of the <code>user_id</code> value in the calculation of the
 cache key by adding the following parameter to your Jinja code:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">{{ current_user_id(add_to_cache_keys=False) }}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><strong>Custom URL Parameters</strong></p><p>The <code>{{ url_param(&#x27;custom_variable&#x27;) }}</code> macro lets you define arbitrary URL
-parameters and reference them in your SQL code.</p><p>Here&#x27;s a concrete example:</p><ul><li><p>You write the following query in SQL Lab:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">SELECT count(*)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">FROM ORDERS</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">WHERE country_code = &#x27;{{ url_param(&#x27;countrycode&#x27;) }}&#x27;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>You&#x27;re hosting Superset at the domain <a href="http://www.example.com" target="_blank" rel="noopener noreferrer">www.example.com</a> and you send your
+parameters and reference them in your SQL code.</p><p>Here&#x27;s a concrete example:</p><ul><li><p>You write the following query in SQL Lab:</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">count</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> ORDERS</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> country_code </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;{{ url_param(&#x27;</span><span class="token plain">countrycode</span><span class="token string" style="color:#e3116c">&#x27;) }}&#x27;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>You&#x27;re hosting Superset at the domain <a href="http://www.example.com" target="_blank" rel="noopener noreferrer">www.example.com</a> and you send your
 coworker in Spain the following SQL Lab URL <code>www.example.com/superset/sqllab?countrycode=ES</code>
-and your coworker in the USA the following SQL Lab URL <code>www.example.com/superset/sqllab?countrycode=US</code></p></li><li><p>For your coworker in Spain, the SQL Lab query will be rendered as:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">SELECT count(*)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">FROM ORDERS</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">WHERE country_code = &#x27;ES&#x27;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>For your coworker in the USA, the SQL Lab query will be rendered as:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">SELECT count(*)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">FROM ORDERS</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">WHERE country_code = &#x27;US&#x27;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ul><p><strong>Explicitly Including Values in Cache Key</strong></p><p>The <code>{{ cache_key_wrapper() }}</code> function explicitly instructs Superset to add a value to the
+and your coworker in the USA the following SQL Lab URL <code>www.example.com/superset/sqllab?countrycode=US</code></p></li><li><p>For your coworker in Spain, the SQL Lab query will be rendered as:</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">count</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> ORDERS</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> country_code </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;ES&#x27;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>For your coworker in the USA, the SQL Lab query will be rendered as:</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">count</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> ORDERS</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> country_code </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;US&#x27;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ul><p><strong>Explicitly Including Values in Cache Key</strong></p><p>The <code>{{ cache_key_wrapper() }}</code> function explicitly instructs Superset to add a value to the
 accumulated list of values used in the calculation of the cache key.</p><p>This function is only needed when you want to wrap your own custom function return values
 in the cache key. You can gain more context
 <a href="https://github.com/apache/superset/blob/efd70077014cbed62e493372d33a2af5237eaadf/superset/jinja_context.py#L133-L148" target="_blank" rel="noopener noreferrer">here</a>.</p><p>Note that this function powers the caching of the <code>user_id</code> and <code>username</code> values
-in the <code>current_user_id()</code> and <code>current_username()</code> function calls (if you have caching enabled).</p><p><strong>Filter Values</strong></p><p>You can retrieve the value for a specific filter as a list using <code>{{ filter_values() }}</code>.</p><p>This is useful if:</p><ul><li>You want to use a filter component to filter a query where the name of filter component column doesn&#x27;t match the one in the select statement</li><li>You want to have the ability for filter inside the main query for performance purposes</li></ul><p>Here&#x27;s a concrete example:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">SELECT action, count(*) as times</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">FROM logs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">WHERE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    action in {{ filter_values(&#x27;action_type&#x27;)|where_in }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">GROUP BY action</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>There <code>where_in</code> filter converts the list of values from <code>filter_values(&#x27;action_type&#x27;)</code> into a string suitable for an <code>IN</code> expression.</p><p><strong>Filters for a Specific Column</strong></p><p>The <code>{{ get_filters() }}</code> macro returns the filters applied to a given column. In addition to
+in the <code>current_user_id()</code> and <code>current_username()</code> function calls (if you have caching enabled).</p><p><strong>Filter Values</strong></p><p>You can retrieve the value for a specific filter as a list using <code>{{ filter_values() }}</code>.</p><p>This is useful if:</p><ul><li>You want to use a filter component to filter a query where the name of filter component column doesn&#x27;t match the one in the select statement</li><li>You want to have the ability for filter inside the main query for performance purposes</li></ul><p>Here&#x27;s a concrete example:</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">action</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">count</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> times</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> logs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">action</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">in</span><span class="token plain"> {{ filter_values</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">&#x27;action_type&#x27;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">|</span><span class="token plain">where_in }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">GROUP</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">BY</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">action</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>There <code>where_in</code> filter converts the list of values from <code>filter_values(&#x27;action_type&#x27;)</code> into a string suitable for an <code>IN</code> expression.</p><p><strong>Filters for a Specific Column</strong></p><p>The <code>{{ get_filters() }}</code> macro returns the filters applied to a given column. In addition to
 returning the values (similar to how <code>filter_values()</code> does), the <code>get_filters()</code> macro
 returns the operator specified in the Explore UI.</p><p>This is useful if:</p><ul><li>You want to handle more than the IN operator in your SQL clause</li><li>You want to handle generating custom SQL conditions for a filter</li><li>You want to have the ability to filter inside the main query for speed purposes</li></ul><p>Here&#x27;s a concrete example:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"> WITH RECURSIVE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    superiors(employee_id, manager_id, full_name, level, lineage) AS (</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SELECT</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        employee_id,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        manager_id,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        full_name,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    1 as level,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    employee_id as lineage</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    FROM</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        employees</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    WHERE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    1=1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    {# Render a blank line #}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    {%- for filter in get_filters(&#x27;full_name&#x27;, remove_filter=True) -%}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    {%- if filter.get(&#x27;op&#x27;) == &#x27;IN&#x27; -%}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        AND</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        full_name IN {{ filter.get(&#x27;val&#x27;)|where_in }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    {%- endif -%}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    {%- if filter.get(&#x27;op&#x27;) == &#x27;LIKE&#x27; -%}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        AND</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        full_name LIKE {{ &quot;&#x27;&quot; + filter.get(&#x27;val&#x27;) + &quot;&#x27;&quot; }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    {%- endif -%}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    {%- endfor -%}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    UNION ALL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        SELECT</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            e.employee_id,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            e.manager_id,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            e.full_name,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    s.level + 1 as level,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    s.lineage</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        FROM</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            employees e,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        superiors s</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        WHERE s.manager_id = e.employee_id</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    )</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SELECT</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    employee_id, manager_id, full_name, level, lineage</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    FROM</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    superiors</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    order by lineage, level</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><strong>Datasets</strong></p><p>It&#x27;s possible to query physical and virtual datasets using the <code>dataset</code> macro. This is useful if you&#x27;ve defined computed columns and metrics on your datasets, and want to reuse the definition in adhoc SQL Lab queries.</p><p>To use the macro, first you need to find the ID of the dataset. This can be done by going to the view showing all the datasets, hovering over the dataset you&#x27;re interested in, and looking at its URL. For example, if the URL for a dataset is <a href="https://superset.example.org/explore/?dataset_type=table&amp;dataset_id=42" target="_blank" rel="noopener noreferrer">https://superset.example.org/explore/?dataset_type=table&amp;dataset_id=42</a> its ID is 42.</p><p>Once you have the ID you can query it as if it were a table:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">SELECT * FROM {{ dataset(42) }} LIMIT 10</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If you want to select the metric definitions as well, in addition to the columns, you need to pass an additional keyword argument:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">SELECT * FROM {{ dataset(42, include_metrics=True) }} LIMIT 10</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Since metrics are aggregations, the resulting SQL expression will be grouped by all non-metric columns. You can specify a subset of columns to group by instead:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">SELECT * FROM {{ dataset(42, include_metrics=True, columns=[&quot;ds&quot;, &quot;category&quot;]) }} LIMIT 10</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/superset/tree/master/docs/docs/installation/sql-templating.mdx" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/installation/alerts-reports"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Alerts and Reports</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/installation/running-on-kubernetes"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Running on Kubernetes</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#sql-templating" class="table-of-contents__link toc-highlight">SQL Templating</a><ul><li><a href="#jinja-templates" class="table-of-contents__link toc-highlight">Jinja Templates</a></li><li><a href="#available-macros" class="table-of-contents__link toc-highlight">Available Macros</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023,
         The <a href="https://www.apache.org/" target="_blank" rel="noreferrer">Apache Software Foundation</a>,
@@ -67,7 +69,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/upgrading-superset/index.html b/docs/installation/upgrading-superset/index.html
index c124dcd..fb816f1 100644
--- a/docs/installation/upgrading-superset/index.html
+++ b/docs/installation/upgrading-superset/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -36,7 +36,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/intro/index.html b/docs/intro/index.html
index 7a138b8..0b7e474 100644
--- a/docs/intro/index.html
+++ b/docs/intro/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/chart-params/index.html b/docs/miscellaneous/chart-params/index.html
index 3a875b5..406a3ca 100644
--- a/docs/miscellaneous/chart-params/index.html
+++ b/docs/miscellaneous/chart-params/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/country-map-tools/index.html b/docs/miscellaneous/country-map-tools/index.html
index 83c0470..abfc0ba 100644
--- a/docs/miscellaneous/country-map-tools/index.html
+++ b/docs/miscellaneous/country-map-tools/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -40,7 +40,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/importing-exporting-datasources/index.html b/docs/miscellaneous/importing-exporting-datasources/index.html
index a1c3ee6..c824d34 100644
--- a/docs/miscellaneous/importing-exporting-datasources/index.html
+++ b/docs/miscellaneous/importing-exporting-datasources/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/issue-codes/index.html b/docs/miscellaneous/issue-codes/index.html
index b5b13a3..fcda95e 100644
--- a/docs/miscellaneous/issue-codes/index.html
+++ b/docs/miscellaneous/issue-codes/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -63,7 +63,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/security/index.html b/docs/security/index.html
index 26a1fcf..9966930 100644
--- a/docs/security/index.html
+++ b/docs/security/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -108,7 +108,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index 404e56c..9c5483a 100644
--- a/index.html
+++ b/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -50,7 +50,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/markdown-page/index.html b/markdown-page/index.html
index 0a085e2..821b068 100644
--- a/markdown-page/index.html
+++ b/markdown-page/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/search/index.html b/search/index.html
index ad4c92a..96e7a7e 100644
--- a/search/index.html
+++ b/search/index.html
@@ -17,7 +17,7 @@
 
 
 <script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.9318be51.css">
-<link rel="preload" href="/assets/js/runtime~main.efcada53.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.57d9aa12.js" as="script">
 <link rel="preload" href="/assets/js/main.38412d19.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -34,7 +34,7 @@
         <a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
         <a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
         </small></div></div></div></footer></div>
-<script src="/assets/js/runtime~main.efcada53.js"></script>
+<script src="/assets/js/runtime~main.57d9aa12.js"></script>
 <script src="/assets/js/main.38412d19.js"></script>
 </body>
 </html>
\ No newline at end of file