我是小必,很高兴在这里遇见你,以Excel和Power BI会友。

本期内容主要讲解如何在Power BI或者Excel中的Power Query与Power Pivot中直接使用函数来建表。主要会使用到以下的函数。其中DAX函数有:DATATABLE和SELECTCOLUMNS函数,M函数会使用到#table和Table.FromRecords.

1

使用DAX函数建表

(1)DATATABLE函数

通DATATABLE函数主要是用来手工创建表的函数。

功能:创建以内联方式定义的数据表。

语法:DATATABLE(名称1,类型1,名称2,类型2,……,数据)

这个语法相对比较简单,其中类型主要有BOOLEAN,CURRENCY,DOUNBLE,INTEGER,STRING。这么种分别布尔型,货币型,双精度型,单精度型和文本型。

根据上述来构建一个表:

具体代码如下:(向左划动可看全)

DATATABLE (
"姓名", STRING,
"性别", STRING,
"年龄", INTEGER,
"民族", STRING,
{
{ "张三", "男", 21, "汉" },
{ "李四", "女", 25, "蒙古族" }
}
)

这个函数非常要注意,最后一个参数,是以list的方式来呈现,类似于Power Query中的M的语法,每一个为一个list。

(2)SELECTCOLUMNS函数

功能:选择列中的表或者创建新列。

语法:SELECTCOLUMNS(表,[名称1],[表达式1],……)

SELECTCOLUMNS以{}创建一个表,如果SELECTCOLUMNS+{}则创建一个空表;如果不反指定标题,那么会返回Value1,Value2……。该函数在创建表时可以不指标字段的类型。

可以构建以下的表:

代码如下:(向左划动可看全)

SELECTCOLUMNS (
{
( "张三", "男", 21, "汉" ),
( "李四", "女", 25, "蒙古族" )
},
"姓名", [Value1],
"性别", [Value2],
"年龄", [Value3],
"民族", [Value4]
)

2

Power Query中的M函数建表

(1)#table函数建表

通过#table函数就可以创建表,这个函数是#开头的,函数名称是小写。

功能:从列columns和列表rows创建一个表值。

语法:function (columns as any,rows as any) as any

上面的语法,可能是真的看不懂,那么翻译成人话就是:

=#table({字段1,字段2,字段3,……)},{{第1行},{第2行},……})

如构建一个表为:

其公式可以写成:

#table({"姓名","性别","年龄","民族"},
{
{"张三","男","21","汉"},
{"李四","女","25","蒙古族"}
}
)

但是通过上面创建的表是没有字段的类型的。下面这种方法可以构建带有字段类型的表。如将上面的表创建成带有字段类型,即“姓名”为文本型,“性别”为文本,“年龄”为数字,“民族”为文本,再添加一个日期列,内容为null值。

其公式可以写成:(向左划动可看全)

#table(type table
[
姓名=text,性别=text,
年龄=number,民族=text,
出生日期=date],
{
{"张三","男","21","汉",null},
{"李四","女","25","蒙古族",null}
}
)

与上面的公式不同的是,这里的#table的第一个参数使用了Record的方法,并且使用type table 指定了每个字段的类型。第二个参数与上面的是一样的。

实际使用过程中最常用的还是第一种方法,直接了解,可以直接通过函数或者手动书写第一个参数,但用第二个方法就有些麻烦。

(2)Table.FromRecords函数建表

还有一个建表的方法,就是先根据Power Query中的记录来生成需要的记录,再使用Table.FromRecords来转换成表。

具体代码如下:(向左划动可看全)

Table.FromRecords(
{
[ 姓名="张三",性别="男",年龄="21",民族="汉"],
[姓名="李四",性别="女",年龄="25",民族="蒙古族"]
}
)

这个方法在Power Qeury直接建表的也是很方便的。

END


我是小必:Excel与Power BI爱好者,微软MOS认证Office Master。著有《Excel人力资源管理实战宝典》一书,全网同名自媒体"Excel聚焦"主笔,以Excel与Power BI会友

相关推荐