PowerQuery类型定义语法差异与Table.Schema字段区别咨询
PowerQuery 技术问题解答
1. 为何类型定义语法存在两种形式?
一种使用type关键字(如type text表示文本类型),另一种不使用type关键字(如Int64.Type表示整数类型)。
这两种形式是同一类型实体的不同语法表达,核心区别在于使用场景:
type text是类型字面量语法,属于M语言原生的类型声明方式,写法简洁,适合在类型注解、自定义类型定义等场景直接声明类型。Int64.Type是类型对象的属性引用,是内置类型对象的静态属性,本质是指向对应类型值的指针。这种写法更适合动态获取类型、或者在函数中传递类型对象的场景。
两者指向的是同一个类型,只是语法层面的不同呈现,按需选择即可。
2. Table.Schema中的*[TypeName]与[Kind]*字段有何区别?
Table.Schema()返回的表中,这两个字段都用于描述列的类型信息,但定位完全不同:
- [TypeName]:代表具体的类型名称,是类型的精准标识。比如
Int64.Type对应的TypeName是"Int64",自定义类型会显示你定义的专属名称,它直接对应到某一个具体的类型实现。 - [Kind]:代表类型的大类分类,是对类型的抽象归类。比如
Int64、Int32的Kind都是"Number",text的Kind是"Text",自定义记录类型的Kind是"Record"。它能帮你快速判断列属于哪一类数据范畴,无需关注具体子类型细节。
举个实际例子:某列类型为Int64.Type,则它的TypeName是"Int64",Kind是"Number";如果是自定义类型type Person = [Name=text, Age=Int64.Type],对应的TypeName是"Person",Kind是"Record"。
内容的提问来源于stack exchange,提问作者Denis
相关产品推荐
相关产品推荐

