deploying docs: feat(jinja): metric macro (#27582) (apache/superset@d87422527b25adec347cbec978fcc9b4ff56cb53)
diff --git a/404.html b/404.html
index dd91062..cb40816 100644
--- a/404.html
+++ b/404.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/js/18cf5ace.3a52d4a9.js b/assets/js/18cf5ace.90a3a8f6.js
similarity index 94%
rename from assets/js/18cf5ace.3a52d4a9.js
rename to assets/js/18cf5ace.90a3a8f6.js
index eff78d4..fcdb883 100644
--- a/assets/js/18cf5ace.3a52d4a9.js
+++ b/assets/js/18cf5ace.90a3a8f6.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[1873],{15680:(e,n,t)=>{t.d(n,{xA:()=>u,yg:()=>g});var a=t(96540);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function o(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=a.createContext({}),p=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},u=function(e){var n=p(e.components);return a.createElement(s.Provider,{value:n},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},d=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=p(t),d=r,g=c["".concat(s,".").concat(d)]||c[d]||m[d]||i;return t?a.createElement(g,l(l({ref:n},u),{},{components:t})):a.createElement(g,l({ref:n},u))}));function g(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,l=new Array(i);l[0]=d;var o={};for(var s in n)hasOwnProperty.call(n,s)&&(o[s]=n[s]);o.originalType=e,o[c]="string"==typeof e?e:r,l[1]=o;for(var p=2;p<i;p++)l[p]=t[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,t)}d.displayName="MDXCreateElement"},87935:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=t(58168),r=(t(96540),t(15680));const i={title:"SQL Templating",hide_title:!0,sidebar_position:11,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/edit/master/docs/docs/installation/sql-templating.mdx",tags:[],version:"current",sidebarPosition:11,frontMatter:{title:"SQL Templating",hide_title:!0,sidebar_position:11,version:1},sidebar:"tutorialSidebar",previous:{title:"Alerts and Reports",permalink:"/docs/installation/alerts-reports"},next:{title:"Setup SSH Tunneling",permalink:"/docs/installation/setup-ssh-tunneling"}},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:n,...t}=e;return(0,r.yg)(c,(0,a.A)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("h2",{id:"sql-templating"},"SQL Templating"),(0,r.yg)("h3",{id:"jinja-templates"},"Jinja Templates"),(0,r.yg)("p",null,"SQL Lab and Explore supports ",(0,r.yg)("a",{parentName:"p",href:"https://jinja.palletsprojects.com/en/2.11.x/"},"Jinja templating")," in queries.\nTo enable templating, the ",(0,r.yg)("inlineCode",{parentName:"p"},"ENABLE_TEMPLATE_PROCESSING")," ",(0,r.yg)("a",{parentName:"p",href:"/docs/installation/configuring-superset#feature-flags"},"feature flag")," needs to be enabled in\n",(0,r.yg)("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.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"columns"),": columns which to group by in the query"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"filter"),": filters applied in the query"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"from_dttm"),": start ",(0,r.yg)("inlineCode",{parentName:"li"},"datetime")," value from the selected time range (",(0,r.yg)("inlineCode",{parentName:"li"},"None")," if undefined)"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"to_dttm"),": end ",(0,r.yg)("inlineCode",{parentName:"li"},"datetime")," value from the selected time range (",(0,r.yg)("inlineCode",{parentName:"li"},"None")," if undefined)"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"groupby"),": columns which to group by in the query (deprecated)"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"metrics"),": aggregate expressions in the query"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"row_limit"),": row limit of the query"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"row_offset"),": row offset of the query"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"table_columns"),": columns available in the dataset"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"time_column"),": temporal column of the query (",(0,r.yg)("inlineCode",{parentName:"li"},"None")," if undefined)"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"time_grain"),": selected time grain (",(0,r.yg)("inlineCode",{parentName:"li"},"None")," if undefined)")),(0,r.yg)("p",null,"For example, to add a time range to a virtual dataset, you can write the following:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-sql"},"SELECT *\nFROM tbl\nWHERE dttm_col > '{{ from_dttm }}' and dttm_col < '{{ to_dttm }}'\n")),(0,r.yg)("p",null,"You can also use ",(0,r.yg)("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.yg)("pre",null,(0,r.yg)("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.yg)("p",null,"Note how the Jinja parameters are called within double brackets in the query, and without in the\nlogic blocks."),(0,r.yg)("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.yg)("inlineCode",{parentName:"p"},"JINJA_CONTEXT_ADDONS")," in your superset configuration\n(",(0,r.yg)("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.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-python"},"JINJA_CONTEXT_ADDONS = {\n    'my_crazy_macro': lambda x: x*2,\n}\n")),(0,r.yg)("p",null,"Default values for jinja templates can be specified via ",(0,r.yg)("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.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-json"},'{\n  "my_table": "foo"\n}\n')),(0,r.yg)("p",null,"The parameters become available in your SQL (example: ",(0,r.yg)("inlineCode",{parentName:"p"},"SELECT * FROM {{ my_table }}")," ) by using Jinja templating syntax.\nSQL Lab template parameters are stored with the dataset as ",(0,r.yg)("inlineCode",{parentName:"p"},"TEMPLATE PARAMETERS"),"."),(0,r.yg)("p",null,"There is a special ",(0,r.yg)("inlineCode",{parentName:"p"},"_filters")," parameter which can be used to test filters used in the jinja template."),(0,r.yg)("pre",null,(0,r.yg)("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.yg)("pre",null,(0,r.yg)("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.yg)("p",null,"Note ",(0,r.yg)("inlineCode",{parentName:"p"},"_filters")," is not stored with the dataset. It's only used within the SQL Lab UI."),(0,r.yg)("p",null,"Besides default Jinja templating, SQL lab also supports self-defined template processor by setting\nthe ",(0,r.yg)("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.yg)("inlineCode",{parentName:"p"},"$")," style macro instead of ",(0,r.yg)("inlineCode",{parentName:"p"},"{{ }}")," style in Jinja\ntemplating."),(0,r.yg)("p",null,"By configuring it with ",(0,r.yg)("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.yg)("pre",null,(0,r.yg)("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.yg)("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.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-python"},"FEATURE_FLAGS = {\n    'SQL_VALIDATORS_BY_ENGINE': {\n        'presto': 'PrestoDBSQLValidator',\n    }\n}\n")),(0,r.yg)("p",null,"The available validators and names can be found in\n",(0,r.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/tree/master/superset/sql_validators"},"sql_validators"),"."),(0,r.yg)("h3",{id:"available-macros"},"Available Macros"),(0,r.yg)("p",null,"In this section, we'll walkthrough the pre-defined Jinja macros in Superset."),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Current Username")),(0,r.yg)("p",null,"The ",(0,r.yg)("inlineCode",{parentName:"p"},"{{ current_username() }}")," macro returns the ",(0,r.yg)("inlineCode",{parentName:"p"},"username")," of the currently logged in user."),(0,r.yg)("p",null,"If you have caching enabled in your Superset configuration, then by default the ",(0,r.yg)("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.yg)("p",null,"You can disable the inclusion of the ",(0,r.yg)("inlineCode",{parentName:"p"},"username")," value in the calculation of the\ncache key by adding the following parameter to your Jinja code:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"{{ current_username(add_to_cache_keys=False) }}\n")),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Current User ID")),(0,r.yg)("p",null,"The ",(0,r.yg)("inlineCode",{parentName:"p"},"{{ current_user_id() }}")," macro returns the account ID of the currently logged in user."),(0,r.yg)("p",null,"If you have caching enabled in your Superset configuration, then by default the account ",(0,r.yg)("inlineCode",{parentName:"p"},"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.yg)("p",null,"You can disable the inclusion of the account ",(0,r.yg)("inlineCode",{parentName:"p"},"id")," value in the calculation of the\ncache key by adding the following parameter to your Jinja code:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"{{ current_user_id(add_to_cache_keys=False) }}\n")),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Current User Email")),(0,r.yg)("p",null,"The ",(0,r.yg)("inlineCode",{parentName:"p"},"{{ current_user_email() }}")," macro returns the email address of the currently logged in user."),(0,r.yg)("p",null,"If you have caching enabled in your Superset configuration, then by default the email address 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.yg)("p",null,"You can disable the inclusion of the email value in the calculation of the\ncache key by adding the following parameter to your Jinja code:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"{{ current_user_email(add_to_cache_keys=False) }}\n")),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Custom URL Parameters")),(0,r.yg)("p",null,"The ",(0,r.yg)("inlineCode",{parentName:"p"},"{{ url_param('custom_variable') }}")," macro lets you define arbitrary URL\nparameters and reference them in your SQL code."),(0,r.yg)("p",null,"Here's a concrete example:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("p",{parentName:"li"},"You write the following query in SQL Lab:"),(0,r.yg)("pre",{parentName:"li"},(0,r.yg)("code",{parentName:"pre",className:"language-sql"},"SELECT count(*)\nFROM ORDERS\nWHERE country_code = '{{ url_param('countrycode') }}'\n"))),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("p",{parentName:"li"},"You're hosting Superset at the domain ",(0,r.yg)("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.yg)("inlineCode",{parentName:"p"},"www.example.com/superset/sqllab?countrycode=ES"),"\nand your coworker in the USA the following SQL Lab URL ",(0,r.yg)("inlineCode",{parentName:"p"},"www.example.com/superset/sqllab?countrycode=US"))),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("p",{parentName:"li"},"For your coworker in Spain, the SQL Lab query will be rendered as:"),(0,r.yg)("pre",{parentName:"li"},(0,r.yg)("code",{parentName:"pre",className:"language-sql"},"SELECT count(*)\nFROM ORDERS\nWHERE country_code = 'ES'\n"))),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("p",{parentName:"li"},"For your coworker in the USA, the SQL Lab query will be rendered as:"),(0,r.yg)("pre",{parentName:"li"},(0,r.yg)("code",{parentName:"pre",className:"language-sql"},"SELECT count(*)\nFROM ORDERS\nWHERE country_code = 'US'\n")))),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Explicitly Including Values in Cache Key")),(0,r.yg)("p",null,"The ",(0,r.yg)("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.yg)("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.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/blob/efd70077014cbed62e493372d33a2af5237eaadf/superset/jinja_context.py#L133-L148"},"here"),"."),(0,r.yg)("p",null,"Note that this function powers the caching of the ",(0,r.yg)("inlineCode",{parentName:"p"},"user_id")," and ",(0,r.yg)("inlineCode",{parentName:"p"},"username")," values\nin the ",(0,r.yg)("inlineCode",{parentName:"p"},"current_user_id()")," and ",(0,r.yg)("inlineCode",{parentName:"p"},"current_username()")," function calls (if you have caching enabled)."),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Filter Values")),(0,r.yg)("p",null,"You can retrieve the value for a specific filter as a list using ",(0,r.yg)("inlineCode",{parentName:"p"},"{{ filter_values() }}"),"."),(0,r.yg)("p",null,"This is useful if:"),(0,r.yg)("ul",null,(0,r.yg)("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.yg)("li",{parentName:"ul"},"You want to have the ability for filter inside the main query for performance purposes")),(0,r.yg)("p",null,"Here's a concrete example:"),(0,r.yg)("pre",null,(0,r.yg)("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.yg)("p",null,"There ",(0,r.yg)("inlineCode",{parentName:"p"},"where_in")," filter converts the list of values from ",(0,r.yg)("inlineCode",{parentName:"p"},"filter_values('action_type')")," into a string suitable for an ",(0,r.yg)("inlineCode",{parentName:"p"},"IN")," expression."),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Filters for a Specific Column")),(0,r.yg)("p",null,"The ",(0,r.yg)("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.yg)("inlineCode",{parentName:"p"},"filter_values()")," does), the ",(0,r.yg)("inlineCode",{parentName:"p"},"get_filters()")," macro\nreturns the operator specified in the Explore UI."),(0,r.yg)("p",null,"This is useful if:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"You want to handle more than the IN operator in your SQL clause"),(0,r.yg)("li",{parentName:"ul"},"You want to handle generating custom SQL conditions for a filter"),(0,r.yg)("li",{parentName:"ul"},"You want to have the ability to filter inside the main query for speed purposes")),(0,r.yg)("p",null,"Here's a concrete example:"),(0,r.yg)("pre",null,(0,r.yg)("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.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Datasets")),(0,r.yg)("p",null,"It's possible to query physical and virtual datasets using the ",(0,r.yg)("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.yg)("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.yg)("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.yg)("p",null,"Once you have the ID you can query it as if it were a table:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"SELECT * FROM {{ dataset(42) }} LIMIT 10\n")),(0,r.yg)("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.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"SELECT * FROM {{ dataset(42, include_metrics=True) }} LIMIT 10\n")),(0,r.yg)("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.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},'SELECT * FROM {{ dataset(42, include_metrics=True, columns=["ds", "category"]) }} LIMIT 10\n')))}m.isMDXComponent=!0}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[1873],{15680:(e,n,t)=>{t.d(n,{xA:()=>u,yg:()=>g});var a=t(96540);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function o(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=a.createContext({}),p=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},u=function(e){var n=p(e.components);return a.createElement(s.Provider,{value:n},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},d=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=p(t),d=r,g=c["".concat(s,".").concat(d)]||c[d]||m[d]||i;return t?a.createElement(g,l(l({ref:n},u),{},{components:t})):a.createElement(g,l({ref:n},u))}));function g(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,l=new Array(i);l[0]=d;var o={};for(var s in n)hasOwnProperty.call(n,s)&&(o[s]=n[s]);o.originalType=e,o[c]="string"==typeof e?e:r,l[1]=o;for(var p=2;p<i;p++)l[p]=t[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,t)}d.displayName="MDXCreateElement"},87935:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=t(58168),r=(t(96540),t(15680));const i={title:"SQL Templating",hide_title:!0,sidebar_position:11,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/edit/master/docs/docs/installation/sql-templating.mdx",tags:[],version:"current",sidebarPosition:11,frontMatter:{title:"SQL Templating",hide_title:!0,sidebar_position:11,version:1},sidebar:"tutorialSidebar",previous:{title:"Alerts and Reports",permalink:"/docs/installation/alerts-reports"},next:{title:"Setup SSH Tunneling",permalink:"/docs/installation/setup-ssh-tunneling"}},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:n,...t}=e;return(0,r.yg)(c,(0,a.A)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("h2",{id:"sql-templating"},"SQL Templating"),(0,r.yg)("h3",{id:"jinja-templates"},"Jinja Templates"),(0,r.yg)("p",null,"SQL Lab and Explore supports ",(0,r.yg)("a",{parentName:"p",href:"https://jinja.palletsprojects.com/en/2.11.x/"},"Jinja templating")," in queries.\nTo enable templating, the ",(0,r.yg)("inlineCode",{parentName:"p"},"ENABLE_TEMPLATE_PROCESSING")," ",(0,r.yg)("a",{parentName:"p",href:"/docs/installation/configuring-superset#feature-flags"},"feature flag")," needs to be enabled in\n",(0,r.yg)("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.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"columns"),": columns which to group by in the query"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"filter"),": filters applied in the query"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"from_dttm"),": start ",(0,r.yg)("inlineCode",{parentName:"li"},"datetime")," value from the selected time range (",(0,r.yg)("inlineCode",{parentName:"li"},"None")," if undefined)"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"to_dttm"),": end ",(0,r.yg)("inlineCode",{parentName:"li"},"datetime")," value from the selected time range (",(0,r.yg)("inlineCode",{parentName:"li"},"None")," if undefined)"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"groupby"),": columns which to group by in the query (deprecated)"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"metrics"),": aggregate expressions in the query"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"row_limit"),": row limit of the query"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"row_offset"),": row offset of the query"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"table_columns"),": columns available in the dataset"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"time_column"),": temporal column of the query (",(0,r.yg)("inlineCode",{parentName:"li"},"None")," if undefined)"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"time_grain"),": selected time grain (",(0,r.yg)("inlineCode",{parentName:"li"},"None")," if undefined)")),(0,r.yg)("p",null,"For example, to add a time range to a virtual dataset, you can write the following:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-sql"},"SELECT *\nFROM tbl\nWHERE dttm_col > '{{ from_dttm }}' and dttm_col < '{{ to_dttm }}'\n")),(0,r.yg)("p",null,"You can also use ",(0,r.yg)("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.yg)("pre",null,(0,r.yg)("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.yg)("p",null,"Note how the Jinja parameters are called within double brackets in the query, and without in the\nlogic blocks."),(0,r.yg)("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.yg)("inlineCode",{parentName:"p"},"JINJA_CONTEXT_ADDONS")," in your superset configuration\n(",(0,r.yg)("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.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-python"},"JINJA_CONTEXT_ADDONS = {\n    'my_crazy_macro': lambda x: x*2,\n}\n")),(0,r.yg)("p",null,"Default values for jinja templates can be specified via ",(0,r.yg)("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.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-json"},'{\n  "my_table": "foo"\n}\n')),(0,r.yg)("p",null,"The parameters become available in your SQL (example: ",(0,r.yg)("inlineCode",{parentName:"p"},"SELECT * FROM {{ my_table }}")," ) by using Jinja templating syntax.\nSQL Lab template parameters are stored with the dataset as ",(0,r.yg)("inlineCode",{parentName:"p"},"TEMPLATE PARAMETERS"),"."),(0,r.yg)("p",null,"There is a special ",(0,r.yg)("inlineCode",{parentName:"p"},"_filters")," parameter which can be used to test filters used in the jinja template."),(0,r.yg)("pre",null,(0,r.yg)("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.yg)("pre",null,(0,r.yg)("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.yg)("p",null,"Note ",(0,r.yg)("inlineCode",{parentName:"p"},"_filters")," is not stored with the dataset. It's only used within the SQL Lab UI."),(0,r.yg)("p",null,"Besides default Jinja templating, SQL lab also supports self-defined template processor by setting\nthe ",(0,r.yg)("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.yg)("inlineCode",{parentName:"p"},"$")," style macro instead of ",(0,r.yg)("inlineCode",{parentName:"p"},"{{ }}")," style in Jinja\ntemplating."),(0,r.yg)("p",null,"By configuring it with ",(0,r.yg)("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.yg)("pre",null,(0,r.yg)("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.yg)("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.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-python"},"FEATURE_FLAGS = {\n    'SQL_VALIDATORS_BY_ENGINE': {\n        'presto': 'PrestoDBSQLValidator',\n    }\n}\n")),(0,r.yg)("p",null,"The available validators and names can be found in\n",(0,r.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/tree/master/superset/sql_validators"},"sql_validators"),"."),(0,r.yg)("h3",{id:"available-macros"},"Available Macros"),(0,r.yg)("p",null,"In this section, we'll walkthrough the pre-defined Jinja macros in Superset."),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Current Username")),(0,r.yg)("p",null,"The ",(0,r.yg)("inlineCode",{parentName:"p"},"{{ current_username() }}")," macro returns the ",(0,r.yg)("inlineCode",{parentName:"p"},"username")," of the currently logged in user."),(0,r.yg)("p",null,"If you have caching enabled in your Superset configuration, then by default the ",(0,r.yg)("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.yg)("p",null,"You can disable the inclusion of the ",(0,r.yg)("inlineCode",{parentName:"p"},"username")," value in the calculation of the\ncache key by adding the following parameter to your Jinja code:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"{{ current_username(add_to_cache_keys=False) }}\n")),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Current User ID")),(0,r.yg)("p",null,"The ",(0,r.yg)("inlineCode",{parentName:"p"},"{{ current_user_id() }}")," macro returns the account ID of the currently logged in user."),(0,r.yg)("p",null,"If you have caching enabled in your Superset configuration, then by default the account ",(0,r.yg)("inlineCode",{parentName:"p"},"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.yg)("p",null,"You can disable the inclusion of the account ",(0,r.yg)("inlineCode",{parentName:"p"},"id")," value in the calculation of the\ncache key by adding the following parameter to your Jinja code:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"{{ current_user_id(add_to_cache_keys=False) }}\n")),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Current User Email")),(0,r.yg)("p",null,"The ",(0,r.yg)("inlineCode",{parentName:"p"},"{{ current_user_email() }}")," macro returns the email address of the currently logged in user."),(0,r.yg)("p",null,"If you have caching enabled in your Superset configuration, then by default the email address 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.yg)("p",null,"You can disable the inclusion of the email value in the calculation of the\ncache key by adding the following parameter to your Jinja code:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"{{ current_user_email(add_to_cache_keys=False) }}\n")),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Custom URL Parameters")),(0,r.yg)("p",null,"The ",(0,r.yg)("inlineCode",{parentName:"p"},"{{ url_param('custom_variable') }}")," macro lets you define arbitrary URL\nparameters and reference them in your SQL code."),(0,r.yg)("p",null,"Here's a concrete example:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("p",{parentName:"li"},"You write the following query in SQL Lab:"),(0,r.yg)("pre",{parentName:"li"},(0,r.yg)("code",{parentName:"pre",className:"language-sql"},"SELECT count(*)\nFROM ORDERS\nWHERE country_code = '{{ url_param('countrycode') }}'\n"))),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("p",{parentName:"li"},"You're hosting Superset at the domain ",(0,r.yg)("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.yg)("inlineCode",{parentName:"p"},"www.example.com/superset/sqllab?countrycode=ES"),"\nand your coworker in the USA the following SQL Lab URL ",(0,r.yg)("inlineCode",{parentName:"p"},"www.example.com/superset/sqllab?countrycode=US"))),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("p",{parentName:"li"},"For your coworker in Spain, the SQL Lab query will be rendered as:"),(0,r.yg)("pre",{parentName:"li"},(0,r.yg)("code",{parentName:"pre",className:"language-sql"},"SELECT count(*)\nFROM ORDERS\nWHERE country_code = 'ES'\n"))),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("p",{parentName:"li"},"For your coworker in the USA, the SQL Lab query will be rendered as:"),(0,r.yg)("pre",{parentName:"li"},(0,r.yg)("code",{parentName:"pre",className:"language-sql"},"SELECT count(*)\nFROM ORDERS\nWHERE country_code = 'US'\n")))),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Explicitly Including Values in Cache Key")),(0,r.yg)("p",null,"The ",(0,r.yg)("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.yg)("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.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/blob/efd70077014cbed62e493372d33a2af5237eaadf/superset/jinja_context.py#L133-L148"},"here"),"."),(0,r.yg)("p",null,"Note that this function powers the caching of the ",(0,r.yg)("inlineCode",{parentName:"p"},"user_id")," and ",(0,r.yg)("inlineCode",{parentName:"p"},"username")," values\nin the ",(0,r.yg)("inlineCode",{parentName:"p"},"current_user_id()")," and ",(0,r.yg)("inlineCode",{parentName:"p"},"current_username()")," function calls (if you have caching enabled)."),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Filter Values")),(0,r.yg)("p",null,"You can retrieve the value for a specific filter as a list using ",(0,r.yg)("inlineCode",{parentName:"p"},"{{ filter_values() }}"),"."),(0,r.yg)("p",null,"This is useful if:"),(0,r.yg)("ul",null,(0,r.yg)("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.yg)("li",{parentName:"ul"},"You want to have the ability for filter inside the main query for performance purposes")),(0,r.yg)("p",null,"Here's a concrete example:"),(0,r.yg)("pre",null,(0,r.yg)("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.yg)("p",null,"There ",(0,r.yg)("inlineCode",{parentName:"p"},"where_in")," filter converts the list of values from ",(0,r.yg)("inlineCode",{parentName:"p"},"filter_values('action_type')")," into a string suitable for an ",(0,r.yg)("inlineCode",{parentName:"p"},"IN")," expression."),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Filters for a Specific Column")),(0,r.yg)("p",null,"The ",(0,r.yg)("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.yg)("inlineCode",{parentName:"p"},"filter_values()")," does), the ",(0,r.yg)("inlineCode",{parentName:"p"},"get_filters()")," macro\nreturns the operator specified in the Explore UI."),(0,r.yg)("p",null,"This is useful if:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"You want to handle more than the IN operator in your SQL clause"),(0,r.yg)("li",{parentName:"ul"},"You want to handle generating custom SQL conditions for a filter"),(0,r.yg)("li",{parentName:"ul"},"You want to have the ability to filter inside the main query for speed purposes")),(0,r.yg)("p",null,"Here's a concrete example:"),(0,r.yg)("pre",null,(0,r.yg)("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.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Datasets")),(0,r.yg)("p",null,"It's possible to query physical and virtual datasets using the ",(0,r.yg)("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.yg)("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.yg)("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.yg)("p",null,"Once you have the ID you can query it as if it were a table:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"SELECT * FROM {{ dataset(42) }} LIMIT 10\n")),(0,r.yg)("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.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},"SELECT * FROM {{ dataset(42, include_metrics=True) }} LIMIT 10\n")),(0,r.yg)("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.yg)("pre",null,(0,r.yg)("code",{parentName:"pre"},'SELECT * FROM {{ dataset(42, include_metrics=True, columns=["ds", "category"]) }} LIMIT 10\n')),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"Metrics")),(0,r.yg)("p",null,"The ",(0,r.yg)("inlineCode",{parentName:"p"},"{{ metric('metric_key', dataset_id) }}")," macro can be used to retrieve the metric SQL syntax from a dataset. This can be useful for different purposes:"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"Override the metric label in the chart level"),(0,r.yg)("li",{parentName:"ul"},"Combine multiple metrics in a calculation"),(0,r.yg)("li",{parentName:"ul"},"Retrieve a metric syntax in SQL lab"),(0,r.yg)("li",{parentName:"ul"},"Re-use metrics across datasets")),(0,r.yg)("p",null,"This macro avoids copy/paste, allowing users to centralize the metric definition in the dataset layer."),(0,r.yg)("p",null,"The ",(0,r.yg)("inlineCode",{parentName:"p"},"dataset_id")," parameter is optional, and if not provided Superset will use the current dataset from context (for example, when using this macro in the Chart Builder, by default the ",(0,r.yg)("inlineCode",{parentName:"p"},"macro_key")," will be searched in the dataset powering the chart).\nThe parameter can be used in SQL Lab, or when fetching a metric from another dataset."))}m.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.ae11b19b.js b/assets/js/runtime~main.b54d5adf.js
similarity index 98%
rename from assets/js/runtime~main.ae11b19b.js
rename to assets/js/runtime~main.b54d5adf.js
index 7728cd1..a141b19 100644
--- a/assets/js/runtime~main.ae11b19b.js
+++ b/assets/js/runtime~main.b54d5adf.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,c,f,d,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=b,r.c=t,e=[],r.O=(a,c,f,d)=>{if(!c){var b=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],d=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&d||b>=d)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,d<b&&(b=d));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}d=d||0;for(var i=e.length;i>0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[c,f,d]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var b={};a=a||[null,c({}),c([]),c(c)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(d,b),d},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({3:"a9e1a7f6",217:"b92f705c",435:"1c734f75",491:"f5f07875",517:"471df853",757:"31e90f3c",806:"71cf7fe6",921:"5818c28e",1043:"cf6ffe2f",1121:"dc3fdd24",1135:"0a0a6d3c",1217:"6432bc55",1298:"35a5de3c",1346:"f4a6e698",1392:"eb3b0997",1431:"6948bca1",1799:"69a4ab96",1873:"18cf5ace",2138:"1a4e3797",2422:"afef705c",2539:"ce3fa444",2590:"ee5d850a",2664:"f9cc156b",2736:"2c412ea7",2938:"25f17725",3022:"dbb131dd",3029:"640bc8a0",3462:"f75b37f5",3503:"2461ffa2",3590:"904d61ef",3838:"9d6fd8ea",3989:"9791fd42",4105:"cd90435d",4134:"393be207",4274:"0c21af39",4315:"3c835dee",4411:"da60bc8f",4583:"1df93b7f",4667:"496bf018",4867:"e0a8f778",4914:"8660bbc8",5153:"2f1b3cda",5167:"30334fcd",5331:"53bb5fc4",5347:"dd0670d3",5356:"0ae8b3d4",5602:"36ea7a08",5647:"30ec1363",5718:"eb23a929",5747:"88eaec5a",5901:"2bafca50",5929:"e187e321",6061:"1f391b9e",6097:"19682bb8",6161:"d5417e33",6171:"4e664dc4",6231:"bd23e567",6251:"1c42a294",6276:"dc737160",6342:"5e50ba72",6353:"a584ba2a",6421:"0e9953cd",6505:"74876495",6585:"3c585fdb",6647:"b46ab14b",6682:"c296437a",6713:"e7c796a6",6715:"a309f86e",6723:"262418cd",6903:"f8409a7e",7e3:"1ce51947",7025:"fa1a3aa0",7060:"d83b78fc",7144:"67158350",7268:"58160c0b",7642:"600a9360",7943:"3ec2c3f7",7956:"40974919",8083:"9a9c044b",8172:"c1424005",8359:"fe0957ee",8401:"17896441",8581:"935f2afb",8659:"d76e6194",8714:"1be78505",8880:"57b59cd4",9082:"21b4b958",9087:"4cc2c078",9122:"6a90d500",9249:"5ea65e65",9425:"c76f729d",9657:"6edc47f3",9761:"30256b0d",9814:"07f0ce13",9935:"070b53d1",9938:"507542a3",9958:"972382ea"}[e]||e)+"."+{3:"f18bee19",217:"5d9f89ba",416:"bbfa475a",435:"e7a48716",491:"c7be7c11",517:"dc8822e4",757:"5a79937a",806:"246f8b0c",921:"1e59b5b9",1043:"6673030e",1121:"ecca1a4e",1135:"c0175a9a",1217:"3ad95028",1298:"1c2c6c36",1346:"f3bb9a8c",1392:"8d2b9219",1431:"b799711d",1774:"d317c627",1799:"2c0d3051",1873:"3a52d4a9",2138:"14bcedcd",2185:"992929ee",2422:"eecf620f",2539:"9073513e",2590:"c007b05c",2664:"08264843",2736:"1d48e1ad",2938:"1e13bc28",3022:"71f2133e",3029:"8cefa9b4",3126:"29eff39e",3444:"71e4fec8",3462:"f5fce989",3503:"85c3aadb",3590:"f4cfea6d",3838:"49061a6f",3989:"70accff7",4105:"a3341909",4134:"6a02eb3f",4274:"3d60d144",4315:"2348a423",4411:"5261ec1e",4583:"8ad79997",4667:"20af314d",4867:"5c57dbff",4914:"f5aab579",5153:"dd7ed44c",5167:"065df1f5",5243:"885ad383",5331:"e601ba32",5347:"484a6c3d",5356:"26ce537a",5390:"92a01867",5602:"493e2986",5647:"b5ed097a",5718:"b8f9b841",5747:"482f5545",5901:"6988e007",5929:"1040a611",6061:"2a35b2f0",6097:"c8c450b0",6161:"f07b5771",6171:"81dae46b",6231:"fb126394",6251:"0c220e44",6276:"cda4920f",6342:"ea185454",6353:"96db4a5c",6421:"1b829fbb",6505:"82c36926",6585:"0121dd4f",6647:"cb92d343",6682:"030a3a05",6713:"e4787f62",6715:"08174e78",6723:"bd2b6782",6809:"5e2f8122",6903:"fc4e38ec",7e3:"cf61032c",7025:"afbd59cd",7060:"adb72e54",7144:"26869a1a",7268:"4ba6513d",7642:"2845a55b",7943:"7601ce54",7956:"0805416a",8083:"e1d69022",8172:"b2ff519b",8359:"f8f94342",8401:"e356988c",8581:"9c4874a8",8659:"8efbb1ed",8714:"39537cb9",8880:"ec7b53c8",8913:"4eaba603",9069:"4a18e286",9082:"938de4b3",9087:"4bf99a46",9122:"f7c28a25",9249:"9be8c834",9425:"e2c67acd",9462:"59405f7b",9657:"c6db824e",9761:"627bfffb",9814:"8e108a46",9904:"305f5b5d",9935:"929e3ad7",9938:"7b3c5651",9958:"51631b8e"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},d="docs-v-2:",r.l=(e,a,c,b)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var l=n[i];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==d+c){t=l;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",d+c),t.src=e),f[e]=[a];var u=(a,c)=>{t.onerror=t.onload=null,clearTimeout(s);var d=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach((e=>e(c))),a)return a(c)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={17896441:"8401",40974919:"7956",67158350:"7144",74876495:"6505",a9e1a7f6:"3",b92f705c:"217","1c734f75":"435",f5f07875:"491","471df853":"517","31e90f3c":"757","71cf7fe6":"806","5818c28e":"921",cf6ffe2f:"1043",dc3fdd24:"1121","0a0a6d3c":"1135","6432bc55":"1217","35a5de3c":"1298",f4a6e698:"1346",eb3b0997:"1392","6948bca1":"1431","69a4ab96":"1799","18cf5ace":"1873","1a4e3797":"2138",afef705c:"2422",ce3fa444:"2539",ee5d850a:"2590",f9cc156b:"2664","2c412ea7":"2736","25f17725":"2938",dbb131dd:"3022","640bc8a0":"3029",f75b37f5:"3462","2461ffa2":"3503","904d61ef":"3590","9d6fd8ea":"3838","9791fd42":"3989",cd90435d:"4105","393be207":"4134","0c21af39":"4274","3c835dee":"4315",da60bc8f:"4411","1df93b7f":"4583","496bf018":"4667",e0a8f778:"4867","8660bbc8":"4914","2f1b3cda":"5153","30334fcd":"5167","53bb5fc4":"5331",dd0670d3:"5347","0ae8b3d4":"5356","36ea7a08":"5602","30ec1363":"5647",eb23a929:"5718","88eaec5a":"5747","2bafca50":"5901",e187e321:"5929","1f391b9e":"6061","19682bb8":"6097",d5417e33:"6161","4e664dc4":"6171",bd23e567:"6231","1c42a294":"6251",dc737160:"6276","5e50ba72":"6342",a584ba2a:"6353","0e9953cd":"6421","3c585fdb":"6585",b46ab14b:"6647",c296437a:"6682",e7c796a6:"6713",a309f86e:"6715","262418cd":"6723",f8409a7e:"6903","1ce51947":"7000",fa1a3aa0:"7025",d83b78fc:"7060","58160c0b":"7268","600a9360":"7642","3ec2c3f7":"7943","9a9c044b":"8083",c1424005:"8172",fe0957ee:"8359","935f2afb":"8581",d76e6194:"8659","1be78505":"8714","57b59cd4":"8880","21b4b958":"9082","4cc2c078":"9087","6a90d500":"9122","5ea65e65":"9249",c76f729d:"9425","6edc47f3":"9657","30256b0d":"9761","07f0ce13":"9814","070b53d1":"9935","507542a3":"9938","972382ea":"9958"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,c)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)c.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var d=new Promise(((c,d)=>f=e[a]=[c,d]));c.push(f[2]=d);var b=r.p+r.u(a),t=new Error;r.l(b,(c=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var d=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+d+": "+b+")",t.name="ChunkLoadError",t.type=d,t.request=b,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var f,d,b=c[0],t=c[1],o=c[2],n=0;if(b.some((a=>0!==e[a]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(c);n<b.length;n++)d=b[n],r.o(e,d)&&e[d]&&e[d][0](),e[d]=0;return r.O(i)},c=self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[];c.forEach(a.bind(null,0)),c.push=a.bind(null,c.push.bind(c))})()})();
\ No newline at end of file
+(()=>{"use strict";var e,a,c,f,d,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=b,r.c=t,e=[],r.O=(a,c,f,d)=>{if(!c){var b=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],d=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&d||b>=d)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,d<b&&(b=d));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}d=d||0;for(var i=e.length;i>0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[c,f,d]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var b={};a=a||[null,c({}),c([]),c(c)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(d,b),d},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({3:"a9e1a7f6",217:"b92f705c",435:"1c734f75",491:"f5f07875",517:"471df853",757:"31e90f3c",806:"71cf7fe6",921:"5818c28e",1043:"cf6ffe2f",1121:"dc3fdd24",1135:"0a0a6d3c",1217:"6432bc55",1298:"35a5de3c",1346:"f4a6e698",1392:"eb3b0997",1431:"6948bca1",1799:"69a4ab96",1873:"18cf5ace",2138:"1a4e3797",2422:"afef705c",2539:"ce3fa444",2590:"ee5d850a",2664:"f9cc156b",2736:"2c412ea7",2938:"25f17725",3022:"dbb131dd",3029:"640bc8a0",3462:"f75b37f5",3503:"2461ffa2",3590:"904d61ef",3838:"9d6fd8ea",3989:"9791fd42",4105:"cd90435d",4134:"393be207",4274:"0c21af39",4315:"3c835dee",4411:"da60bc8f",4583:"1df93b7f",4667:"496bf018",4867:"e0a8f778",4914:"8660bbc8",5153:"2f1b3cda",5167:"30334fcd",5331:"53bb5fc4",5347:"dd0670d3",5356:"0ae8b3d4",5602:"36ea7a08",5647:"30ec1363",5718:"eb23a929",5747:"88eaec5a",5901:"2bafca50",5929:"e187e321",6061:"1f391b9e",6097:"19682bb8",6161:"d5417e33",6171:"4e664dc4",6231:"bd23e567",6251:"1c42a294",6276:"dc737160",6342:"5e50ba72",6353:"a584ba2a",6421:"0e9953cd",6505:"74876495",6585:"3c585fdb",6647:"b46ab14b",6682:"c296437a",6713:"e7c796a6",6715:"a309f86e",6723:"262418cd",6903:"f8409a7e",7e3:"1ce51947",7025:"fa1a3aa0",7060:"d83b78fc",7144:"67158350",7268:"58160c0b",7642:"600a9360",7943:"3ec2c3f7",7956:"40974919",8083:"9a9c044b",8172:"c1424005",8359:"fe0957ee",8401:"17896441",8581:"935f2afb",8659:"d76e6194",8714:"1be78505",8880:"57b59cd4",9082:"21b4b958",9087:"4cc2c078",9122:"6a90d500",9249:"5ea65e65",9425:"c76f729d",9657:"6edc47f3",9761:"30256b0d",9814:"07f0ce13",9935:"070b53d1",9938:"507542a3",9958:"972382ea"}[e]||e)+"."+{3:"f18bee19",217:"5d9f89ba",416:"bbfa475a",435:"e7a48716",491:"c7be7c11",517:"dc8822e4",757:"5a79937a",806:"246f8b0c",921:"1e59b5b9",1043:"6673030e",1121:"ecca1a4e",1135:"c0175a9a",1217:"3ad95028",1298:"1c2c6c36",1346:"f3bb9a8c",1392:"8d2b9219",1431:"b799711d",1774:"d317c627",1799:"2c0d3051",1873:"90a3a8f6",2138:"14bcedcd",2185:"992929ee",2422:"eecf620f",2539:"9073513e",2590:"c007b05c",2664:"08264843",2736:"1d48e1ad",2938:"1e13bc28",3022:"71f2133e",3029:"8cefa9b4",3126:"29eff39e",3444:"71e4fec8",3462:"f5fce989",3503:"85c3aadb",3590:"f4cfea6d",3838:"49061a6f",3989:"70accff7",4105:"a3341909",4134:"6a02eb3f",4274:"3d60d144",4315:"2348a423",4411:"5261ec1e",4583:"8ad79997",4667:"20af314d",4867:"5c57dbff",4914:"f5aab579",5153:"dd7ed44c",5167:"065df1f5",5243:"885ad383",5331:"e601ba32",5347:"484a6c3d",5356:"26ce537a",5390:"92a01867",5602:"493e2986",5647:"b5ed097a",5718:"b8f9b841",5747:"482f5545",5901:"6988e007",5929:"1040a611",6061:"2a35b2f0",6097:"c8c450b0",6161:"f07b5771",6171:"81dae46b",6231:"fb126394",6251:"0c220e44",6276:"cda4920f",6342:"ea185454",6353:"96db4a5c",6421:"1b829fbb",6505:"82c36926",6585:"0121dd4f",6647:"cb92d343",6682:"030a3a05",6713:"e4787f62",6715:"08174e78",6723:"bd2b6782",6809:"5e2f8122",6903:"fc4e38ec",7e3:"cf61032c",7025:"afbd59cd",7060:"adb72e54",7144:"26869a1a",7268:"4ba6513d",7642:"2845a55b",7943:"7601ce54",7956:"0805416a",8083:"e1d69022",8172:"b2ff519b",8359:"f8f94342",8401:"e356988c",8581:"9c4874a8",8659:"8efbb1ed",8714:"39537cb9",8880:"ec7b53c8",8913:"4eaba603",9069:"4a18e286",9082:"938de4b3",9087:"4bf99a46",9122:"f7c28a25",9249:"9be8c834",9425:"e2c67acd",9462:"59405f7b",9657:"c6db824e",9761:"627bfffb",9814:"8e108a46",9904:"305f5b5d",9935:"929e3ad7",9938:"7b3c5651",9958:"51631b8e"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},d="docs-v-2:",r.l=(e,a,c,b)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var l=n[i];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==d+c){t=l;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",d+c),t.src=e),f[e]=[a];var u=(a,c)=>{t.onerror=t.onload=null,clearTimeout(s);var d=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach((e=>e(c))),a)return a(c)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={17896441:"8401",40974919:"7956",67158350:"7144",74876495:"6505",a9e1a7f6:"3",b92f705c:"217","1c734f75":"435",f5f07875:"491","471df853":"517","31e90f3c":"757","71cf7fe6":"806","5818c28e":"921",cf6ffe2f:"1043",dc3fdd24:"1121","0a0a6d3c":"1135","6432bc55":"1217","35a5de3c":"1298",f4a6e698:"1346",eb3b0997:"1392","6948bca1":"1431","69a4ab96":"1799","18cf5ace":"1873","1a4e3797":"2138",afef705c:"2422",ce3fa444:"2539",ee5d850a:"2590",f9cc156b:"2664","2c412ea7":"2736","25f17725":"2938",dbb131dd:"3022","640bc8a0":"3029",f75b37f5:"3462","2461ffa2":"3503","904d61ef":"3590","9d6fd8ea":"3838","9791fd42":"3989",cd90435d:"4105","393be207":"4134","0c21af39":"4274","3c835dee":"4315",da60bc8f:"4411","1df93b7f":"4583","496bf018":"4667",e0a8f778:"4867","8660bbc8":"4914","2f1b3cda":"5153","30334fcd":"5167","53bb5fc4":"5331",dd0670d3:"5347","0ae8b3d4":"5356","36ea7a08":"5602","30ec1363":"5647",eb23a929:"5718","88eaec5a":"5747","2bafca50":"5901",e187e321:"5929","1f391b9e":"6061","19682bb8":"6097",d5417e33:"6161","4e664dc4":"6171",bd23e567:"6231","1c42a294":"6251",dc737160:"6276","5e50ba72":"6342",a584ba2a:"6353","0e9953cd":"6421","3c585fdb":"6585",b46ab14b:"6647",c296437a:"6682",e7c796a6:"6713",a309f86e:"6715","262418cd":"6723",f8409a7e:"6903","1ce51947":"7000",fa1a3aa0:"7025",d83b78fc:"7060","58160c0b":"7268","600a9360":"7642","3ec2c3f7":"7943","9a9c044b":"8083",c1424005:"8172",fe0957ee:"8359","935f2afb":"8581",d76e6194:"8659","1be78505":"8714","57b59cd4":"8880","21b4b958":"9082","4cc2c078":"9087","6a90d500":"9122","5ea65e65":"9249",c76f729d:"9425","6edc47f3":"9657","30256b0d":"9761","07f0ce13":"9814","070b53d1":"9935","507542a3":"9938","972382ea":"9958"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,c)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)c.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var d=new Promise(((c,d)=>f=e[a]=[c,d]));c.push(f[2]=d);var b=r.p+r.u(a),t=new Error;r.l(b,(c=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var d=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+d+": "+b+")",t.name="ChunkLoadError",t.type=d,t.request=b,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var f,d,b=c[0],t=c[1],o=c[2],n=0;if(b.some((a=>0!==e[a]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(c);n<b.length;n++)d=b[n],r.o(e,d)&&e[d]&&e[d][0](),e[d]=0;return r.O(i)},c=self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[];c.forEach(a.bind(null,0)),c.push=a.bind(null,c.push.bind(c))})()})();
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
index c2d011d..2222f68 100644
--- a/community/index.html
+++ b/community/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/index.html b/docs/api/index.html
index f1dcdfa..85004f5 100644
--- a/docs/api/index.html
+++ b/docs/api/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -48,7 +48,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 fc83b86..ce3df7e 100644
--- a/docs/contributing/contributing-page/index.html
+++ b/docs/contributing/contributing-page/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 bcb5a84..dbcd31d 100644
--- a/docs/contributing/conventions-and-typing/index.html
+++ b/docs/contributing/conventions-and-typing/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -49,7 +49,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 db2b765..31af3ce 100644
--- a/docs/contributing/creating-viz-plugins/index.html
+++ b/docs/contributing/creating-viz-plugins/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -61,7 +61,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 afaba52..81293b4 100644
--- a/docs/contributing/hooks-and-linting/index.html
+++ b/docs/contributing/hooks-and-linting/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 d094b0c..867cea7 100644
--- a/docs/contributing/local-backend/index.html
+++ b/docs/contributing/local-backend/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -48,7 +48,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 77208a3..a98f5a2 100644
--- a/docs/contributing/pull-request-guidelines/index.html
+++ b/docs/contributing/pull-request-guidelines/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 027070c..b0e1f69 100644
--- a/docs/contributing/style-guide/index.html
+++ b/docs/contributing/style-guide/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -48,7 +48,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 5e37c6f..9d1d109 100644
--- a/docs/contributing/testing-locally/index.html
+++ b/docs/contributing/testing-locally/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 880824c..6cac0f2 100644
--- a/docs/contributing/translations/index.html
+++ b/docs/contributing/translations/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -76,7 +76,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 9781551..2413ac0 100644
--- a/docs/contributing/types-of-contributions/index.html
+++ b/docs/contributing/types-of-contributions/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -56,7 +56,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 ef12c7a..2071600 100644
--- a/docs/creating-charts-dashboards/creating-your-first-dashboard/index.html
+++ b/docs/creating-charts-dashboards/creating-your-first-dashboard/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -88,7 +88,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 340c986..752602d 100644
--- a/docs/creating-charts-dashboards/exploring-data/index.html
+++ b/docs/creating-charts-dashboards/exploring-data/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -141,7 +141,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 c3f8bad..96c1d7b 100644
--- a/docs/databases/ascend/index.html
+++ b/docs/databases/ascend/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 f95b498..208e537 100644
--- a/docs/databases/athena/index.html
+++ b/docs/databases/athena/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 ed9e161..6aaf9af 100644
--- a/docs/databases/bigquery/index.html
+++ b/docs/databases/bigquery/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 5752d05..3352ba5 100644
--- a/docs/databases/clickhouse/index.html
+++ b/docs/databases/clickhouse/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 af61adc..efafe41 100644
--- a/docs/databases/cockroachdb/index.html
+++ b/docs/databases/cockroachdb/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 1ed4ce2..e16808e 100644
--- a/docs/databases/cratedb/index.html
+++ b/docs/databases/cratedb/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -49,7 +49,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/databend/index.html b/docs/databases/databend/index.html
index d046d48..733d8b4 100644
--- a/docs/databases/databend/index.html
+++ b/docs/databases/databend/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 407a415..6021268 100644
--- a/docs/databases/databricks/index.html
+++ b/docs/databases/databricks/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 2582901..154a4d6 100644
--- a/docs/databases/db-connection-ui/index.html
+++ b/docs/databases/db-connection-ui/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 a9292c1..42a16b9 100644
--- a/docs/databases/docker-add-drivers/index.html
+++ b/docs/databases/docker-add-drivers/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/doris/index.html b/docs/databases/doris/index.html
index 289d04d..bee21ed 100644
--- a/docs/databases/doris/index.html
+++ b/docs/databases/doris/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 f30332d..18e7a78 100644
--- a/docs/databases/dremio/index.html
+++ b/docs/databases/dremio/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 0097738..cbe330a 100644
--- a/docs/databases/drill/index.html
+++ b/docs/databases/drill/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 6ad38bc..47b4117 100644
--- a/docs/databases/druid/index.html
+++ b/docs/databases/druid/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -58,7 +58,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 c8089ab..f90e3a6 100644
--- a/docs/databases/dynamodb/index.html
+++ b/docs/databases/dynamodb/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 938b50c..144bcdd 100644
--- a/docs/databases/elasticsearch/index.html
+++ b/docs/databases/elasticsearch/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 8306ffc..47f0d07 100644
--- a/docs/databases/exasol/index.html
+++ b/docs/databases/exasol/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 865a447..7a44579 100644
--- a/docs/databases/extra-settings/index.html
+++ b/docs/databases/extra-settings/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -55,7 +55,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 79474f7..09702f1 100644
--- a/docs/databases/firebird/index.html
+++ b/docs/databases/firebird/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 71a3300..78ae3fa 100644
--- a/docs/databases/firebolt/index.html
+++ b/docs/databases/firebolt/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 2339980..4acbba9 100644
--- a/docs/databases/google-sheets/index.html
+++ b/docs/databases/google-sheets/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -49,7 +49,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 d56ea7b..68134ec 100644
--- a/docs/databases/hana/index.html
+++ b/docs/databases/hana/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 4faf696..86d57b4 100644
--- a/docs/databases/hive/index.html
+++ b/docs/databases/hive/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 4da2baa..9b721e1 100644
--- a/docs/databases/hologres/index.html
+++ b/docs/databases/hologres/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 611ef39..5c94b77 100644
--- a/docs/databases/ibm-db2/index.html
+++ b/docs/databases/ibm-db2/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 678881e..56cd1cc 100644
--- a/docs/databases/impala/index.html
+++ b/docs/databases/impala/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 7fee5c4..9e6b154 100644
--- a/docs/databases/installing-database-drivers/index.html
+++ b/docs/databases/installing-database-drivers/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -56,7 +56,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 215fd30..c9ab13e 100644
--- a/docs/databases/kusto/index.html
+++ b/docs/databases/kusto/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 ccff91c..356cd44 100644
--- a/docs/databases/kylin/index.html
+++ b/docs/databases/kylin/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/meta-database/index.html b/docs/databases/meta-database/index.html
index db80e5f..d09109f 100644
--- a/docs/databases/meta-database/index.html
+++ b/docs/databases/meta-database/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 8fd0a0a..c913428 100644
--- a/docs/databases/mysql/index.html
+++ b/docs/databases/mysql/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 7bc184f..a702a7a 100644
--- a/docs/databases/netezza/index.html
+++ b/docs/databases/netezza/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/ocient/index.html b/docs/databases/ocient/index.html
index 97d61a3..e6f46f3 100644
--- a/docs/databases/ocient/index.html
+++ b/docs/databases/ocient/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 7977d60..a94a1cd 100644
--- a/docs/databases/oracle/index.html
+++ b/docs/databases/oracle/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 826cc4d..6114e2a 100644
--- a/docs/databases/pinot/index.html
+++ b/docs/databases/pinot/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 aada26e..4f858eb 100644
--- a/docs/databases/postgres/index.html
+++ b/docs/databases/postgres/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -50,7 +50,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 2d986a6..885e549 100644
--- a/docs/databases/presto/index.html
+++ b/docs/databases/presto/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 a373343..61aa9e6 100644
--- a/docs/databases/redshift/index.html
+++ b/docs/databases/redshift/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 3ed6454..f34e16f 100644
--- a/docs/databases/risingwave/index.html
+++ b/docs/databases/risingwave/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 f700725..4cb1b47 100644
--- a/docs/databases/rockset/index.html
+++ b/docs/databases/rockset/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 b3760b5..62b582b 100644
--- a/docs/databases/snowflake/index.html
+++ b/docs/databases/snowflake/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -55,7 +55,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 8f9a6d6..e9ea7cb 100644
--- a/docs/databases/solr/index.html
+++ b/docs/databases/solr/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 ff6f33a..2e3824b 100644
--- a/docs/databases/spark-sql/index.html
+++ b/docs/databases/spark-sql/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 6964332..045cec5 100644
--- a/docs/databases/sql-server/index.html
+++ b/docs/databases/sql-server/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/starrocks/index.html b/docs/databases/starrocks/index.html
index 0e28c9f..c5a0de1 100644
--- a/docs/databases/starrocks/index.html
+++ b/docs/databases/starrocks/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 66f2916..293fb34 100644
--- a/docs/databases/teradata/index.html
+++ b/docs/databases/teradata/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 7befb07..6915d19 100644
--- a/docs/databases/timescaledb/index.html
+++ b/docs/databases/timescaledb/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 5de6a24..52142e2 100644
--- a/docs/databases/trino/index.html
+++ b/docs/databases/trino/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 250f69c..a932a56 100644
--- a/docs/databases/vertica/index.html
+++ b/docs/databases/vertica/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 7949749..35f25ba 100644
--- a/docs/databases/yugabytedb/index.html
+++ b/docs/databases/yugabytedb/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 89cab42..b597ab6 100644
--- a/docs/frequently-asked-questions/index.html
+++ b/docs/frequently-asked-questions/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -133,7 +133,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 57160bb..18f42c4 100644
--- a/docs/installation/alerts-reports/index.html
+++ b/docs/installation/alerts-reports/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -64,7 +64,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 64e170e..c416a1b 100644
--- a/docs/installation/async-queries-celery/index.html
+++ b/docs/installation/async-queries-celery/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -61,7 +61,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 cfe6973..422d5ed 100644
--- a/docs/installation/cache/index.html
+++ b/docs/installation/cache/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -64,7 +64,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 e1c5081..3cf6f0d 100644
--- a/docs/installation/configuring-superset/index.html
+++ b/docs/installation/configuring-superset/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -98,7 +98,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/docker/index.html b/docs/installation/docker/index.html
index 08605da..97f5804 100644
--- a/docs/installation/docker/index.html
+++ b/docs/installation/docker/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -78,7 +78,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 351ba49..5de6801 100644
--- a/docs/installation/event-logging/index.html
+++ b/docs/installation/event-logging/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -51,7 +51,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/installing-superset-from-pypi/index.html b/docs/installation/installing-superset-from-pypi/index.html
index bbaf297..d9613e4 100644
--- a/docs/installation/installing-superset-from-pypi/index.html
+++ b/docs/installation/installing-superset-from-pypi/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -54,7 +54,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 5587347..c0495ab 100644
--- a/docs/installation/installing-superset-using-docker-compose/index.html
+++ b/docs/installation/installing-superset-using-docker-compose/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -141,7 +141,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 4e94c89..b348f3b 100644
--- a/docs/installation/networking-settings/index.html
+++ b/docs/installation/networking-settings/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -55,7 +55,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 88a87b3..f090271 100644
--- a/docs/installation/running-on-kubernetes/index.html
+++ b/docs/installation/running-on-kubernetes/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -56,7 +56,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 7d9fb81..2f4cde6 100644
--- a/docs/installation/setup-ssh-tunneling/index.html
+++ b/docs/installation/setup-ssh-tunneling/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 161b8b4..942d62d 100644
--- a/docs/installation/sql-templating/index.html
+++ b/docs/installation/sql-templating/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -61,7 +61,8 @@
 <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="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 viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" 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/edit/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"><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/setup-ssh-tunneling"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Setup SSH Tunneling</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"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">
