2016-11-19 81 views
1

我可以预先编辑“表达文件”。 但把“部分文件”将导致错误。在Excel中使用强力查询在哪里写“section-document”?

根据PDFPower Query for Excel Formula Language Specification, Aug 2015Page 15, 2.1 Documents

文档或者由恰好一个表达或组织成段的 定义的基团。

当我把“部分定义”像下面,在“高级编辑器”,该错误信息是“无效的表达式”:

section SectionA; 
A = 1; 

这是很显然的是,高级编辑期待“expression-文件“,而不是”部分文件“。 (这两个术语来自PDF第107页,12.2.1文档,“表达式文档”仅仅是一个“表达式”,12.2.3.1表达式)

我觉得PQ中的“Section”像“Module”一样组织代码。我想用它。

但是,我发现没有办法编写“section-document”。 (page 98, 11.Sections的规格)

一个工作轮是创建一个称为MyFunSet的“查询”,它返回许多函数的记录。

Query-Name: MyFunSet has following "expression" in Adv Editor 

[ FunA =() => ..., 
    FunB = (x) => ... 
] 

当在其他“查询”中使用此MyFunSet将如下所示。我已经测试过它的工作原理。

let a = MyFunSet[FunA]() 
    , b = MyFunSet[FunB](1) 
    in 1 

let FunA = MyFunSet[FunA] 
, FunB = MyFunSet[FunB] 
, a = FunA() 
, b = FunB(1) 
in 1 

这项工作,一个圆是确定的,但不是很好。

结果#1(#settions) PDF第100页,PQ表达#sections将返回段的记录。创建值为#sections的新查询,返回的记录具有名称为'Section1'的一个字段,值是Excel工作簿中所有查询的记录。例如, 的工作簿具有

Query1 = ... 
Query2 = ... 
Query3 = #sections 

QUERY3将返回这样的记录:

[ Section1 = [Query1 = ..., Query2 = ..., Query3 = ...] ] 

根据这一点,我解释说整个Excel工作簿中只允许一个部分,名为“SECTION1”

查找#2(部分存取表达)PDF页110,

12.2.3.13 Section-access expression 
    section-access-expression: identifier ! identifier 

查找#3(文献)PDF页107,

12.2.1 Documents 
    document: 
     section-document 
     expression-document 

“高级编辑器” 只接受表达文档,而不是部分文档

查找#4(导出PQ如*的.odc)

在Excel 356,每个loaded PQ是工作簿连接,并且可以导出为*的.odc

  • 找到loaded查询表中的单元格,
  • 转到菜单“数据”,单击“连接属性..”,
  • 在页面标签,“Definiton”,单击“导出连接文件”,
  • a * .odc已创建。
  • 检查的标签* .odc文件

以下是找到

<Formula><![CDATA[let 
Query3 = #sections, 
in 
Query3]]></Formula> 

这4个结果让我感受到一个工作簿将始终创建名为“SECTION1”只有一个“节” 。如果工作簿可以“引用”一个或多个其他工作簿,则允许使用多个部分。这些附带2个问题:

  • 如何引用?
  • 如何将总是“Section1”的节名重命名为其他名称?

我想知道如何在Excel Power Query中使用 - “section”。

+0

发生了什么错误 – SMW

+0

表达式无效。 –

回答

1

伟大的问题。您无法直接编辑节文档。 在Excel/Power Query中,每次编辑某个Query的表达式时,您都正在编写部分文档的一部分。

如果定义了“查询1”为1 + 1并创建一个单独的“QUERY2”为Query1 + 1,则Excel中写出本节文件:

section Section1; 

shared Query1 = 1 + 1; 

shared Query2 = Query1 + 1; 

你的解决方法也应该很好地工作。我认为这就是例如这"M" library on GitHub呢。

0

只是为了澄清 - “section”关键字由Excel自动添加到内部。

当您编写查询作为单独的查询显示时,excel将m语言查询代码保存在一个“М文档”中 - 将这些查询分隔成多个部分的文件。 这个包含所有M代码的文件是base64编码并添加到excel工作簿zip归档文件中。