Power Query 中的数据类型用于对值进行分类,以便具有更结构化的数据集。 数据类型在字段级别定义 - 字段内的值设置为 符合 字段的数据类型。
列的数据类型显示在列标题的左侧,带有符号数据类型的图标。
注释
Power Query 基于列的数据类型提供一组上下文转换和选项。 例如,选择数据类型为 Date 的列时,将获得应用于该特定数据类型的转换和选项。 这些转换和选项在 Power Query 界面中发生,例如“ 转换 ”和 “添加列 ”选项卡和智能筛选器选项。
下表列出了 Power Query 中使用的最常见数据类型。 尽管超出了本文的范围,但可以在 Power Query M 类型和类型转换 文章中找到常用数据类型的列表。 Power Query M 公式语言 类型 一文中还有数据类型的完整列表。
| 数据类型 | 图标 | Description |
|---|---|---|
| 文字 |
|
Unicode 字符数据字符串。 可以是文本格式表示的字符串、数字或日期。 最大字符串长度为 268,435,456 个 Unicode 字符(其中每个 Unicode 字符为 2 字节)或 536,870,912 字节。 |
| True/False |
|
值为 True 或 False 的布尔值。 |
| 十进制数 |
|
表示 64 位(八字节)浮点数。 它是最常见的数字类型,与通常想到的数字相对应。 虽然设计为处理带小数值的数值,但它也处理整数。 十进制数类型可以处理从 –1.79E +308 到 –2.23E –308、0 和从 2.23E –308 到 1.79E + 308 的负值。 例如,34、34.01 和 34.000367063 等数字是有效的十进制数。 十进制数类型中可表示的最大精度为 15 位。 小数分隔符可以在数字中的任何位置发生。 十进制数字类型对应于 Excel 如何存储其数字。 请注意,二进制浮点数不能表示其支持范围内具有 100% 准确性的所有数字。 因此,表示某些十进制数时,精度的细微差异可能会发生。 |
| 固定十进制数 |
|
也称为 Currency 类型,此数据类型具有小数分隔符的固定位置。 小数分隔符始终右侧有四位数字,允许 19 位重要数字。 它可以表示的最大值是 922,337,203,685,477.5807(正或负)。 与十进制数不同,固定十进制数类型始终精确,因此在浮点表示法不精确可能会导致错误的情况下非常有用。 |
| 整数 |
|
表示 64 位(八字节)整数值。 因为它是整数,所以小数点右侧没有数字。 它允许 19 位数字;正数或负整数介于 –9,223,372,036,854,775,807(–2^63+1)和 9,223,372,036,854,775,806(2^63–2)。 它可以表示各种数值数据类型的最大可能精度。 与固定十进制数类型一样,在需要控制舍入的情况下,整数类型非常有用。 |
| 百分比 |
|
基本上与十进制数字类型相同,但它具有掩码,用于将列中的值的格式设置为 Power Query 编辑器窗口中的百分比。 |
| 日期/时间 |
|
表示日期和时间值。 在封面下方,日期/时间值存储为十进制数字类型,因此实际上可以在两者之间转换。 日期的时间部分存储为 1/300 秒(3.33 毫秒)的整数倍数。 支持 1900 年至 9999 年之间的日期。 |
| 日期 |
|
仅表示日期(无时间部分)。 转换为模型时,Date 与分数值为零的 Date/Time 值相同。 |
| 时间 |
|
表示时间(无日期部分)。 转换为模型时,Time 值与日期/时间值相同,小数点左侧没有数字。 |
| 日期/时间/时区 |
|
表示具有时区偏移量的 UTC 日期/时间。 加载到模型时,它转换为日期/时间。 |
| Duration |
|
表示加载到模型中时转换为十进制数类型的时间长度。 作为一种十进制数字类型,它可以与“日期/时间”字段进行相加或相减,并获得正确结果。 因为它是十进制数字类型,因此可以轻松地在显示数量级的可视化效果中使用它。 |
| 二进制 |
|
二进制数据类型可用于表示具有二进制格式的任何其他数据。 |
| 任意 |
|
Any 数据类型是指没有显式数据类型定义的列的状态。 任何数据类型都是对所有值进行分类的数据类型。 建议始终显式定义来自非结构化源的查询的列数据类型。 此外,请避免在查询输出中包含“Any”数据类型的列。 |
数据类型检测
连接到以下项目时,会自动进行数据类型检测:
结构化数据源(如数据库),Power Query 从数据源读取表架构,并为每个列使用正确的数据类型自动显示数据。
非结构化源(如 Excel、CSV 和文本文件),Power Query 通过检查表中的值自动检测数据类型。 默认情况下,非结构化源的 Power Query 中启用了自动数据类型检测。
还可以在“转换”选项卡上的“任意列”组中使用“检测数据类型”命令自动检测表中列的数据类型。
如何定义列数据类型
可以在四个位置之一定义或更改列的数据类型:
在“ 开始 ”选项卡上的 “转换 ”组中的“ 数据类型 ”下拉菜单中。
在“ 转换 ”选项卡上的“ 任何列 ”组中的“ 数据类型 ”下拉菜单中。
选择列标题左侧的图标。
在列快捷菜单上的 “更改类型”下。
自动检测列数据类型和标头
此设置专门用于非结构化源。 它通过基于表的前 200 行自动检查和检测列类型和标头,从而帮助你。 启用此设置后,Power Query 会自动向查询添加两个步骤:
- 提升列标题:将表的第一行提升为列标题。
- 已更改的类型:根据检查每个列中的值,将任意数据类型的值转换为数据类型。
默认情况下会启用此设置。 若要禁用或启用此设置,请遵循适用于 Power Query 体验的步骤。
在 Power Query Online 中配置自动数据类型检测
在“开始”选项卡上,选择“选项”,然后在“项目”选项下选择“数据加载”。 选中“ 自动检测非结构化源的列类型和标题 ”复选框。
在 Power Query Desktop 中配置自动数据类型检测
可以在 “选项” 窗口(在 Power Query 编辑器中的“ 文件 ”选项卡上,选择“ 选项”和“设置>选项”)中的全局级别和每文件级别定义此行为。
全局:在“ 全局”下的左窗格中,选择“ 数据加载”。 在 “类型检测”下的右窗格中,可以选择三种类型检测配置中的任何一种,这些配置应用于应用程序中创建的每个新文件:
- 始终检测非结构化源的列类型和标头
- 根据每个文件的设置检测非结构化源的列类型和标头
- 从不检测非结构化源的列类型和标头
当前文件:在 “当前文件”下的左窗格中,选择“ 数据加载”。 在 “类型检测”下的右窗格中,选择是要为当前文件启用或禁用类型检测。
文档或项目区域设置
Power Query 处理两个不同的组件,这些组件管理外观和解释方式:
- 本地化:确定 Power Query 应以何种语言显示的组件。
- 全球化:处理值格式设置和文本值解释的组件。
区域设置 是包含本地化和全球化组件的单个值。 区域设置用于解释文本值并将其转换为其他数据类型。 例如,区域设置 英语(美国) 表示 本地化 采用美国英语,而 全球化或值格式基于美国使用的标准。
当 Power Query 定义列数据类型或从一种数据类型转换为另一种数据类型时,它必须解释要转换的值,然后才能将其转换为其他数据类型。
在 Power Query Online 中,此解释在 “项目 ”选项( 区域设置)中定义。
在 Power Query Desktop 中,Power Query 会自动识别作系统区域格式,并使用该格式解释数据类型转换的值。 若要替代此区域设置配置,请打开“查询 选项 ”窗口,然后在“ 当前文件”下的左窗格中,选择 “区域设置”。 在此处,可以将区域设置更改为所需的。
此区域设置对于将文本值解释为特定数据类型非常重要。 例如,假设你的区域设置设置为 英语(美国),但其中一个 CSV 文件中的列的日期采用英国日期/月/年格式。
尝试将 Date 列的数据类型设置为 Date 时,会收到错误值。
发生这些错误是因为正在使用的区域设置正尝试以英语(美国)格式(即月/日/年)解释日期。 由于日历中没有第 22 个月,因此会导致错误。
与其尝试仅选择日期数据类型,可以右键单击列标题,选择更改类型,然后选择使用区域设置。
在“使用区域设置”对话框的“更改列类型”中,选择要设置的数据类型,但也选择要使用的区域设置,在本例中为英语(英国)。
使用此区域设置时,Power Query 可以正确解释值,并将这些值转换为正确的数据类型。
验证最终日期值
全球化值驱动日期值的格式设置。 如果对 Power Query 显示的值有任何疑问,可以通过为值中的日期、月和年份添加新列来验证日期值的转换。 若要添加新列,请选择 “日期 ”列,然后转到功能区上的 “添加列 ”选项卡。 在 “日期和时间”列 组中,将显示日期列的选项。
在此处,可以提取日期值的各个部分,例如年号、月号、日数,或者从 Date 列中提取的更多列。
通过使用这些列,可以验证日期值是否已正确转换。
数据类型转换矩阵
以下矩阵旨在快速了解值从一种数据类型转换为另一种数据类型的可行性。
注释
此矩阵中的转换从“ 数据类型 ”列中的原始数据类型开始。 转换为新类型的每个结果显示在原始数据类型的行中。
| 数据类型 |
|
|
|
|
|
|
|
|
|
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
十进制数 |
— |
|
|
|
|
|
|
|
|
|
|
货币 |
|
— |
|
|
|
|
|
|
|
|
|
整数 |
|
|
— |
|
|
|
|
|
|
|
|
百分比 |
|
|
|
— |
|
|
|
|
|
|
|
日期/时间 |
|
|
|
|
— |
|
|
|
|
|
|
日期 |
|
|
|
|
|
— |
|
|
|
|
|
时间 |
|
|
|
|
|
|
— |
|
|
|
|
日期/时间/时区 |
|
|
|
|
|
|
|
— |
|
|
|
持续时间 |
|
|
|
|
|
|
|
|
— |
|
|
文本 |
|
|
|
|
|
|
|
|
|
— |
|
是/否 |
|
|
|
|
|
|
|
|
|
|
— |
| 图标 | Description |
|---|---|
|
可能 |
|
不可能 |
|
可能,但这会在原始值上增加值 |
|
可能,但会导致原始值被截断 |
Power Query M 中的类型
可以在 Power Query M 类型和类型转换 文章中找到常用数据类型的列表。 Power Query M 公式语言 类型 一文中还有数据类型的完整列表。