假设在Power中,我设置了以下内容:
d_date (this is a date dimension)
d_customers (this is a customer dimension)
f_orders (this is a fact table)f_orders在date_id上连接到d_date,在customer_id上连接到d_customers。
我想要创建一个dax度量,它显示每个日期的不同客户列表以及他们的名称。
我怎么能这样做呢?
(我是Dax的新手,对Power BI有点陌生)
预期产出
Table 1
order date Customer Name
2020-01-01 John Doe
2020-01-01 James Simpson
2020-01-03 Emilia Clarke
...
2020-12-31 Jamie Lanister
Table 2
order date distinct_customer_count
2020-01-01 2
2020-01-03 1
...
2020-12-31 1我的目标与其说是产生输出,不如说是看到一个简单的例子,即使用DAX从2个表生成输出。
发布于 2021-03-05 11:03:03
你是在要求一个返回列表的措施。这不能直接完成,因为度量必须返回标量,除非您打算与所有客户一起构建一个字符串。(这可以使用CONCATENATEX()来完成,但是当他展示的客户超过几个时,就不能很好地工作)
从您想要的输出中,我看到您希望看到一个带有日期的表,以及为该日期下订单的客户。要做到这一点,只需创建一个客户计数度量,如下所示
# Customers = DISTINCTCOUNT( f_orderes[customer_id] )并使用d_datedate、d_customername和# Customers创建表可视化
只使用d_datedate和# Customers,您应该得到表2
要查看使用这两个表的一些代码,您可以计算计算出的表,例如,移动到包含客户、日期和销售的真实数据集,表1的一个简单实现是
SUMMARIZE ( Sales, 'Date'[Date], Customer[Name] )下面是要在dax.do上测试的相同代码
和表2
FILTER (
ADDCOLUMNS (
ALL ( 'Date'[Date] ),
"# Customers", CALCULATE ( DISTINCTCOUNT ( Sales[CustomerKey] ) )
),
NOT ISBLANK ( [# Customers] )
)需要在NOT ISBLANK()上使用筛选器来删除没有销售的日期
以下是dax.do上的代码
也可以使用SUMMARIZECOLUMNS,但是SUMMARIZECOLUMNS是一个更高级的函数,不能在DAX度量中使用。
SUMMARIZECOLUMNS (
'Date'[Date],
"# Customers", DISTINCTCOUNT ( Sales[CustomerKey] )
)发布于 2021-03-04 19:19:01
在f_orders中创建一个计算不同客户的度量。如果在可视的“按日期分组/筛选”中使用该度量值,则该度量值将显示正确的值。
例如,在X轴上显示日期的图表,以及作为值的不同的客户计数,将显示每天的不同计数。
在Power /DAX中,您不需要预先计算各种场景,因为度量总是在页面/可视过滤器的上下文中得到评估。
https://stackoverflow.com/questions/66480592
复制相似问题