sql - DAX 中 date1 和 date2 (Sql) 之间的 dateX 右连接
问题描述
在 sql server 中,我可以通过在日期时间字段上正确连接我的两个表来创建视图。我想知道如何使用 DAX 创建相同的视图(表)。我在创建视图时使用的 Select 语句:
SELECT
T1.identifier_value,
T1.Start_DateTime,
T1.End_DateTime,
T2.[DateTime],
T2.[hour]
FROM
Table1 T1 WITH (NOLOCK)
right join Table2 T2 WITH (NOLOCK) on T2.[DateTime] between T1.Start_DateTime and T1.End_DateTime
结果如下表(本例中 FakeID 对应一个 ID,因此这里的所有记录都具有相同的 ID):
我尝试在 DAX 中使用 NATURALLEFTOUTERJOIN 并使用以下表达式反转表(尝试模拟右连接):
=NATURALLEFTOUTERJOIN(
SELECTCOLUMNS(
Table2;
"DateTime";'Table2'[DateTime];
"hour"; 'Table2'[hour]
);
SELECTCOLUMNS(
'Table1;
"Identifier_value"; 'Table1'[identifier_value];
"Start_DateTime"; 'Table1'[Start_DateTime];
"End_DateTime"; 'Table1'[End_DateTime]
)
)
正如预期的那样,这不起作用,因为没有公共连接列。
有没有办法使用 DAX 执行此连接?我对 DAX 很陌生,所以如果我做错了什么,请告诉我。
解决方案
这最好通过 SQL 查询加载到模型中,但如果必须在 DAX 中完成,那么我相信唯一可行的方法是交叉连接和过滤器,这对于大量行来说会变得非常慢。
Table =
FILTER(
CROSSJOIN(
SELECTCOLUMNS(
Table2;
"DateTime";'Table2'[DateTime];
"hour"; 'Table2'[hour]
),
SELECTCOLUMNS(
'Table1;
"Identifier_value"; 'Table1'[identifier_value];
"Start_DateTime"; 'Table1'[Start_DateTime];
"End_DateTime"; 'Table1'[End_DateTime]
)
),
'Table2'[DateTime] >= 'Table1'[Start_DateTime] &&
'Table2'[DateTime] <= 'Table1'[End_DateTime]
)
推荐阅读
- gatling - 批量使用 feeder,QPS 会很低,我的脚本有问题吗,tks
- aurelia - 在 aurelia 中编写可重用组件/customElement 的最佳方法是什么?
- xamarin - Xamarin Form 中的 Android 图像本地化
- javascript - Package.json 脚本找不到新创建的文件夹 - Windows 10
- ios - 如何在 iOS 中避免/禁用 Collection View 的垂直滚动
- json - 在 JSON.parse 的位置 0 处获取“SyntaxError:”JSON 中的意外标记”
- terraform - Azcopy 在通过 Terraform 执行时抛出错误
- amazon-web-services - 从同一 vpc 中的 aws lambda 调用 aws lambda
- cypress - 如何访问 cypress 中的 url 并更改参数之一的值,或者只是更改 url 的值?
- jenkins - Jenkins:添加日历或日期输入作为自由式项目的参数