2016-11-19 36 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歸檔文件中。