tsql - 如何将 SQL 转换为 DAX,需要添加 FILTER
问题描述
我想创建计算表来总结In_Force
现有表中的溢价fact_Premium
。
我怎样才能通过说过滤结果:
TODAY() has to be between `fact_Premium[EffectiveDate]` and (SELECT TOP 1 fact_Premium[ExpirationDate] ORDE BY QuoteID DESC)
在 SQL 中,我会这样做:
`WHERE CONVERT(date, getdate()) between CONVERT(date, tblQuotes.EffectiveDate)
and (
select top 1 q2.ExpirationDate
from Table2 Q2
where q2.ControlNo = Table1.controlno
order by quoteid` desc
)
到目前为止,这是我的 DAX 声明:
In_Force Premium =
FILTER(
ADDCOLUMNS(
SUMMARIZE(
//Grouping necessary columns
fact_Premium,
fact_Premium[QuoteID],
fact_Premium[Division],
fact_Premium[Office],
dim_Company[CompanyGUID],
fact_Premium[LineGUID],
fact_Premium[ProducerGUID],
fact_Premium[StateID],
fact_Premium[ExpirationDate]
),
"Premium", CALCULATE(
SUM(fact_Premium[Premium])
),
"ControlNo", CALCULATE(
DISTINCTCOUNT(fact_Premium[ControlNo])
)
), // Here I need to make sure TODAY() falls between fact_Premium[EffectiveDate] and (SELECT TOP 1 fact_Premium[ExpirationDate] ORDE BY QuoteID DESC)
)
另外,从 fact_Premium 创建计算表或使用 sql 语句(--> Get Data--> SQL Server)创建同一个表会更有效吗?
解决方案
T-SQL 中有 2 种可能的方式来获取下一个生效日期。一种是使用LEAD()
,另一种是使用APPLY
运算符。由于这里有一些事实可以使用,因此是示例:
select *
from (
select *
, lead(EffectiveDate) over(partition by CompanyGUID order by quoteid desc) as NextEffectiveDate
from Table1
join Table2 on ...
) d
或者
select table1.*, oa.NextEffectiveDate
from Table1
outer apply (
select top(1) q2.ExpirationDate AS NextEffectiveDate
from Table2 Q2
where q2.ControlNo = Table1.controlno
order by quoteid desc
) oa
注意。anouter apply
有点类似于 a left join
,因为它允许查询返回具有 NULL 的行,如果不需要,则cross apply
改为使用。
在这两种方法中,您都可以NextEffectiveDate
在最后的 where 子句中引用,但如果可行(这取决于数据),我宁愿避免使用 convert 函数。
推荐阅读
- laravel - 如何在 Laravel/Lighthouse/Passport/Nuxt 应用程序上使用 Dusk 测试登录?
- git - 如何可靠地确定远程存储库中的最后提交日期?
- javascript - 无法在 vue 图像 src 绑定中使用波浪号 (~)
- android - 添加 ClickListener 时出现 NullPointerException
- assembly - 如何在 ARM Assembly 中将大写字母转换为小写字母?
- php - 使用 php 将联系人保存到手机不直接打开保存联系人屏幕(iPhone 用户)
- swift - 以编程方式滚动到 WKWebView 的底部不起作用
- javascript - 在网页中创建文本,如下图所示
- c# - 未触发打印作业
- javascript - 要求在 React Native 中选择音频文件?