2018 年 1 月

第 33 卷,第 1 期

本文章是由機器翻譯。

Office 的資料分析、 機器學習和 Microsoft Excel

Michael Saunders |2018 年 1 月

花點時間思考整個 Excel — 它是分析資料,包括從我方便小待辦事項清單試算表到大量 100 MB 財務模型活頁簿,在世界上最上層銀行彈性、 功能強大、 廣泛運用的工具。位於所有複雜的功能,靈活圖表背後下方和格式化,實際的值是在內部呼叫"Calc"的計算。計算是功能可讓您建立的儲存格之間的關聯性:您可以藉由撰寫簡單的公式來描述值之間的相依性樹狀結構表示複雜模型 (請參閱圖 1)。然後,只要您進行變更時,計算更新相依的值根據這些公式。

計算可讓您建立的儲存格之間的關聯性
圖 1 計算可讓您建立的儲存格之間的關聯性

Excel 提供了很有幫助使用之函數的公式,從基本的平均函式中的 (bit.ly/1Tjynwl),像搜尋尋找子字串的字串分析函式 (bit.ly/2jhcEuV),以更複雜的計算,像是 T.TEST 統計函數 (bit.ly/2ipowKE)。在工作和學校的人員了解 Excel 函數,可以用在公式中,而且它們與其互動自然日常計算需要。因此如果您想要提供強大的功能,還沒有 Excel,請考慮建置用於此用途的 Excel 函數。請參閱圖 2的範例:Contoso 解密 Corp.想要釋解決方案,可協助 sleuths 分析 Excel 來解碼的訊息中的資料。其中一種方便的工具的程式碼中斷是辨識 primes 快速,讓 Contoso 很樂意 detectives 人員已經使用 Excel 數百萬個 ISPRIME 函式。本文中稍後您會看到此函式和其增益集需要的其他功能,Contoso 的建置方式。

若要識別質數 Contoso 函式
圖 2 來識別質數 Contoso 函式

我可以建立什麼?

建置開始之前,請考慮並非所有擴充功能至 Excel] 功能,應該使用 Excel 公式。如果您應該問問自己的決定:「 沒有我的函式需要變更任何項目所傳回的 Excel 值除了? 」 換句話說,函式有副作用嗎?在 Excel 中,人員不需要變更任何項目以外的使用者正在輸入的資料格的公式。這項變更可能會觸發其他變更,但這些也是各自獨立的公式,而沒有副作用的結果。當您輸入 「 = sum () 」 儲存格 A1 中時,您不希望雖然您可以控制所有這些行為屬於您建置方案當做某處顯示在工作表或新的資料列下方加入或變更財務在網際網路上,資料庫中的數字的圖表其中可能包含函式和其他功能。

您應該建立 Excel 的函式建立的方案類型取決於您的技術和目標。如果您是專業開發人員,外部銷售喜歡 Contoso 解密或建置自己的組織中的人員,增益集是在 Excel 中,資料分析方案的工具中所述為 「 JavaScript 自訂中的函式Excel 增益集區段。 」 如果您是 AI 開發人員或想要建立智慧型的模型,供資料分析師在您的公司使用的資料科學家,請參閱本文稍後的 < Azure 機器學習服務函數 > 一節。而且,如果您沒有任何這些技巧,Microsoft 將為您未來有方案 !

JavaScript 自訂函式的 Excel 增益集

Excel 增益集是專業開發人員可以建立擴充 Excel,並在活頁簿中的資料互動的工具 (bit.ly/2AUOsZk)。已有數千個增益集和其所有執行 Excel 平台包括 Windows、 Mac、 Excel Online 和甚至 iOS。任何人熟悉的 Web 技術會找到增益集能輕鬆建置,,因為它們正在寫入就像網頁一樣:增益集執行 HTML、 JavaScript 和 CSS,和能夠呼叫外部 Web 伺服器。最棒的增益集不需要在不同的平台上執行的任何程式碼變更。(Excel 也支援其他類型的增益集,依照bit.ly/2qsPfLe,但它們無法執行跨平台,或是部署至存放區。) 圖 3顯示增益集的索引鍵項目。主要部分是 manifest.xml 檔案,其指定增益集和其他中繼資料的其餘部分的 Web 位置。其餘的程式碼,開發人員所部署,如同任何其他 Web 應用程式。

