【问题标题】:Writing DAX in Power BI for Facts and Dimensions在 Power BI 中为事实和维度编写 DAX
【发布时间】:2021-03-04 18:03:04
【问题描述】:

假设在 Power BI 中我有以下设置:

d_date (this is a date dimension)
d_customers (this is a customer dimension)
f_orders (this is a fact table)

f_ordersdate_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 个表生成输出的简单示例。

【问题讨论】:

  • 您能发布一个示例来说明预期结果应该是什么样子吗?计数连同客户名称作为衡量标准???比如说,一天的不同客户数是 120,客户名称从哪里来?
  • 完成了,看起来怎么样?
  • 我基本上只是在寻找在 dax 语句中使用多个表的任何简单示例。如果需要,可以超级简单,只需要一个例子。
  • 表1完全不用DAX就可以搞定,只需要建一个表,把日期和客户名拉到表里。第二张表是我在回答中解释的。

标签: powerbi dax data-warehouse powerbi-desktop


【解决方案1】:

您正在请求返回列表的度量。这不能直接完成,因为度量必须返回一个标量,除非您打算与所有客户一起构建一个字符串。 (这可以使用 CONCATATENATEX() 来完成,但当他展示的客户数量过多时效果不佳)

从您想要的输出中,我看到您希望看到一个表格,其中包含日期和在该日期下订单的客户。为此,只需创建如下所示的客户计数度量即可

# Customers = DISTINCTCOUNT( f_orderes[customer_id] )

并使用 d_date[date]、d_customer[name] 和 [# Customers] 创建一个可视化表格

仅使用 d_date[date] 和 [# 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] )
)

这里是dax.do link for this last code snippet

【讨论】:

    【解决方案2】:

    创建一个计算 f_orders 中不同客户的度量。如果您在按日期分组/过滤的视觉对象中使用该度量,则该度量将显示正确的值。

    例如,在 X 轴上以日期和不同客户计数作为值的图表将显示每天的不同计数。

    在 Power BI/DAX 中,您无需预先计算各种场景,因为度量总是会在页面/视觉对象的筛选器上下文中进行评估。

    【讨论】:

    • 基本上,我的目标不是通过以某种方式调整 Power BI 来获得输出,而是演示一个简单的示例,说明在一个简单的 dax 表达式中处理多个表是什么感觉两张桌子上的东西。
    猜你喜欢
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2021-07-01
    • 1970-01-01
    • 2017-06-21
    • 2022-08-13
    相关资源
    最近更新 更多