Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 如何从另一个没有关系的维度表中获取列_Powerbi_Dax_Ssas Tabular - Fatal编程技术网

Powerbi 如何从另一个没有关系的维度表中获取列

Powerbi 如何从另一个没有关系的维度表中获取列,powerbi,dax,ssas-tabular,Powerbi,Dax,Ssas Tabular,我有两个维度的表,它们之间没有关系 1是产品尺寸表吗 ProdCode | ValidStartDate | ValidEndDate XX | 2012-01-01| 2016-12-31 XX | 2017-01-01| 2017-12-31 XX | 2018-01-01| 2020-12-31 第二是时间表 Year | IsCurrent 2012 | 0 2013 | 0 2014 | 0 2015 | 0 2016 | 0 2017 | 0 2018 | 0 2019 | 0

我有两个维度的表,它们之间没有关系

1是产品尺寸表吗

ProdCode | ValidStartDate | ValidEndDate

XX | 2012-01-01| 2016-12-31
XX | 2017-01-01| 2017-12-31
XX | 2018-01-01| 2020-12-31
第二是时间表

Year | IsCurrent

2012 | 0
2013 | 0
2014 | 0
2015 | 0
2016 | 0
2017 | 0
2018 | 0
2019 | 0
2020 | 1
我需要在Product表中创建一个计算列,以显示所选年份时间表中的当前列

我尝试使用CALCULATE,但它需要一个聚合函数,我不能使用它,因为我想在当前行上下文中显示值

例如:

IsCurrent =
CALCULATE(
    MAXA('Time'[IsCurrent]),
    FILTER(
        'Time',
        'Time'[Year] >= YEAR(Product[ValidStartDate]) 
            && 'Time'[Year] <= YEAR(Product[ValidEndDate])
    ) 
)
IsCurrent=
算计(
MAXA('时间'[当前]),
滤器(
“时间”,
“时间”[Year]>=年(产品[ValidStartDate])

&&'时间'[Year]尝试下面的度量脚本-

测量

IsCurrent = 
CALCULATE(
    MAXA('Time'[IsCurrent]),
    FILTER(
        'Time',
        'Time'[Year] >= YEAR(MIN(Product[ValidStartDate]))
            && 'Time'[Year] <= YEAR(MIN(Product[ValidEndDate]))
    ) 
)
IsCurrent=
算计(
MAXA('时间'[当前]),
滤器(
“时间”,
“时间”[Year]>=年(最小值(产品[ValidStartDate]))
&&“时间”[年]=当前开始年

&&“时间”[年]创建以下度量-

in_range = 

VAR selected_year = SELECTEDVALUE('time'[Year])

RETURN IF(
    YEAR(MIN('product'[ValidStartDate])) <= selected_year
        && YEAR(MIN('product'[ValidEndDate])) >= selected_year
    ,
    1,
    0
)
在\u范围内=
所选变量\年=所选值('时间'[年])
返回如果(
年份(最小(“产品”[有效开始日期])=所选年份
,
1.
0
)
这将为您提供如下输出-


现在,您可以使用上述度量添加一个视觉级别过滤器,以便在in_range=1时,该行将显示出来。此过滤器将仅在表中保留您期望的行。

自定义列我已经尝试过,但不起作用,但该度量在我的情况下似乎起作用。让我尝试一下。感谢您的回答。希望这能奏效k、 如果有帮助,请接受答案:)您知道自定义列逻辑不起作用的原因吗。请将表名表单“Product Time”更改为“Time”。如果问题仍然存在,请尽可能在此处提供代码。Hi@LernSQL我已更新了答案。请检查。我已尝试,但选择了值()在我的解决方案中无法识别。我使用SSAS表格模型作为源。这是SSAS表格模型的一个问题:(
in_range = 

VAR selected_year = SELECTEDVALUE('time'[Year])

RETURN IF(
    YEAR(MIN('product'[ValidStartDate])) <= selected_year
        && YEAR(MIN('product'[ValidEndDate])) >= selected_year
    ,
    1,
    0
)