翻譯|使用教程|編輯:況魚杰|2020-11-02 10:42:21.127|閱讀 251 次
概述:本文將會介紹Enigma.js,它是一個可幫助您與Qlik QIX Engine通信的庫。其中有一項很酷的功能是,它允許您編寫自己的mixins來擴展或覆蓋您一直使用的Qlik對象上的方法。這篇文章將教你mixin的基礎知識,并向你展示如何實現(xiàn)自己的。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
真正的現(xiàn)代分析時代始于經典的QlikView分析解決方案的發(fā)布,以及基于它的改變游戲規(guī)則的關聯(lián)引擎。它徹底改變了組織使用直觀可視化發(fā)現(xiàn)使用數(shù)據(jù)的方式,從而使商業(yè)智能比以往任何時候都多。而且,我們將繼續(xù)借助下一代分析平臺Qlik Sense引領這一潮流。借助關聯(lián)引擎,強大的增強智能和受管的多云架構,它支持企業(yè)任何規(guī)模的分析場景。
本文將會介紹Enigma.js,它是一個可幫助您與Qlik QIX Engine通信的庫。其中有一項很酷的功能是,它允許您編寫自己的mixins來擴展或覆蓋您一直使用的Qlik對象上的方法。這篇文章將教你mixin的基礎知識,并向你展示如何實現(xiàn)自己的。
如果您想查看最終產品,這是完成的存儲庫://github.com/coolinmc6/enigma-mixins-tutorial。如果您想繼續(xù),請克隆倉庫并檢出“開始”分支`git checkout -b start`以便從頭開始。
希望您熟悉典型的Enigma配置(//community.qlik.com/t5/Qlik-Design-Blog/Qlik-Engine-and-Picasso-js/ba-p/1706241),因為這是必須在mixin所在的位置包括在內。對于第一個mixin和我們將要編寫的其他mixin,需要創(chuàng)建一個單獨的mixin文件,以保持代碼干凈。然后主要在該mixin文件和?index.js`中工作。
首先,在您的`/ config`目錄中創(chuàng)建一個單獨的文件,名為`mixins.js`。復制下面的代碼,然后開始:
// mixins.js const docMixin = { types: ['Doc'], init(args) {}, extend: { myMixin() { console.log('myMixin was called - this is all it does'); }, } } export { docMixin, };
將您的mixin添加到配置文件?app.js`中:
// app.js import { docMixin } from './mixins'; // CODE export default enigma.create({ schema, url, mixins: [docMixin] // add docMixin }).open().then(global => global.openDoc(config.appId));
現(xiàn)在,在index.js文件中,只需執(zhí)行以下操作即可調用mixin:?app.myMixin()`。 如果您檢查控制臺,則會看到我們輸入的console.log消息; 您剛完成第一次Mixin。
注意:Mixin對象應具有類型屬性,以指示您正在修改的Qlik對象(例如Doc,GenericObject,GenericBookmark等)。對于第一個Mixin,將修改Doc類。接下來是?init(args)`方法,該方法在初始化mixin時運行一些代碼。最后,有兩個屬性:“ extend”和“ override”。 顧名思義,“ extend”將向Qlik Object添加方法,而“ override”將覆蓋現(xiàn)有的Qlik Object方法。本教程將主要側重于擴展Qlik Objects的功能。
現(xiàn)在,已經用擴展Doc對象的單個方法創(chuàng)建了第一個mixin,然后逐步提高并編寫一種獲取超立方體數(shù)據(jù)的方法。這種方法的重點是為我們完成Qlik QIX Engine的所有工作。此方法位于Doc類上,因此在我們的代碼中,我們可以像下面這樣在“ myMixin()”代碼下面編寫該方法:
// mixins.js const docMixin = { types: ['Doc'], init(args) {}, extend: { myMixin() { console.log('myMixin was called - this is all it does'); }, mGetData({ object }) { return new Promise((res) => { this.createSessionObject(object).then((obj) => { console.log(obj) obj.getLayout().then((layout) => { const data = layout.qHyperCube.qDataPages; res(data); }) }) }) }, } } export { docMixin, };
在index.js文件中,我們將調用該方法并提供一個超立方體。復制以下超多維數(shù)據(jù)集和代碼以調用該方法:
// index.js const hypercube = { qInfo: { qId: 'Sales by Year', qType: 'data'}, qHyperCubeDef: { qDimensions: [ // { qDef: { qFieldDefs: ['[Country]']} }, { qDef: { qFieldDefs: ['[Product Group Desc]']} } ], qMeasures: [ { qDef: { qDef: 'SUM([Sales Margin Amount])'}, }, ], qInitialDataFetch: [{ qTop: 0, qLeft: 0, qWidth: 10, qHeight: 1000, }], qInterColumnSortOrder: [], qSuppressZero: true, qSuppressMissing: true, } } // CODE (async () => { const app = await appPromise; app.myMixin() const data = await app.mGetData({ object: hypercube }) console.log(data) })()
在控制臺中,您會發(fā)現(xiàn)那里還有兩個日志。第一個是剛剛創(chuàng)建的會話對象(并且您可能太熟悉了)。 第二個是在JavaScript數(shù)組中請求的數(shù)據(jù)。它仍然處于Qlik格式中,如果您只想查看數(shù)據(jù),可能需要進行更多清理,但是請注意,現(xiàn)在可以輕松地為您可能編寫的任何超立方體請求數(shù)據(jù)。現(xiàn)在可以避免不得不一遍又一遍地編寫所有代碼的步驟,而只需使用我們新的`mGetData()`方法。
Qlik的愿景是一個數(shù)據(jù)素養(yǎng)的世界,每個人都可以使用數(shù)據(jù)來改善決策并解決他們最具挑戰(zhàn)性的問題。只有Qlik提供端到端的實時數(shù)據(jù)集成和分析解決方案,以幫助組織訪問所有數(shù)據(jù)并將其轉化為價值。Qlik幫助企業(yè)領導數(shù)據(jù),以更深入地了解客戶行為,重塑業(yè)務流程,發(fā)現(xiàn)新的收入流以及平衡風險和回報。
想要了解更多有關Qlik的資訊,歡迎咨詢在線客服>>
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:Qlik