增益集的索引鍵的項目
圖 3 增益集的索引鍵項目

增益集可提供許多實用的方式之一來擴充 Excel (請參閱文件,網址bit.ly/2AV47rw)。它們可以加入 UI 項目,例如功能區按鈕、 內容功能表選項和 HTML 的工作窗格和對話方塊。例如能力加入和移除資料列,插入和編輯圖表,以及甚至將格式套用至資料格,他們可以與數千個應用程式開發介面,透過的活頁簿進行互動。而且現在,新的預覽版本的自訂的 JavaScript 函數,來擴充 Excel 公式。

自訂函式可讓開發人員將任何 JavaScript 函式加入至 Excel 的增益集使用 (bit.ly/2AYtNUW)。然後,使用者可以存取自訂函式,例如 Excel (例如平均值) 中的其他任何原生函式。讓我們探討 Contoso 解密 ISPRIME 函式,以查看它的撰寫方式 (,也可以檢查 primality 只有內建 Excel 函式的使用,但這是更為困難的人員要求計算)。:  

function isPrime(n) {
  var root = Math.sqrt(n);
  if (n < 2) return false;
  for (var divisor = 2; divisor <= root; divisor++){
    if(n % divisor == 0) return false;
  }
  return true;
}

函式只會檢查所有可能的除數,最多平方根來判斷是否為質數 — JavaScript 的幾行。所有的實際邏輯都已經完成。但是還有其他撰寫比只函式本身。有效的擴充點,自訂函式必須如同原生的外觀及操作。和原生函式有許多自訂資訊。查看圖 4與 Contoso Crypographers ISPRIME 函式,例如:除了函式本身的名稱,Excel 會顯示有用的描述,以釐清函式的目的。        

自訂函式和原生函式自動完成輸入時
圖 4 自訂函式和原生函式自動完成輸入時

您可以看到另一個範例中的圖 5。之後 CONTOSO。ISPRIME 選取時,Excel 會顯示參數的名稱 (在此情況下,n) 若要更輕鬆地選擇正確的輸入。

圖 5 Contoso ISPRIME 函式

Excel.Script.CustomFunctions["CONTOSO"]["ISPRIME"] = {
  call: isPrime,
  description: "Determines whether the input is prime",
  helpUrl: "https://example.com/help.html",
  result: {
    resultType: Excel.CustomFunctionValueType.boolean,
    resultDimensionality: Excel.CustomFunctionDimensionality.scalar,
  },
  parameters: [{
    name: "n",
    description: "the number to be evaluated",
    valueType: Excel.CustomFunctionValueType.number,
    valueDimensionality: Excel.CustomFunctionDimensionality.scalar,
  }],
  options: { batched: false, streaming: false }
};

同時這項資訊和大部分的多個所提供的開發人員 JavaScript 定義中的函式的中繼資料,如下所示圖 5

您可以看到,描述會指定為字串,因此是每個參數的名稱。我將不會討論的所有中繼資料,但您可以看到文件,如需詳細資訊。如果您熟悉增益集模型,您可能會想知道為什麼這項資訊提供在 JavaScript 中而不是硬式編碼以靜態方式某處,例如 manifest.xml 檔案中。原因在於彈性。在 Contoso 的情況下,密碼編譯函式所定義且已知事先。但有時候您可能想啟用不同的情況中不同功能的功能。

