Dax 函数汇总(一)

  1. 同比增长率
    1)同比增长率 = DIVIDE([总销售额],(CALCULATE([总销售额],SAMEPERIODLASTYEAR(‘日期表’[日期]))),2)-1
    SAMEPERIODLASTYEAR 函数,返回一个表,该表包含由日期构成的一列,这些日期是在时间上从当前上下文中指定的dates列中的日期移回一年的日期。该函数详细介绍:
    https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2014/ee634972(v=sql.120)?redirectedfrom=MSDN

2)同比增长率VAR写法:
同比增长率VAR =
VAR Sales = [总销售额]
VAR SalesLastYear = CALCULATE([总销售额],DATEADD(‘日期表’[日期],-1,YEAR))
RETURN DIVIDE(Sales-SalesLastYear,SalesLastYear,1)

2.环比增长率
1)月环比增长率 = DIVIDE([总销售额],(CALCULATE([总销售额],DATEADD(‘日期表’[日期],-1,MONTH))),2)-1
DATEADD 函数,返回一个表,该表包含由日期构成的一列,这些日期是在时间上从当前上下文中的日期前移或后移指定间隔数目的日期。该函数详细介绍:
https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2014/ee634905(v=sql.120)?redirectedfrom=MSDN

2)月环比增长率VAR写法:
月环比增长率VAR =
VAR Sales = [总销售额]
VAR SalesLastMonth = CALCULATE([总销售额],DATEADD(‘日期表’[日期],-1,MONTH))
return DIVIDE(Sales-SalesLastMonth,SalesLastMonth,1)

3.年累计的3中写法
1)年累计 = CALCULATE([总销售额],DATESYTD(‘日期表’[日期]))

  1. 年累计2 = TOTALYTD([总销售额],‘日期表’[日期])

3)年累计3 = 总销售额

  1. 月累计:
    月累计 = 总销售额

  2. 条件(if/switch)

  1. 店铺等级 = IF([总销售额]<50000,“D类店铺”,
    IF([总销售额]<80000,“C类店铺”,
    IF([总销售额]<100000,“B类店铺”,
    “A类店铺”)))

2)店铺等级2 = SWITCH(
TRUE(),
[总销售额]<50000,“D类店铺”,
[总销售额]<80000,“C类店铺”,
[总销售额]<100000,“B类店铺”,
“A类店铺”)

### DAX函数在Power BI中的应用 Power BI 是个强大的商业智能工具,而 DAX(Data Analysis Expressions)则是 Power BI 中用于数据分析的核心技术之DAX 不仅支持复杂的计算和数据建模,还能够通过其丰富的函数库实现各种高级分析需求。 #### 1. **DAX的主要功能** DAX 主要用于查询和计算,特别是在 Power BI 的数据模型中,DAX 可以帮助用户从现有的数据中提取有用的信息。DAX 查询函数可以筛选出有用的数据集合,然后利用 DAX 的聚合函数执行计算。这些计算可以是简单的求和、平均值,也可以是更复杂的逻辑判断和条件计算。 #### 2. **DAX函数的分类** DAX 函数可以分为多个类别,主要包括: - **聚合函数**:用于对数据进行汇总计算。例如 `SUM`、`AVERAGE`、`COUNT` 等。 - **逻辑函数**:用于实现条件判断和逻辑控制。例如 `IF`、`SWITCH` 等。 - **时间智能函数**:用于处理与时间相关的计算。例如 `TOTALYTD`、`SAMEPERIODLASTYEAR` 等。 - **表函数**:用于生成新的表或修改现有的表。例如 `FILTER`、`ADDCOLUMNS` 等。 - **文本函数**:用于处理字符串数据。例如 `LEFT`、`RIGHT`、`MID` 等。 - **日期和时间函数**:用于处理日期和时间数据。例如 `TODAY`、`DATE` 等。 #### 3. **常见的DAX函数及其用法** ##### **聚合函数** - **SUM**:对某个列中的所有数值求和。 ```dax TotalSales = SUM('Sales'[Amount]) ``` - **AVERAGE**:返回列中所有数字的平均值。 ```dax AverageSales = AVERAGE('Sales'[Amount]) ``` - **COUNT**:计算指定列中包含非空值的行数。 ```dax NumberOfOrders = COUNT('Orders'[OrderID]) ``` - **DISTINCTCOUNT**:对列中的非重复值数目进行计数。 ```dax UniqueCustomers = DISTINCTCOUNT('Customers'[CustomerID]) ``` ##### **逻辑函数** - **IF**:根据条件返回不同的结果。 ```dax SalesStatus = IF(SUM('Sales'[Amount]) > 10000, "High", "Low") ``` - **SWITCH**:根据表达式的值返回不同的结果。 ```dax ProductCategory = SWITCH(TRUE(), 'Products'[Category] = "Electronics", "Electronics", 'Products'[Category] = "Clothing", "Clothing", "Other" ) ``` ##### **时间智能函数** - **TOTALYTD**:计算年度至今的累计值。 ```dax YTD Sales = TOTALYTD(SUM('Sales'[Amount]), 'Date'[Date]) ``` - **SAMEPERIODLASTYEAR**:计算去年同期的值。 ```dax LastYearSales = CALCULATE(SUM('Sales'[Amount]), SAMEPERIODLASTYEAR('Date'[Date])) ``` ##### **表函数** - **FILTER**:根据条件筛选表中的数据。 ```dax HighValueOrders = FILTER('Orders', 'Orders'[Amount] > 1000) ``` - **ADDCOLUMNS**:向表中添加新的列。 ```dax OrdersWithDiscount = ADDCOLUMNS('Orders', "DiscountedAmount", 'Orders'[Amount] * 0.9) ``` ##### **文本函数** - **LEFT**:从字符串的左侧开始提取指定数量的字符。 ```dax ShortProductName = LEFT('Products'[ProductName], 5) ``` - **CONCATENATE**:将两个字符串连接在起。 ```dax FullName = CONCATENATE('Customers'[FirstName], 'Customers'[LastName]) ``` ##### **日期和时间函数** - **TODAY**:返回当前日期。 ```dax CurrentDate = TODAY() ``` - **DATE**:创建个日期值。 ```dax SpecificDate = DATE(2023, 10, 1) ``` #### 4. **DAX在实际应用中的示例** 假设有个销售数据模型,其中包含 `Sales` 表和 `Date` 表。可以通过以下 DAX 公式来计算不同维度的销售指标: - **计算年度销售总额**: ```dax AnnualSales = TOTALYTD(SUM('Sales'[Amount]), 'Date'[Date]) ``` - **计算每个产品的平均销售额**: ```dax AverageProductSales = AVERAGEX(VALUES('Products'[ProductID]), SUM('Sales'[Amount])) ``` - **计算特定日期的订单数量**: ```dax OrdersOnSpecificDate = CALCULATE(COUNT('Orders'[OrderID]), 'Orders'[OrderDate] = DATE(2023, 10, 1)) ``` #### 5. **注意事项** - **性能优化**:DAX 公式可能会对性能产生影响,尤其是在处理大量数据时。建议使用适当的索引和优化技巧来提高查询效率。 - **调试和测试**:在编写复杂的 DAX 公式时,建议逐步调试和测试每个部分,以确保逻辑正确。 - **文档和注释**:为 DAX 公式添加清晰的文档和注释,有助于团队协作和后期维护。 通过掌握这些 DAX 函数和技巧,用户可以在 Power BI 中实现更加复杂和灵活的数据分析任务,从而更好地支持业务决策。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值