参数
项定义
find_text您要查找的文本。使用双引号(空文本)可以匹配within_text中的第一个字符;不允许通配符。
within_text包含要查找的文本的文本。
start_num从其开始进行搜索的字符;如果省略,start_num= 1。within_text中的第一个字符是字符编号 1。
FIXED函数: 将数字舍入到指定的小数位数,并以文本形式返回结果。可以指定以带或不带逗号的形式返回结果
将数字舍入到指定的小数位数,并以文本形式返回结果。可以指定以带或不带逗号的形式返回结果
参数
项定义
number要舍入并转换为文本的数字,或包含数字的列。
decimals(可选)小数点右侧的位数;如果省略,则为 2。
no_commas(可选)一个逻辑值:如果为 1,则不在返回的文本中显示逗号;如果为 0 或省略,则在返回的文本中显示逗号。
FORMAT函数:根据指定的格式转换为文本
FORMAT(, )
参数
术语定义
value值或计算结果为单个值的表达式。
format_string具有格式模板的字符串。
FORMAT函数的预定义数字格式
下表标识预定义数字格式的名称。可按名称将它们用作 Format 函数的样式参数。
格式规范说明
"General Number"显示不带千位分隔符的数字。
"Currency"显示带千位分隔符的数字(如果适用);显示小数点分隔符右侧两位。输出基于系统区域设置。
"Fixed"小数点分隔符左侧至少显示一位,右侧显示两位。
"Standard"显示带千位分隔符的数字,其中小数点分隔符左侧至少有一位,右侧有两位。
"Percent"将数字乘以 100 后显示,并在紧右侧追加百分号 (%);小数点分隔符右侧总是显示两位。
"Scientific"使用标准的科学记数法,并且提供两个有效位数。
"Yes/No"如果数字为 0,则显示 No;否则显示 Yes。
"True/False"如果数字为 0,则显示 False;否则显示 True。
"On/Off"如果数字为 0,则显示 Off;否则显示 On。
FORMAT函数的自定义数字格式
用户定义的数字格式表达式可以包含一至三个部分(各部分之间用分号分隔)。如果 Format 函数的 Style 参数包含预定义的数字格式之一,则只允许有一部分。
如果您使用则结果为
只有一部分格式表达式应用于所有值。
两部分第一部分应用于正值和零;第二部分应用于负值。
三部分第一部分应用于正值,第二部分应用于负值,第三部分应用于零。
格式规范
下表标识了可用于创建用户定义的数字格式的字符。
格式规范说明
无显示不带格式的数字。
0(零字符)数字占位符。显示一个数字或一个零。如果表达式在格式字符串中出现零的位置有一个数字,则显示该数字,否则在该位置显示一个零。
如果数字的位数少于格式表达式中零的个数(不管在小数点的哪一侧),将显示前导零或尾随零。如果小数点分隔符右侧的数字位数多于格式表达式中小数点分隔符右侧的零的个数,将对数字四舍五入,使其小数位数与零的个数一样多。如果小数点分隔符左侧的数字位数多于格式表达式中小数点分隔符左侧的零的个数,则将显示多出的位数而不作任何修改。
#数字占位符。显示一个数字或不显示任何内容。如果表达式在格式字符串中出现 # 字符的位置有一个数字,则显示该数字,否则该位置什么也不显示。
除了当数字的位数少于格式表达式中小数点分隔符任意一侧的 # 字符数时不显示前导零或尾随零外,该符号的作用类似于零 (0) 数字占位符。
.(圆点字符)小数点占位符。小数点占位符确定在小数点分隔符左侧和右侧显示几位数。如果格式表达式中该符号的左侧只包含 # 字符,则小于 1 的数字以小数点分隔符开头。若要显示随小数显示的前导零,请使用零作为小数点分隔符左侧的第一个数字占位符。在某些区域设置中,用逗号作为小数点分隔符。在格式化输出中用作小数点占位符的实际字符取决于系统所识别的数字格式。因此,在您的格式中应将句点用作小数点占位符,即使您位于使用逗号作为小数点占位符的区域设置中。格式化字符串将以适合区域设置的正确格式显示。
%百分比占位符。将表达式乘以 100。在格式字符串中出现百分比字符的位置插入百分比字符 (%)。
,(逗号字符)千位分隔符。千位分隔符将在小数点分隔符左侧具有四位或更多位数的数字中的千位和百位分隔开。如果格式包含一个由数字占位符(0 或 #)包围的千位分隔符,则指定千位分隔符的标准用法。
一个千位分隔符紧挨小数点分隔符的左侧(无论是否指定小数)或者作为字符串中最右侧的字符表示“通过除以 1000 来将数字按比例减小,并按需要四舍五入”。小于 1,000 但大于或等于 500 的数字显示为 1,小于 500 的数字显示为 0。此位置有两个相邻千位分隔符表示按一百万倍的比例因子缩小,并且每增加一个分隔符表示另外缩小 1,000 倍。
多个分隔符出现在紧挨小数点分隔符左侧或字符串最右侧位置被视为指定使用千位分隔符。在某些区域设置中,用句点作为千位分隔符。在格式化输出中用作千位分隔符的实际字符取决于您的系统所识别的数字格式。因此,在您的格式中应将逗号用作千位分隔符,即使您位于使用句点作为千位分隔符的区域设置中。格式化字符串将以适合区域设置的正确格式显示。
例如,考虑以下三个格式字符串:
“#,0.”,该字符串使用千位分隔符将数字一亿的格式设置为字符串“100,000,000”。
“#0,.”,该字符串按 1000 的因子进行缩小,将数字一亿的格式设置为字符串“100000”。
“#,0,.”该字符串使用千位分隔符和按 1000 的因子进行缩小,将数字一亿的格式设置为字符串“100,000”。
:(冒号字符)时间分隔符。在某些区域设置中,可能用其他字符表示时间分隔符。在设置时间值的格式时,时间分隔符用于分隔小时、分钟和秒。在格式化输出中用作时间分隔符的实际字符取决于您的系统设置。
/(正斜杠字符)日期分隔符。在某些区域设置中,可能用其他字符表示日期分隔符。在设置日期值的格式时,日期分隔符用于分隔年、月和日。在格式化输出中用作日期分隔符的实际字符取决于您的系统设置。
E-、E+、e-、e+科学记数法格式。如果格式表达式在 E-、E+、e- 或 e+ 的左侧至少包含一个数字占位符(0 或 #),则以科学记数法格式显示数字,并在数字与其指数之间插入 E 或 e。左侧的数字占位符的个数决定了指数中的数字个数。使用 E- 或 e- 可在负指数的后面放置一个减号。使用 E+ 或 e+ 可在负指数的后面放置一个减号,在正指数的后面放置一个加号。还必须在该符号右侧包括数字占位符以获取正确的格式。
-+$()文字字符。这些字符将完全按格式字符串中所键入的形式显示。若要显示所列字符以外的其他字符,请在该字符前加上一个反斜杠 (\) 或将该字符放在双引号 (" ") 中。
\(反斜杠字符)显示格式字符串中的下一个字符。若要将具有特殊含义的字符显示为文字字符,请在该字符前加上一个反斜杠 (\)。反斜杠本身不显示。使用反斜杠与将下一个字符放在双引号中的作用是相同的。若要显示反斜杠,请使用两个反斜杠 (\\)。
不能显示为文字字符的字符示例为日期格式字符和时间格式字符(a、c、d、h、m、n、p、q、s、t、w、y、/ 和 :)、数字格式字符(#、0、%、E、e、逗号和句点)和字符串格式字符(@、&、<、> 和 !)。
"ABC"显示双引号 (" ") 里面的字符串。若要将字符串包含在代码内的样式参数中,必须将文本放在 Chr (34) 之间(34 为引号 (") 的字符代码)。
下表包含用于表示数字的一些示例格式表达式。(所有这些示例均假设您的系统区域设置为“英语 - 美国”)第一列包含 Format 函数的格式字符串;如果格式化的数据具有在列标题中给定的值,则其他列包含生成的输出结果。
格式(样式)“5”格式设置为“-5”格式设置为“0.5”格式设置为“0”格式设置为
零长度字符串 ("")5-50.50
05-510
0.005.00-5.000.500.00
#,##05-510
$#,##0;($#,##0)$5($5)$1$0
$#,##0.00;($#,##0.00)$5.00($5.00)$0.50$0.00
0%500%-500%50%0%
0.00%500.00%-500.00%50.00%0.00%
0.00E+005.00E+00-5.00E+005.00E-010.00E+00
0.00E-005.00E00-5.00E005.00E-010.00E00
"$#,##0;;\Z\e\r\o"$5$-5$1零
注释
如果包含两个连续的分号,则缺少的部分用正值的格式显示。
预定义日期和时间格式:
下表标识预定义的日期和时间格式的名称。如果您使用这些预定义的字符串之外的字符串,它们将作为自定义日期和时间格式来解释。
格式规范说明
"General Date"显示日期和/或时间。例如 3/12/2008 11:07:31 AM。日期显示由您的应用程序的当前区域性值确定。
"Long Date" 或者"Medium Date"根据您的当前区域性的长日期格式显示日期。例如,2008 年 3 月 12 日,星期三。
"Short Date"使用您的当前区域性的短日期格式显示日期。例如 3/12/2008。
"Long Time" 或者"Medium Time"使用您的当前区域性的长时间格式显示时间;通常包括小时、分钟和秒。例如,11:07:31 AM。
"Short Time"使用您的当前区域性的短时间格式显示时间。例如,11:07 AM。
FORMAT函数自定义日期和时间格式:
下表显示可用于创建用户定义的日期/时间格式的字符。
格式规范说明
(:)时间分隔符。在某些区域设置中,可能用其他字符表示时间分隔符。在设置时间值的格式时,时间分隔符用于分隔小时、分钟和秒。在格式化输出中用作时间分隔符的实际字符取决于您应用程序的当前区域性值。
(/)日期分隔符。在某些区域设置中,可能用其他字符表示日期分隔符。在设置日期值的格式时,日期分隔符用于分隔年、月和日。在格式化输出中用作日期分隔符的实际字符取决于您应用程序的当前区域性。
(%)用于指示应以单个字母格式读取后面的字符,而不考虑任何尾随字母。此外,还用于指示以用户定义的格式读取单个字母格式。有关其他详细信息,请参阅以下内容。
d将天显示为不带前导零的数字(例如,1)。如果这是用户定义的数字格式中的唯一字符,则使用 %d。
dd将天显示为带一个前导零的数字(例如,01)。
ddd将天显示为缩写(例如,Sun)。
dddd将天显示为全名(例如,Sunday)。
M将月显示为不带前导零的数字(例如,一月表示为 1)。如果这是用户定义的数字格式中的唯一字符,则使用 %M。
MM将月显示为带一个前导零的数字(例如,01/12/01)。
MMM将月显示为缩写(例如,Jan)。
MMMM将月显示为完整的月份名称(例如,January)。
gg显示时期/时代字符串(例如,A.D.)。
h使用 12 小时制时钟将小时显示为不带前导零的数字(例如,1:15:15 PM)。如果这是用户定义的数字格式中的唯一字符,则使用 %h。
hh使用 12 小时制时钟将小时显示为带前导零的数字(例如,01:15:15 PM)。
H使用 24 小时制时钟将小时显示为不带前导零的数字(例如,1:15:15)。如果这是用户定义的数字格式中的唯一字符,则使用 %H。
HH使用 24 小时制时钟将小时显示为带前导零的数字(例如,01:15:15)。
m将分钟显示为不带前导零的数字(例如,12:1:15)。如果这是用户定义的数字格式中的唯一字符,则使用 %m。
mm将分钟显示为带前导零的数字(例如,12:01:15)。
s将秒显示为不带前导零的数字(例如,12:15:5)。如果这是用户定义的数字格式中的唯一字符,则使用 %s。
ss将秒显示为带前导零的数字(例如,12:15:05)。
f显示秒的小数部分。例如,ff 显示百分之一秒,而 ffff 显示万分之一秒。在用户定义的格式中最多可以使用 7 个 f 符号。如果这是用户定义的数字格式中的唯一字符,则使用 %f。
t使用 12 小时制时钟,对于中午之前的任何小时都显示大写字母 A;对于中午与 11:59 P.M 之间的任何小时都显示大写字母 P。如果这是用户定义的数字格式中的唯一字符,则使用 %t。
tt对于使用 12 小时制时钟的区域设置,对中午之前的任何小时都显示大写字母 AM;对于中午与 11:59 P.M 之间的任何小时都显示 PM。
对于使用 24 小时制时钟的区域设置,不显示任何内容。
y将年显示为不带前导零的数字 (0-9)。如果这是用户定义的数字格式中的唯一字符,则使用 %y。
yy以带一个前导零的两位数字格式显示年(如果适用)。
yyy以四位数字格式显示年。
yyyy以四位数字格式显示年。
z显示不带前导零的时区偏移量(例如,-8)。如果这是用户定义的数字格式中的唯一字符,则使用 %z。
zz显示带一个前导零的时区偏移量(例如,-08)
zzz显示完整的时区偏移量(例如,-08:00)
注释
格式设置字符串区分大小写。使用不同的大小写形式,可以获取不同的格式。例如,当使用字符串“D”格式化日期值时,可以获得采用长格式的日期(根据您的当前区域设置)。但是,如果将此字母更改为小写“d”,则可以获得采用短格式的日期。此外,如果目标格式与任何定义的格式字符串的大小写都不匹配,则可能出现意外结果或错误。
日期/时间格式使用当前用户区域设置来确定字符串的最终格式。例如,若要使用下列格式字符串“M/d/yyyy”来设置日期 1995 年 3 月 18 日,如果用户区域设置为美国 (en-us),则结果为“3/18/1995”;但如果用户区域设置为德国 (de-de),则结果为“18.03.1995”
LEFT函数:从文本字符串的开头返回指定数据的字符--- RIGHT(, )
LEFT(, )
LEN()
LOWER() ….UPPER
REPLACE 将基于您指定的字符数,用不同的文本字符串替换文本字符串的一部分。
语法
REPLACE(, , , )
REPT:重复给定次数的文本。使用 REPT 可用一个文本字符串的许多实例填充单元格。
语法
REPT(, )
SEARCH:返回最先找到特定字符或文字字符串的位置的字符编号
语法
SEARCH(, , [start_num])
SUBSTITUTE:用文本字符中的新文本替换现有文本。
语法
SUBSTITUTE(, , , )
TRIM:从文本删除两个词之间除了但哥空格外的所有空格
语法
TRIM()
VALUE:将表示数字的文本字符串转为数字
语法
VALUE()
DAX与MySQL语法的比较。
1、 查看表的所有行记录
Select * from tb_product_order
DAX: 表 = '订单表' //返回的表的记录,不能使用新建度量值方法,
需《建模》--新表
2、 单表过滤条件,在关系型数据库里使用WHERE XX=”OO”
SELECT * FROM tb_product_order WHERE STATUS=100
DAX: 表 = FILTER('订单表','订单表'[status]=100)
3、多表JOIN连接(左外连接)
SQL:
SELECT tbp.* FROM tb_product_order tbp
LEFT JOIN dim_renttpye dimr
ON tbp.type=dimr.id WHERE dimr.id=1
DAX:
表 = FILTER('订单表',RELATED('商品消费方式'[id])=1)
4、单表维度使用分组GROUP BY
SELECT `type`,COUNT(`type`) FROM tb_product_order tb GROUP BY `type`
DAX:
表 = GROUPBY('订单表','订单表'[type],"AAA",COUNTAX(CURRENTGROUP(),'订单表'[type]))
5、获取前几个最大或最小的值
SELECT amount,DATE(create_time) FROM tb_product_order ORDER BY amount ASC LIMIT 3
DAX:
表 = TOPN(3,'订单表','订单表'[amount],ASC)
以上通过简单的应用返回包含值得表。
返回包含值得表的限制:
1、 表达式不能引用度量值
2、 表达式不能使用嵌套CALCULATE函数
3、 表达式不能使用扫描表或返回表的任何函数,包括聚合函数
DAX一些其他函数使用
度量值:
统计状态分组数据
度量值SWICH = sumx('订单表',SWITCH([status],101,'订单表'[amount],200,'订单表'[amount],300,'订单表'[amount],400,'订单表'[amount],500,'订单表'[amount],600,'订单表'[amount],700,'订单表'[amount],'订单表'[amount]))
度量值 = SUMMARIZE(CALCULATETABLE('用户表',FORMAT('用户表'[create_time],"yyyy")="2017"),'用户表'[city],'用户表'[county],"total_count",COUNT('用户表'[user_id]))
累计注册用户数 = IF(
MAX('PowerBi 时间维度表'[DateKey].[Date])
CALCULATE(COUNT('用户表'[user_id]),FILTER(ALLSELECTED('PowerBi 时间维度表'[DateKey]),'PowerBi 时间维度表'[DateKey] <= MAX('PowerBi 时间维度表'[DateKey]))))
##返回表,函数嵌套
AA := FILTER(SUMMARIZE('订单表', '订单表'[product_id],'订单表'[create_time],"销售总额",sum('订单表'[amount])),[销售总额]<>0)