如何感性的理解 函数 in
很多人不太注重基础的"感性认识",讨论基础理论特别烦躁,基本逻辑不太明了,办事凭着经验,变化就不会太多
http://naotu.baidu.com/file/7902b917e10c4fe6b700a5cd4341c869?token=77f00744a7a88b5b
EVALUATE
{ "1", "2", "3" }
EVALUATE
{ 2017, 2018, 2019 }
EVALUATE
{ ( 1 ), ( 2 ), ( 3 ) }
EVALUATE
{ ( "01", 2017 ), ( "02", 2018 ), ( "03", 2019 ) }
这些是基础表的构建
下面是应用
EVALUATE
FILTER ( '销售流水', RELATED ( '商品信息'[主供应商编号] ) IN { "01", "02", "03" } )
EVALUATE
FILTER ( '销售流水', RELATED ( '日历'[年] ) IN { 2017, 2018, 2019 } )
EVALUATE
FILTER (
'销售流水',
( RELATED ( '商品信息'[主供应商编号] ), RELATED ( '日历'[年] ) )
IN { ( "01", 2017 ), ( "02", 2018 ), ( "03", 2019 ) }
)
EVALUATE
FILTER(
'销售流水',
CONTAINSROW({ ( "01", 2017 ), ( "02", 2018 ), ( "03",2019) }, RELATED('商品信息'[主供应商编号] ), RELATED( '日历'[年] ) )
)
没有基础的掌握,应用几乎不可能
下面对比讨论一下
CONTAINSROW (in)和 TREATAS
首先考虑多列的表达式
EVALUATE
CALCULATETABLE(
'销售流水',
CONTAINSROW({ ( "01", 2017 ), ( "02", 2018 ), ( "03",2019) }, RELATED('商品信息'[主供应商编号] ), RELATED( '日历'[年] ) )
)
这个表达式错误,因为 CONTAINSROW多列表达式主要用于迭代行环境,relate没有行环境,二个错误
EVALUATE
CALCULATETABLE(
'销售流水',
CONTAINSROW({ ( "01", 2017 ), ( "02", 2018 ), ( "03",2019) }, '商品信息'[主供应商编号] , '日历'[年] ))
筛选环境不能适应多行,和relate没有关系
EVALUATE
CALCULATETABLE(
'销售流水',
TREATAS({ ( "01", 2017 ), ( "02", 2018 ), ( "03",2019) }, RELATED('商品信息'[主供应商编号] ), RELATED( '日历'[年] ) )
)
这个不能工作,筛选环境对了因为后面的列必须是物理列,不能是表达式,错在relate,没有行环境
EVALUATE
CALCULATETABLE(
'销售流水',
TREATAS({ ( "01", 2017 ), ( "02", 2018 ), ( "03",2019) },'销售流水'[main_supcust],'销售流水'[年份]))
这个可以工作,TREATAS这里是筛选参数,在筛选上下文环境工作
EVALUATE
CALCULATETABLE(
'销售流水',
TREATAS({ ( "01", 2017 ), ( "02", 2018 ), ( "03",2019) }, '商品信息'[主供应商编号] , '日历'[年] ))
这个可以工作,环境筛选上下文,代表筛选器,
EVALUATE
FILTER(
'销售流水',
TREATAS({ ( "01", 2017 ), ( "02", 2018 ), ( "03",2019) }, '商品信息'[主供应商编号] , '日历'[年] ))
这两个无法工作,就因为treatas不能在迭代环境中工作
EVALUATE
FILTER(
'销售流水',
TREATAS({ ( "01", 2017 ), ( "02", 2018 ), ( "03",2019) }, RELATED('商品信息'[主供应商编号] ), RELATED( '日历'[年] ) ))
有二个错误,行环境错误,
EVALUATE
CALCULATETABLE(
'销售流水',
('商品信息'[主供应商编号], '日历'[年] )
IN { ( "01", 2017 ), ( "02", 2018 ), ( "03", 2019 ) }
)
这个无法工作,多行必须用于迭代环境,所以报错
现在看看单行
EVALUATE
CALCULATETABLE(
'销售流水',
'商品信息'[主供应商编号]
IN { ( "01" ), ( "02"), ( "03") }
)
可以运行
EVALUATE
CALCULATETABLE(
'销售流水',
CONTAINSROW({ ( "01" ), ( "02"), ( "03") },'商品信息'[主供应商编号] )
)
可以运行
EVALUATE
CALCULATETABLE(
'销售流水',
TREATAS({ ( "01" ), ( "02"), ( "03") },'商品信息'[主供应商编号] )
)
可以运行
以上三行代码多可以工作
EVALUATE
FILTER(
'销售流水',
TREATAS({ ( "01" ), ( "02"), ( "03") },'商品信息'[主供应商编号] )
)
不能运行,这个只能在筛选环境中工作了
这里的代表一个认识过程
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)