理解PQ里的数据结构(一、总体结构)

2021-08-31 10:14:04 浏览数 (1)

小勤:大海,怎么感觉Power Query里的数据结构跟Excel里的工作表是不一样的啊,但又说不出来哪里不一样。

大海:嗯,要深入学习M及函数部分,的确需要更加深入了解PQ里的数据是怎么构成的。我们还是先拿个简单的例子来看一下吧。

首先,我们创建一个查询,比如说订单表:

这个时候,PowerQuery里有了一个查询(注意修改名字),显示出来2个查询步骤,一个结果表:

我们再添加一个查询,比如订单明细表:

然后将订单明细表与订单表合并一下:

结果如下:

这里面我们可以知道:

  • 现在工作簿里有2个查询(一个订单表,一个订单明细表)
  • 每个查询里有多个步骤
  • 最后的步骤对应着一张结果表(在PQ里叫Table)
  • 结果表里有很多行(在PQ里叫记录Record),很多列(在PQ里叫列表List)
  • 行列交叉形成很多很多的“单元格”
  • “单元格”里有各种内容,如文本、数字等等(在PQ里统称为值Value)

总之,形成一个层层嵌套的结构,大概如下图所示:

小勤:这个主体结构感觉跟Excel里的表也挺像,但是,PQ里的“单元格”貌似不像Excel里的单元格那么简单啊!你看合并过来的,一个单元格里实际是一张表(Table)?

大海:对的,这是一个很特别的地方,PQ的单元格里可能是各种内容,一个表、一行、一列、一个值等等。实际上你也可以查看它的内容,即使是一张表,比如这样:

除此之外,前面我们看到的每一个步骤,实际上都形成一张表,而且这些表在后面的步骤里都是可以按需要调用的,并不是有了后面的步骤,前面的表就不存在了。比如虽然现在生成了合并查询结果,但我只想显示订单明细表,在高级编辑器里,将in后面的“合并的查询“修改为”更改的类型“:

修改后如下:

结果如下:

这里隐藏着一个很重要的信息,即每一个步骤的名称,实际就是这个步骤得到的结果表的名称!

这一点在Power Query里非常重要,在后续的步骤中需要调用其他步骤的结果时,都可以通过该步骤名称(即相当于表名称)取得相关内容!

小勤:原来这样啊!这个太灵活了,也感觉好绕啊!

大海:对的,这个理解起来是有点儿费劲,不过后续我们再通过一些其他的例子来练练就不难理解了。

小勤:好的。

0 人点赞