sql-server - 将 LastNotEmpty 查询转换为成员
问题描述
我想报告数据可用性的状态。最大日期特定度量(组)已加载数据。这是我会尝试将其合并到每个报告中的功能。理论上,每个度量都可以在日期维度中有另一个“最后一个有数据的成员”,但是目前可以将其简化为每个度量组的一个度量或整个度量组的最大值。
我写了一个 MDX 查询,它给了我相关的答案。然而,为了更容易维护,我正在努力将该信息作为计算成员合并到多维数据集本身中。仅在每个闰年左右使用 MDX,我没有成功地将查询转换为计算的成员定义。
// Repro-Query on Adventure Works
// with Adventure Works 2012 EE result should be "July 31, 2008"
// contrasted to last date in date dimension which is "December 31,2010
WITH Member [Measures].[Data Availability] AS
[Date].[Calendar].CurrentMember.Name
SELECT
{
[Measures].[Data Availability]
} ON COLUMNS
FROM
[Adventure Works]
WHERE
{
TAIL(
FILTER
(
[Date].[Date].Members,
[Measures].[Internet Sales Amount] >0
)
,1
)
}
结果应该与查询中的结果相同,但封装在一个计算的度量语句中。请记住,我不需要度量值,而只需要日期维度中包含数据的最后一个维度元素的名称。
关于代码,它应该是这样的:
WITH Member [Measures].[Data Availability] AS
<your great translation to a member >
SELECT
{
[Measures].[Data Availability]
} ON COLUMNS
FROM
[Adventure Works]
随意提出不同的方法来获得问题的答案,例如更好地执行方法来计算带有数据的最后一个成员。
解决方案
感谢您提出的好问题和使用 Adventure Works。尽管有些评论者说了什么,但这是在这里获得答案的好方法。
尝试这个。该Tail
函数返回一个集合,因此.Item(0).Item(0)
通过选择第一个元组和第一个成员将其转换为成员。
WITH Member [Measures].[Data Availability] AS
TAIL(
FILTER
(
[Date].[Date].Members,
[Measures].[Internet Sales Amount] >0
)
,1
).Item(0).Item(0).Name
SELECT
{
[Measures].[Data Availability]
} ON COLUMNS
FROM
[Adventure Works]
推荐阅读
- apache-spark - spark-submit 由于 Kerberos 无法连接到 Metastore:由 GSSException 引起:未提供有效凭据。但在本地客户端模式下工作
- swiftui - 图像上的关闭按钮 (X) - 右上角对齐如何?
- javascript - 停止计时器 JavaScript
- python-3.x - 文本数据按摩在python中进行距离计算
- amazon-web-services - AWS kibana/ES 尝试创建策略但获得“授权异常”
- python - Python 检查网络连接
- node.js - Nodejs Https服务器(将证书文件地址放在代码中是否安全)
- java - IntegrationFlow + 2 个条件转换器 + 出站网关
- elm - Elm 中的编译时不变性/属性检查
- javascript - 在 Electron 应用程序的 iframe 中找不到嵌入 PDF 的高度?ScrollHeight 的值错误