Contoso 解密喜愛其 ISPRIME 函式中,為了簡單起見,但其下一個目標會有點困難:他們想要建置來加密文字產生隨機數字的函式。Excel 的絕佳 RAND 函式,但問題,因為其值是虛擬亂數,可循序產生 RAND 不適合用來加密。相反地,random.org 所產生的數字都是要用於此用途安全 — 產生從 atmospheric 雜訊。當然,它是以硬編碼的隨機數字; 不太適合相反地,Contoso 必須設計的函式可以呼叫 random.org 透過 HTTP 要求擷取隨機數字。幸好自訂函式讓您輕鬆包含 Web 要求。以下是 Contoso 的非同步隨機函式外觀如下:

function getRandom(min, max) {
  return new OfficeExtension.Promise(function(setResult, setError){
    sendRandomOrgHTTP(min, max, function(result){
      if(result.number) setResult(number);
      else setError(result.error);
    });
  });
}

此函式與 ISPRIME 之間的主要差異是隨機是非同步: 而不是傳回值至 Excel 時,會立即傳回 JavaScript 承諾,再讓 XMLHttpRequest (函式中不可見,它處於 sendRandomOrgHTTP方法) 至 random.org 服務。然後,Web 服務有回應,一旦 Contoso 解析承諾 random.org 數目與要寫入至資料格。Web 資料帶入 Excel 是其中一個主要原因公司想要擴充的 Excel 函數,所以 Microsoft 必須要有要受歡迎的非同步函式。

所有的非同步函式的一般層面就是它們需要一定程度的時間,才能讓 Excel 會顯示在資料格中 #GETTING_DATA 訊息同時等候要解析的函式傳回其結果,(請參閱圖 6)。

等候要傳回的非同步函式
圖 6 等候要傳回的非同步函式

在此情況下,HTTP 要求可以迅速,在完成大約十分之一秒。但如有必要,函式可以進行許多呼叫,而且需要花費長於的評估。對於 JavaScript 函式自訂,解決在 JavaScript 中的值會使它會立即顯示在資料格中。圖 7顯示的相同隨機函式檢視,Excel 之後則會傳回值。

傳回的值之後的隨機函式檢視,Excel
圖 7 傳回的值之後的隨機函式檢視,Excel

當然,使用自訂函式的增益集可能會有許多其他功能,以及:Contoso 解密可能想要建立工作窗格與功能區索引標籤,以授與他們的客戶輕鬆存取至其自訂的函數。設定它們的行為。和使用方式的指引。可能是 JavaScript 應用程式開發介面無法甚至可以讓加密的資料與按鈕的整個工作表的客戶使用。無論他們決定,他們可以確信跨 Excel 平台程式碼變更不會執行整個增益集。

有兩種主要的方式來包含這些 JavaScript 自訂函式,根據觀眾的增益集部署。公用 Office 市集 (bit.ly/2A70L5o) 具有 Excel 的任何人使用,甚至是按鈕,瀏覽 Excel 功能區上的存放區。在存放區支援免費和付費增益集,並且需要提交,透過 Microsoft 的驗證。不過,Contoso 解密 Corp.將部署直接到小型企業客戶因此它們不需要按一下任何項目來安裝它。相反地,它會提供每個客戶與資訊清單檔案。IT 系統管理員可以選擇哪些使用者透過 O365 系統管理中心取得存取權 (請參閱中的介面圖 8)。這些使用者會取得自動安裝增益集。

部署至組織的自訂函式
圖 8 部署至組織的自訂函式

希望您已被自治組織所導致雄厚 Contoso 解密嘗試撰寫您自己的自訂函式 (使用指南及範例aka.ms/customfunctions)。接下來,探討的其他新方法來擴充 Excel 公式。

Azure 機器學習服務函數

Microsoft 已宣布的可延伸函式的第二個類型為 Azure 機器學習服務函數 (Azure ML 縮寫)。相較於 JavaScript 自訂函式,Azure ML 函式會針對其組織中使用的分析師建立 AI 開發人員 (通常是資料科學家和其他專家)。如此一來,不是需要建立增益集套件來部署 Azure ML 函式。