+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 viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" 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 viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" 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>Metrics</strong></p><p>The <code>{{ metric(&#x27;metric_key&#x27;, dataset_id) }}</code> macro can be used to retrieve the metric SQL syntax from a dataset. This can be useful for different purposes:</p><ul><li>Override the metric label in the chart level</li><li>Combine multiple metrics in a calculation</li><li>Retrieve a metric syntax in SQL lab</li><li>Re-use metrics across datasets</li></ul><p>This macro avoids copy/paste, allowing users to centralize the metric definition in the dataset layer.</p><p>The <code>dataset_id</code> parameter is optional, and if not provided Superset will use the current dataset from context (for example, when using this macro in the Chart Builder, by default the <code>macro_key</code> will be searched in the dataset powering the chart).
+The parameter can be used in SQL Lab, or when fetching a metric from another dataset.</p></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/edit/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"><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/setup-ssh-tunneling"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Setup SSH Tunneling</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"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">
           <div class="footer__applitools">
             We use &nbsp;<a href="https://applitools.com/" target="_blank" rel="nofollow"><img src="/img/applitools.png" title="Applitools"></a>
           </div>
@@ -83,7 +84,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 e3b926e..f7508ec 100644
--- a/docs/installation/upgrading-superset/index.html
+++ b/docs/installation/upgrading-superset/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/intro/index.html b/docs/intro/index.html
index 48f3967..e8bf184 100644
--- a/docs/intro/index.html
+++ b/docs/intro/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -55,7 +55,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 b3dc76d..3cfa27c 100644
--- a/docs/miscellaneous/chart-params/index.html
+++ b/docs/miscellaneous/chart-params/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 bbdc7e9..7d3efe6 100644
--- a/docs/miscellaneous/country-map-tools/index.html
+++ b/docs/miscellaneous/country-map-tools/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 e6ea15b..0734857 100644
--- a/docs/miscellaneous/importing-exporting-datasources/index.html
+++ b/docs/miscellaneous/importing-exporting-datasources/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -56,7 +56,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.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 b06465e..b53cbb4 100644
--- a/docs/miscellaneous/issue-codes/index.html
+++ b/docs/miscellaneous/issue-codes/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -74,7 +74,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/timezones/index.html b/docs/miscellaneous/timezones/index.html
index 31c6249..2d39d6b 100644
--- a/docs/miscellaneous/timezones/index.html
+++ b/docs/miscellaneous/timezones/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/quickstart/index.html b/docs/quickstart/index.html
index aa543ca..081ba96 100644
--- a/docs/quickstart/index.html
+++ b/docs/quickstart/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -53,7 +53,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/security/cves/index.html b/docs/security/cves/index.html
index 9243a42..564232b 100644
--- a/docs/security/cves/index.html
+++ b/docs/security/cves/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/security/index.html b/docs/security/index.html
index 6ea6ade..b024b10 100644
--- a/docs/security/index.html
+++ b/docs/security/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -144,7 +144,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index b058c81..868db86 100644
--- a/index.html
+++ b/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/markdown-page/index.html b/markdown-page/index.html
index 8580657..95140a4 100644
--- a/markdown-page/index.html
+++ b/markdown-page/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/search/index.html b/search/index.html
index f693c96..aa4e82b 100644
--- a/search/index.html
+++ b/search/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.ae11b19b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b54d5adf.js" as="script">
 <link rel="preload" href="/assets/js/main.3731fa1c.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.ae11b19b.js"></script>
+<script src="/assets/js/runtime~main.b54d5adf.js"></script>
 <script src="/assets/js/main.3731fa1c.js"></script>
 </body>
 </html>
\ No newline at end of file