简介:
使用SAP Lumira 1.17,您现在可以连接到标准数据源选项之外的自定义数据源。您现在有了一个"外部数据源"选项。让我向您展示如何使用相同的技术在SAP Lumira中可视化MongoDB数据。
我们将要实现的目标:
为了演示MongoDB和saplumira的连接,我选择了Lumira中流行博客中的单词可视化标记云,数据来自MongoDB。在社交数据方面,MongoDB是最明显的选择,使用Mongo的MapReduce功能可以很容易地对这些数据进行聚合。
选择的技术:
为了展示lumira MongoDB的连接性,我选择了以下技术。1) SAPUI5 2)JavaFx 3)Mongo Java驱动程序4)MongoDB.
背景:
要开始使用,需要对"外部数据源扩展"做一点介绍。Lumira提供了一组标准的数据源选项,如a)csv b)excel c)剪贴板d)Hana(在线)e)Hana(离线)e)大量使用手绘sql的sql数据源f)BW g)Universe
如果您的数据源不属于上述类别,则外部数据源扩展可能适合您。您需要做的是构建一个可执行文件,并将其放在lumira安装路径中的"daextensions"文件夹下(类似于"C:\Program Files\SAP lumira\Desktop\daextensions\")。您的可执行文件应该侦听通过stdin传递的命令,并通过stdout流式输出数据。lumira目前的命令是1)编辑2)预览3)刷新,这只是lumira的数据可用性阶段。
如果您想获得更深入的信息,请阅读lumira的"外部数据源扩展"文档。创建新数据集时可能找不到"外部数据源"选项,除非在中创建条目萨普卢米拉..
-Dactivate.externaldatasource.ds=真 -Dhilo.externalds.folder=C:\Program Files\SAP Lumira\Desktop\daextensions
本文的源代码也已发布,这将有助于您了解更多信息并获得更多帮助脏的也是。
为了构建一个可执行文件,你需要生成runnable jar并将其作为launchforj的输入。
MH370航班:
来自互联网的3个博客的数据被拉入并插入MongoDB。为了更简单,我准备了JSON格式的数据给你。您应该能够在附带的源代码中的"WebpageDB"文件夹中找到它,云指,为了将它插入MongoDB中,大数据库,需要执行以下命令…
mongoimport–db MongoWebpageDB–collection WebpageDB–file网页.json
使用此命令,您应该创建一个名为"MongoWebpageDB"的数据库,并保存数据从网页.json将被放入网页集合。顺便说一句,我删除了"stopwords",这样常用的词就不存在了。
数据预览和Mongo连接界面:
UI5网络视图.java主要功能是入口点。从lumira传递的参数/命令将首先命中"Main"方法。然后解析参数以检查lumira请求的内容,parsearguments函数帮助我们这样做。一旦模式被识别为preview,javafx webview组件被初始化,云服务器,将基于SAPUI5的html文件作为URL传递。应该能够在webcontent文件夹中找到所需的所有SAPUI5资源。
html文件包含输入元素,以便用户可以输入MongoDB所需的特定信息,以便连接到数据库
如果您必须通过一个向导(多个屏幕)来选择数据源,那么您可以选择在SAPUI5中进行选择。但是,技术可以是您选择的任何东西。
我在这里使用SAPUI5将mongodb名称、集合名称、连接端口作为UI元素。它们对应于我们之前启动的mongoimport命令。在UI中按"fetchdata"时,这个元数据流式传输到lumira。您可以查看streamhelper类中的StreamDSInfo方法,以了解metdata是如何传递给lumira的。传递给lumira的metdata将类似于..
beginDSInfo
csv_separator;,;true
csv_date_format;M/d/yyyy;true
csv_number_grouping;,;true
csv_number_decimal;;true
csv_first row_has_column name;true;true
lumongo_host;localhost;true
lumongo_port;27017;true
lumongo_user;abc;true
lumongo_pass[C@14b746c8;true
lumongo\u collection;testcollection;true
lumongo\u dbname;test;true
endDSInfo
连接到MongoDB和MapReduce:
使用Java MongoDB驱动程序实现到MongoDB的连接。来自数据库的单词被映射,并使用wc\u map和wc\u reduce javascript文件执行计数聚合。mapreduce命令针对网页集合激发。mapreduce命令的结果集是循环的,所有结果都被写入标准输出(系统输出打印) . 请参阅来自Qu的mapreduce代码片段eryAndStreamToLumira.java文件.
public void mapReduce(){
系统输出打印("beginData");
try{
//访问输入集合
DBCollection=m_数据库getCollection(mïCollection);
//read Map file
字符串Map=readFile("wc_地图.js");
//read Reduce file
字符串Reduce=readFile("wc_减少.js");
//Prepare mapreduce命令在集合上激发,将map和reduce javascript文件作为输入
MapReduceCommand cmd=new MapReduceCommand(collection,map,
reduce,null,MapReduceCommand.OutputType.INLINE,空);
//启动mapreduce命令
MapReduceOutput=集合.mapReduce(cmd);
//csv头流到lumira
系统输出打印("word,count");
//Loop遍历结果集并开始流式传输到lumira inline
for(dbo:输出结果()){
DBObject idOBj=(BasicDBObject)o.get("\u id");
字符串字=(字符串)我知道了("word");
DBObject obj=(BasicDBObject)o.get("value");
Double count=(Double)目标获取("计数");
系统输出打印(字+","
+整数.toString(count.int值());
}
}catch(异常e){
//向lumira
发送错误信息系统错误打印(如toString());
}
//通知lumira数据流已结束
系统输出打印("endData");
}
CSV格式