Azure ML 函式本身為基礎的計算或預測值的機器學習 (ML) 模型為基礎的服務。建置模型之後,建立者可以啟用它,他們選擇的任何人都。然後,每次有人想要執行函式,只要在資料格中,輸入就像任何其他的 Excel 函數。函式呼叫公司的 Azure 訂用帳戶上的即時 Web 服務,並以非同步方式傳回結果。

比方說,在零售商的行銷分析師可能想要預測不同的地理位置中的新產品的需求。分析師有該產品和在 Excel 中的目標市場上的某些資料。目標是要取得簡單的函式,可讓分析師預測每個市場中的需求,而不離開 Excel。圖 9顯示範例試算表,這種類型的資料。

範例產品並搭配 Azure ML 函式,就會分析行銷資料
圖 9 範例產品並搭配 Azure ML 函式,就會分析行銷資料

該組織 AI 開發人員使用 Azure ML 服務 (bit.ly/2nwa0WP) 來建立模型:她一開始會準備定型資料,通常從外部資料庫,來建立 ML 實驗根據歷程記錄適用於新的產品銷售。Azure 機器學習 Workbench 是一種工具,來簡化資料準備,並可讓撰寫以定型和評估模型的 Python 程式碼,資料科學家。圖 10是執行儀表板檢視,Azure ML 工作臺,統計資料顯示在實驗中的。

Azure 機器學習 Workbench
圖 10 Azure 機器學習 Workbench

一旦準備好模型之後,它會部署為 Web 服務,組織的 Azure 訂用帳戶中,一組正確的使用者可以存取它的權限。而不被定義中繼資料會在本機執行的 JavaScript 中,中繼資料定義的 Swagger (RESTful API) 格式,便會自動建立及部署的服務。只需要時在 Excel 中的函式是在 Excel 中的分析師有權存取該服務。圖 11顯示已部署的函式中出現的資料分析師在 Excel 中。在分析師就可以正常執行的函式。就像非同步 JavaScript 自訂函式,資料格顯示 #GETTING_DATA 訊息服務會計算結果。

在 Excel 中顯示已部署的函式
圖 11 顯示在 Excel 中已部署的函式

未來的 [在 Excel 中的可延伸函式

希望您將會嘗試在 Excel 中的可延伸函式的技術預覽 — JavaScript 自訂函式和增益集如果您是軟體或服務廠商和 Azure ML 函式如果你 AI 開發人員或資料科學家。Microsoft 正在接聽仔細所有意見反應在預覽期間 (張貼想法至 UserVoice 頁面在bit.ly/2jRJQsu),因此,除了取得開始,您也將有機會圖形最終發行的產品.有許多傳給這兩個這些函式型別,以及一些全新,敬請張貼未來宣告的多個增強功能 !


Michael Saunders是 Office 的小組,程式管理員,他建置 Excel 功能用於開發人員。他原本來自多倫多 (加拿大),而且他研究管理與資料科學工程大學的賓州和 Wharton。在閒暇,Saunders sings 與西雅圖 Esoterics,並開發增益集。

非常感謝下列 Microsoft 技術專家檢閱這篇文章:Yina 論點,Ashvini Sharma Sandhya Vankamamidi
Yina 論點是 Microsoft 與 Microsoft Graph 負責人主體的程式經理。她正在 Office 及 Microsoft Api 從舊版和脫離技術新、 統一的 API 世界。
Ashvini Sharma 是首席專案經理負責 Excel 的分析願景與藍圖,Excel 小組。
Sandhya Vankamamidi 是 Sr.資訊和內容的耗用量體驗團隊程式管理員。Sandhya 負責設計和傳遞不同的 Bing 應用程式系列沈浸式體驗。


MSDN Magazine 論壇中的這篇文章的討論