Lazy loaded imageFAQ 002:为什么[]取列值和{}取行值图标不一样,展示形式一样但是实质却是不一样的?

type
status
date
slug
summary
tags
category
icon
password
notion image

(本文3000字,阅读需要8分钟左右)

FAQ-002:

为什么[]取列值和{}取行值后,显示结果图标不一样,展示形式一样但是实质却是不一样的?

 
notion image
以上为取表中“一行”的值。
notion image
以上为取表中“一列”的值。
这两张截图它们完美地展示了 Power Query 中“数据形态”的区别。

回答初学者常见的两个疑问

  1. 公式 = 表1[姓名] 取出来的不是表,而是列
      • 答案:不是表 (Table),它是列表 (List)。
      • 这就是为什么左上角会有一个大大的 “到表” (To Table) 按钮。只有当你把它“转换”成表之后,它才算是一张表。
  1. 为什么中括号和大括号取值出来的样式(以及出来的结果)形式一样,但实质不一样?
      • 查询1 (= 表1{0}):用了大括号 {0},代表取行。结果是一个 记录 (Record)
      • 查询2 (= 表1[姓名]):用了中括号 [姓名],代表取列。结果是一个 列表 (List)
      • 以上两个虽然实质不一样(一个行一个列),但外观形式有点像,都是竖着的(即便是行信息)。

结合上面的两张截图,深入剖析一下:

图1:查询1 —— 取行得到 Record

notion image
  • 代码= 表1{0}
  • 动作:使用大括号 { },通过下标 0 取出了表格的第一行
  • 结果形态记录 (Record)
    • 你看界面中间,它是竖着显示的,左边是字段名(姓名、年龄...),右边是值。
    • 它就像一张“名片”“卡片”,单独描述了张三这一行的数据。
  • 为什么有“到表”按钮?
    • 因为 Power Query 的很多后续操作(比如筛选、透视)是针对“表”的。一张单独的“卡片”不好操作,所以它问你要不要把这张卡片放进一个表格容器里(变成一张只有一行的表)。

图2:查询2 —— 取列得到 List

notion image
  • 代码= 表1[姓名]
  • 动作:使用中括号 [ ],通过列名取出了整整一列数据。
  • 结果形态列表 (List)
    • 你看左侧导航栏,“查询2”的图标是一个只有1列的小点(列表图标)代表是列,而不是表格图标。
    • 你看界面中间,只有一个标头叫“列表”,下面全是值(张三、李四、王五)。
    • 它就像一个“购物清单”,只是单纯的一串值,没有列名(现在的“列表”二字只是提示,不是真正的列头),也没有行号的概念。
  • 为什么有“到表”按钮?
    • 这是关键点! 虽然看着像表,但它在 M 语言眼里只是一串文字
    • 你无法对它进行“筛选红色”、“按班级分组”等操作。
    • 点击 “到表”,Power Query 就会把这个“购物清单”贴到一个 Excel 表格里,给它加上正式的列头(Column1),把它变成一个真正的 Table 对象。

总结:看图标识身份

在 Power Query 左侧的查询导航栏里,不同的图标代表不同的“容器”:
  1. 最上面的田字格图标:代表 Table (表)。这是我们要的最终形态。
  1. 第三个,几个小点1列的图标(你的查询2):代表 List (列表)。通过 [列名] 取出。
  1. 两排单元格图标(你的查询1):代表行 Record (记录)。通过 {下标} 取出。
  1. 如果是123/ABC图标:则代表具体的 Value (单值)。比如你取具体的某个单元格,结果就是一个单纯的数字或文本
所以,请记住:
当你写 =表1[姓名] 时,你是把这一列的内容抽出来了(肉),扔掉了表格的壳子(骨架)。如果你想保留壳子,就需要点那个“到表”按钮,或者在一开始就使用 Table.SelectColumns 函数(即意思是选择列,而不是提取列)。

如果本篇文章对您有帮助或启发,请帮我们点赞、转发、推荐、关注,让更多想转型财务BP、锻造数据分析和可视化洞察能力的财务同行们看到,关注【老汪洞察】,不迷路!
若想获得更多制造业成本本管控、核算、全面预算、业财融合方面的落地实操干货,加入我们的大本营是你的不二之选,快点击下方卡片看看吧!
温馨提示
🙏🏻
如果您不想错过【老汪洞察】的文章,请将我们设为"星标",这样每次最新文章推送才会第一时间出现在您的订阅列表里。 方法:点击文章页面左上角蓝色文字“老汪洞察”进入主页,点击关注后,再点主页右上角"...",然后选择"设为星标",即可完成,感谢您的支持。
 
上一篇
FAQ 001:Power Query (M语言) 中,[]和{}在不同场景下两种用法
下一篇
FAQ 003:为什么[]取列值和{}取行值展示形式都是竖着的,好像都是列一样?
Loading...
文章列表
让财税成为经营的力量
电脑与网络
从Power Query到Power BI,入门到精通
知识运用