【发布时间】:2019-11-11 10:07:25
【问题描述】:
在 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 再次创建它。
-
这能回答你的问题吗? DAX JOIN if a value is between two dates
-
@BarneyL 我可以在我的个人数据库中创建视图,但是在某些时候我必须使用我的整个团队工作的数据库。因为我们只需要这种方式的数据来进行特定用途-如果我们宁愿在项目中创建这个表,而不是在数据库中添加一个额外的表。我正在查看您现在发送的链接。
-
您无需创建新表,只需将查询用作数据源而不是原始表即可。