注销后使用参数 = username() 重新加载 Tableau 自定义 SQL DataSource(实时)并使用其他用户登录
Reload a Tableau custom SQL DataSource (live) with a parameter = username() after a logout and login with a different user
我创建了一个这样的数据源:
select sd.* from global_reporting.summary_drivers sd
join global_reporting.vw_row_level_security vrls
on vrls.company = sd.company
where vrls.company = SUBSTRING_INDEX(<Parameters.COMPANY_AND_USER>, '~~', 1)
and
vrls.username = SUBSTRING_INDEX(<Parameters.COMPANY_AND_USER>, '~~', -1)
问题是,如果我注销并从包含仪表板的 WebApplication 重新登录到 iframe,username() 函数会正确更改,但派生参数不会更改,因此 DataSource 仍保留旧的数据.
Parameters.COMPANY_AND_USER 是从 username() 函数的计算字段开始设置的。
问题:
- 我走的路对吗?有更好的方法吗?
由于您将视图嵌入到网页中,因此您可以使用 JavaScript API 微调视图的行为方式或将其与网页更紧密地结合
https://help.tableau.com/current/api/js_api/en-us/JavaScriptAPI/js_api.htm
例如,您可以告诉视图在用户更改时使用 RefreshDataASync() 函数刷新数据。
我建议使用放置在 <div>
内的 <object>
标签而不是 <iframe>
标签来嵌入您的视图,以获得更多控制。
https://help.tableau.com/current/pro/desktop/en-us/embed_code.htm
Tableau 制作了一个关于其 JavaScript API 的非常好的快速教程,让您可以很好地了解它提供的内容以及如何使用它,您可以在大约 5 分钟内浏览一下。强烈推荐。 https://help.tableau.com/samples/en-us/js_api/tutorial.htm
综上所述,您绝对可以为您的数据源使用自定义 SQL,但只有当您确信更高级别的功能不适合您时,我才会降到那个级别。如果仅出于可维护性原因。
我创建了一个这样的数据源:
select sd.* from global_reporting.summary_drivers sd
join global_reporting.vw_row_level_security vrls
on vrls.company = sd.company
where vrls.company = SUBSTRING_INDEX(<Parameters.COMPANY_AND_USER>, '~~', 1)
and
vrls.username = SUBSTRING_INDEX(<Parameters.COMPANY_AND_USER>, '~~', -1)
问题是,如果我注销并从包含仪表板的 WebApplication 重新登录到 iframe,username() 函数会正确更改,但派生参数不会更改,因此 DataSource 仍保留旧的数据.
Parameters.COMPANY_AND_USER 是从 username() 函数的计算字段开始设置的。
问题:
- 我走的路对吗?有更好的方法吗?
由于您将视图嵌入到网页中,因此您可以使用 JavaScript API 微调视图的行为方式或将其与网页更紧密地结合 https://help.tableau.com/current/api/js_api/en-us/JavaScriptAPI/js_api.htm
例如,您可以告诉视图在用户更改时使用 RefreshDataASync() 函数刷新数据。
我建议使用放置在 <div>
内的 <object>
标签而不是 <iframe>
标签来嵌入您的视图,以获得更多控制。
https://help.tableau.com/current/pro/desktop/en-us/embed_code.htm
Tableau 制作了一个关于其 JavaScript API 的非常好的快速教程,让您可以很好地了解它提供的内容以及如何使用它,您可以在大约 5 分钟内浏览一下。强烈推荐。 https://help.tableau.com/samples/en-us/js_api/tutorial.htm
综上所述,您绝对可以为您的数据源使用自定义 SQL,但只有当您确信更高级别的功能不适合您时,我才会降到那个级别。如果仅出于可维护性原因。