首页 > 解决方案 > PowerBI:根据度量过滤器从列中获取值

问题描述

我有一个 PowerBI 仪表板,其中包含赌场客人信息,包括他们的纬度和经度坐标。仪表板允许用户输入邮政编码并选择该邮政编码周围的半径(切片器)。这样做时,它将赌场客人的桌子过滤为仅距离(度量)小于或等于所选半径的客人。我使用这个距离度量和逻辑来创建另一个度量“InRadius”,根据给定的客人是否在半径内,它会显示 1 或 0。然后将此“InRadius”度量用作我的表格以及其他视觉效果的过滤器。一切正常,除了我想添加一个“介于”切片器来过滤客人的 ADW 范围,我无法通过我的度量“InRadius”过滤这个切片器,因此我在切片器中的 ADW 的最小值和最大值,没有准确反映在我的表格中过滤的客人的 ADW 范围。我有什么办法可以解决这个问题吗?是否可以创建一个我可以专门用于此切片器的新度量?是否可以仅通过已过滤表中存在的值过滤切片器?一般来说,我只是想创建一个切片器,它根据度量值过滤列值,但不知道如何去完成它。

我在创建新度量时尝试了一些代码,但没有给出预期的结果:

InRadiusADWFilter = IF([InRadiusPatron]=1, VALUES(TF_MapRadius[ADWNet]))

InRadiusADWFilter = FILTER(VALUES(TF_MapRadius[ADWNet]), [InRadiusPatron]=1)

InRadiusADWFilter = CALCULATE(VALUES(TF_MapRadius[ADWNet]), [InRadiusPatron]=1)

这是我的测量距离代码:

// Haversine/great-circle distance calculation adapted from Stack Overflow: https://stackoverflow.com/questions/27928/calculate-distance-between-two-latitude-longitude-points-haversine-formula
VAR __latSelected = SELECTEDVALUE('TF_MapRadius'[maplat])
VAR __lonSelected = SELECTEDVALUE('TF_MapRadius'[maplong])
VAR __radius = 3956
VAR __multiplier = PI()/180 
VAR __latDiff = (MIN('Selector'[Latitude])-__latSelected) * __multiplier
VAR __lonDiff = (MIN('Selector'[Longitude])-__lonSelected) * __multiplier
VAR __formula1 =
    SIN(__latDiff/2) * SIN(__latDiff/2) +
    COS(MIN('Selector'[Latitude]) * __multiplier) * COS(__latSelected * __multiplier) *
    SIN(__lonDiff/2) * SIN(__lonDiff/2)
VAR __formula2 = 2 * ATAN(DIVIDE(SQRT(__formula1),SQRT(1-__formula1)))
VAR __distance = __radius * __formula2
RETURN __distance

这是我的度量“InRadius”的代码:

InRadiusPatron = if('TF_MapRadius'[Distance2] < Radius[Radius Value],1,0)

我创建了代表我的过滤表的虚拟表:

ID 赞助人姓名 广告网络 距离 半径内
1 史密斯,约翰 325,555 5.2 1
2 乔布斯,史蒂夫 200 7.0 1
3 杰特,德里克 90,000 10.1 1
4 乔丹,迈克尔 -2,567 14.5 1

标签: powerbidaxdashboardpowerbi-custom-visualspowerbi-filters

解决方案


如果您有返回 1/0 的度量(例如 InRadius),那么您可以过滤您的可视化(选择它并转到过滤器窗格)。

在此处输入图像描述


推荐阅读