如何創(chuàng)建您的第一個(gè)Enigma.js Mixins
真正的現(xiàn)代分析時(shí)代始于經(jīng)典的QlikView分析解決方案的發(fā)布,以及基于它的改變游戲規(guī)則的關(guān)聯(lián)引擎。它徹底改變了組織使用直觀可視化發(fā)現(xiàn)使用數(shù)據(jù)的方式,從而使商業(yè)智能比以往任何時(shí)候都多。而且,我們將繼續(xù)借助下一代分析平臺(tái)Qlik Sense引領(lǐng)這一潮流。借助關(guān)聯(lián)引擎,強(qiáng)大的增強(qiáng)智能和受管的多云架構(gòu),它支持企業(yè)任何規(guī)模的分析場(chǎng)景。
本文將會(huì)介紹Enigma.js,它是一個(gè)可幫助您與Qlik QIX Engine通信的庫。其中有一項(xiàng)很酷的功能是,它允許您編寫自己的mixins來擴(kuò)展或覆蓋您一直使用的Qlik對(duì)象上的方法。這篇文章將教你mixin的基礎(chǔ)知識(shí),并向你展示如何實(shí)現(xiàn)自己的。
您的第一個(gè)Mixin
如果您想查看最終產(chǎn)品,這是完成的存儲(chǔ)庫:https://github.com/coolinmc6/enigma-mixins-tutorial。如果您想繼續(xù),請(qǐng)克隆倉庫并檢出“開始”分支`git checkout -b start`以便從頭開始。
希望您熟悉典型的Enigma配置(https://community.qlik.com/t5/Qlik-Design-Blog/Qlik-Engine-and-Picasso-js/ba-p/1706241),因?yàn)檫@是必須在mixin所在的位置包括在內(nèi)。對(duì)于第一個(gè)mixin和我們將要編寫的其他mixin,需要?jiǎng)?chuàng)建一個(gè)單獨(dú)的mixin文件,以保持代碼干凈。然后主要在該mixin文件和?index.js`中工作。
首先,在您的`/ config`目錄中創(chuàng)建一個(gè)單獨(dú)的文件,名為`mixins.js`。復(fù)制下面的代碼,然后開始:
// 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í)行以下操作即可調(diào)用mixin:?app.myMixin()`。 如果您檢查控制臺(tái),則會(huì)看到我們輸入的console.log消息; 您剛完成第一次Mixin。
注意:Mixin對(duì)象應(yīng)具有類型屬性,以指示您正在修改的Qlik對(duì)象(例如Doc,GenericObject,GenericBookmark等)。對(duì)于第一個(gè)Mixin,將修改Doc類。接下來是?init(args)`方法,該方法在初始化mixin時(shí)運(yùn)行一些代碼。最后,有兩個(gè)屬性:“ extend”和“ override”。 顧名思義,“ extend”將向Qlik Object添加方法,而“ override”將覆蓋現(xiàn)有的Qlik Object方法。本教程將主要側(cè)重于擴(kuò)展Qlik Objects的功能。
在Mixins中使用Qlik對(duì)象
現(xiàn)在,已經(jīng)用擴(kuò)展Doc對(duì)象的單個(gè)方法創(chuàng)建了第一個(gè)mixin,然后逐步提高并編寫一種獲取超立方體數(shù)據(jù)的方法。這種方法的重點(diǎn)是為我們完成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文件中,我們將調(diào)用該方法并提供一個(gè)超立方體。復(fù)制以下超多維數(shù)據(jù)集和代碼以調(diào)用該方法:
// 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) })()
在控制臺(tái)中,您會(huì)發(fā)現(xiàn)那里還有兩個(gè)日志。第一個(gè)是剛剛創(chuàng)建的會(huì)話對(duì)象(并且您可能太熟悉了)。 第二個(gè)是在JavaScript數(shù)組中請(qǐng)求的數(shù)據(jù)。它仍然處于Qlik格式中,如果您只想查看數(shù)據(jù),可能需要進(jìn)行更多清理,但是請(qǐng)注意,現(xiàn)在可以輕松地為您可能編寫的任何超立方體請(qǐng)求數(shù)據(jù)?,F(xiàn)在可以避免不得不一遍又一遍地編寫所有代碼的步驟,而只需使用我們新的`mGetData()`方法。
關(guān)于Qlik
Qlik的愿景是一個(gè)數(shù)據(jù)素養(yǎng)的世界,每個(gè)人都可以使用數(shù)據(jù)來改善決策并解決他們最具挑戰(zhàn)性的問題。只有Qlik提供端到端的實(shí)時(shí)數(shù)據(jù)集成和分析解決方案,以幫助組織訪問所有數(shù)據(jù)并將其轉(zhuǎn)化為價(jià)值。Qlik幫助企業(yè)領(lǐng)導(dǎo)數(shù)據(jù),以更深入地了解客戶行為,重塑業(yè)務(wù)流程,發(fā)現(xiàn)新的收入流以及平衡風(fēng)險(xiǎn)和回報(bào)。
想要了解更多有關(guān)Qlik的資訊,歡迎咨詢在線客服>>