M table 每列使用预定义类型
M table using a predefined type per column
在以下 M 查询中:
let
#"My Source" = Table.FromRecords({
[Name="Jared Smith", Age=24],
[Name = "Tom Brady", Age=44],
[Name="Hello Tom", Age = null],
[Name = "asdf", Age = "abc"]
})
in
#"My Source"
为什么 "abc" 不产生错误?除非明确定义类型,否则 PowerPivot 是否使用 "any" 类型?
您可以使用 #table
函数指定每一列的类型:
let
Source = #table(
type table
[
#"Name"=text,
#"Age"=number
],
{
{"Jared Smith", 24},
{"Tom Brady", 4},
{"Hello Tom", null},
{"asdf", "abc"}
}
)
in
Source
正如我在评论中提到的:Power Query 确实使用 ANY 数据类型,除非您专门指定一个数据类型。
在某些情况下,例如当您从 Excel Table 获取数据时,它会根据列中的所有条目是否相同来自动检测数据类型类型。有时它做错了——例如总是将 Date 转换为 Date/Time,而您可能真的只需要 Date。
您可以使用 Table.TransformColumnTypes
来执行此操作。您甚至可以编写自己的例程来检测和分配数据类型。
您会注意到,如果将 Age
列的 DataType
更改为 Whole Number
,abc
单元格将显示 Error
您还可以编写例程来处理单列中的混合数据类型,例如,将它们拆分到它们自己的列中。
在以下 M 查询中:
let
#"My Source" = Table.FromRecords({
[Name="Jared Smith", Age=24],
[Name = "Tom Brady", Age=44],
[Name="Hello Tom", Age = null],
[Name = "asdf", Age = "abc"]
})
in
#"My Source"
为什么 "abc" 不产生错误?除非明确定义类型,否则 PowerPivot 是否使用 "any" 类型?
您可以使用 #table
函数指定每一列的类型:
let
Source = #table(
type table
[
#"Name"=text,
#"Age"=number
],
{
{"Jared Smith", 24},
{"Tom Brady", 4},
{"Hello Tom", null},
{"asdf", "abc"}
}
)
in
Source
正如我在评论中提到的:Power Query 确实使用 ANY 数据类型,除非您专门指定一个数据类型。
在某些情况下,例如当您从 Excel Table 获取数据时,它会根据列中的所有条目是否相同来自动检测数据类型类型。有时它做错了——例如总是将 Date 转换为 Date/Time,而您可能真的只需要 Date。
您可以使用 Table.TransformColumnTypes
来执行此操作。您甚至可以编写自己的例程来检测和分配数据类型。
您会注意到,如果将 Age
列的 DataType
更改为 Whole Number
,abc
单元格将显示 Error
您还可以编写例程来处理单列中的混合数据类型,例如,将它们拆分到它们自己的列中。