如何通过IBM i上的开源技术,云服务和您的数据轻松快速地创建业务价值? 通过使用开放源码技术,Node-RED和Node.js结合IBM®Db2®for i进行原型制作,使您的想法变为现实!
在本文中,我们实现了(几乎没有代码行,并且在几分钟之内)了一个简单的社交媒体仪表板,其中包括情感分析,自然语言处理(NLP)和业务数据充实。 停止说话,干脆就做!
社交倾听是监视在线对话和在线提及您的品牌的过程,对于所有组织,营销团队,客户支持团队,业务发展和竞争调查都很有价值,尤其是与业务数据结合使用时。
通过此过程,您可以在许多用例中获得实时见解。 下面列出了其中一些。
在社交媒体上如何提及您的品牌 如何根据展示次数和参与度等指标调整营销活动 如何获得有关客户细分的更多信息 如何实时应对客户投诉这里的目标是突出IBM i(与Db2 for i集成)上可用的开源技术的功能,并说明如何轻松地开始使用数字转换,认知计算,API和混合云。
Node-RED是IBM Emerging Technology带来的来自物联网(IoT)的基于开源流的编码工具,提出了来自node-red.org社区的大量节点。 除了物联网,它还是构建基于微服务的架构解决方案,原型设计,创建和使用没有代码行的云或本地API的理想选择。
需要有关IBM i上Node-RED以及如何开始的更多信息?
请参阅IBM developerWorks文章, 在IBM i上运行Node-RED:安装和第一流程 。
本文介绍了如何对特定主题标签实施实时情绪分析并将此信息写入Db2数据库中,涉及一个Twitter节点,可选的IBM Watson™Language Translation节点,一个情绪分析节点和一个Db2 for i节点,以丰富信息业务数据。 它还描述了如何可视化存储在Db2 for i中的数据,以及如何使用仪表板节点和Db2 for i节点创建一个简单的社交媒体仪表板Web应用程序。
可选的Watson Language Translation节点将在情感分析之前识别语言并即时翻译英语推文。
要编写此社交媒体仪表板,您需要满足以下最低要求:
5733OPS选项10,即Node.js v6,已安装Node-RED和Web浏览器。 请参阅“ 在IBM i上运行Node-RED:安装和第一流程 ”一文,以查看所有详细的先决条件。 一个连接到IBM i 7.2和更低版本系统的Db2 for i SQL编辑器。 您可以使用IBM i Access Client解决方案和嵌入式SQL编辑器。 一个Twitter帐户,以及从IBM i到Internet的连接。 (可选)您可以使用本文提供的测试数据来模拟推文。 可选:用于使用IBM Watson和Watson Language Translation节点的IBM Cloud(以前的IBMBluemix®)帐户。 您可以注册一个免费试用或免费帐户,或者如果已经拥有一个帐户,则登录到IBM Cloud 。如果您想了解有关Node-RED以及如何开始使用IBM i的更多信息,请参考本文 。
例如,启动Node-RED并使用缺省URL连接到它:http:// <IBMI-IP>:1880,其中<IBM-IP>是IBM i系统的IP地址。
将身份验证凭据设置为您的Node-RED并从HTTP切换到HTTPS是一个好习惯。
让我们考虑一个示例,在该示例中,我们仅存储传入推文中包含的信息的子集,但是很高兴地注意到,Twitter API在每个推文的JSON对象中返回了更多的属性,如Twitter Developer Platform网站上所述。
还要注意,Node-RED Twitter节点以JSON返回所有这些信息,为简单起见,我们将解析然后将这些数据存储在标准Db2表中。 但是,最好将Db2用于i,以便将传入的推文直接存储在JSON的CLOB列中。
然后,您可以使用Db2 for i上可用的强大JSON_TABLE函数来检索有关推文的信息。
创建一个简单的Tweets表来存储我们的Twitter活动。 为此,请打开一个SQL编辑器(例如IBM i Access Client Solutions),然后运行以下SQL语句来创建情感库, Tweets表和该表的简单触发器。 CREATE collection SENTIMENT; CREATE OR REPLACE TABLE SENTIMENT.TWEETS ( id SMALLINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 CYCLE), TWEET VARCHAR(5000), SCREEN_NAME VARCHAR(255), LOCATION VARCHAR(255), SENTIMENT_SCORE INT, SENTIMENT_GROUP VARCHAR(255), TIMESTP TIMESTAMP, TIMESTAMP_MS VARCHAR(255), primary key (id) ); CREATE OR REPLACE TRIGGER SENTIMENT.Tweets_sentiment BEFORE INSERT OR UPDATE ON SENTIMENT.Tweets REFERENCING NEW AS n OLD AS o FOR EACH ROW MODE Db2ROW BEGIN SET n.SENTIMENT_GROUP = CASE WHEN n.SENTIMENT_SCORE > 0 THEN 'positive' WHEN n.SENTIMENT_SCORE = 0 THEN 'neutral' WHEN n.SENTIMENT_SCORE < 0 THEN 'negative' END; END;如果要使用系统上的现有库,只需复制上面的CREATE TABLE和CREATE TRIGGER部分,然后开始记录Tweets表。
Tweets_sentiment触发器将仅根据SENTIMENT_SCORE值使用SENTIMENT_GROUP (正,负,中性)更新插入或更新的记录。
让我们用示例数据(带有12条公共tweet)填充该表。 在本文的后面,我们的Twitter节点将为我们填充Tweets表。 INSERT INTO SENTIMENT.TWEETS(TWEET,SCREEN_NAME,LOCATION,SENTIMENT_SCORE,TIMESTP,TIMESTAMP_MS) VALUES('What an impressive panel at our ask the experts during our conference! #ibmi #cshk2017 https://t.co/StgAsBPFXv','MBuurRasmussen','nolocation',3,CURRENT TIMESTAMP,1508850681582); INSERT INTO SENTIMENT.TWEETS(TWEET,SCREEN_NAME,LOCATION,SENTIMENT_SCORE,TIMESTP,TIMESTAMP_MS) VALUES('Thanks, @chris_lalevee for this bodacious article about Node-RED on #IBMi! #IBMiOSS https://t.co/yursu7d2GJ','IBMJesseG','Rochester, MI',2,CURRENT TIMESTAMP,1508850903650); INSERT INTO SENTIMENT.TWEETS (TWEET,SCREEN_NAME,LOCATION,SENTIMENT_SCORE,TIMESTP,TIMESTAMP_MS) VALUES ('RT @IBMi: Thank you, for teaching us all a valuable lesson, https://t.co/idje2J3','IBMiFan','United States of America',6,CURRENT TIMESTAMP, 1508851116842); INSERT INTO SENTIMENT.TWEETS (TWEET,SCREEN_NAME,LOCATION,SENTIMENT_SCORE,TIMESTP,TIMESTAMP_MS) VALUES('RT #IBMi Opensource tools https://t.co/s8sjeu','ClubCEO','Texas, USA',0, CURRENT TIMESTAMP,1508851142085); INSERT INTO SENTIMENT.TWEETS(TWEET,SCREEN_NAME,LOCATION,SENTIMENT_SCORE,TIMESTP,TIMESTAMP_MS) VALUES('Excellent article about #ibmi & Db2 here https://t.co/s8sjeu!!','MariaMe6452','Dublin, Ireland',3,CURRENT TIMESTAMP, 1508851159475); INSERT INTO SENTIMENT.TWEETS(TWEET,SCREEN_NAME,LOCATION,SENTIMENT_SCORE,TIMESTP,TIMESTAMP_MS) VALUES('Meet the next generation of #IBMi and #IBMAIX with these #IBMFreshFaces featured in @IBMPowerMag: https://t.co/PbpnGpypnE','IBMPowerSystems','Sugarland, TX',3,CURRENT TIMESTAMP, 1508851165417); INSERT INTO SENTIMENT.TWEETS(TWEET,SCREEN_NAME,LOCATION,SENTIMENT_SCORE,TIMESTP,TIMESTAMP_MS) VALUES('RT @ibm: Our Enterprise #IBMi Modernization White Paper helps you understand how #Nodejs can attract new development talent! ','3E8TestBot','Lost in Space',5,CURRENT TIMESTAMP, 1508851192995); INSERT INTO SENTIMENT.TWEETS(TWEET,SCREEN_NAME,LOCATION,SENTIMENT_SCORE,TIMESTP,TIMESTAMP_MS) VALUES('RT @kadler_ibm: Good news, everyone! Come see me at @zendcon and we can talk all things #IBMiOSS and #PHP on #IBMi. I might even ha ','phpc','Freenode IRC',5,CURRENT TIMESTAMP, 1508851202542); INSERT INTO SENTIMENT.TWEETS(TWEET,SCREEN_NAME,LOCATION,SENTIMENT_SCORE,TIMESTP,TIMESTAMP_MS) VALUES('RT @HelpSystemsMN: What are #IBMi special authorities & who should have them? Security expert @DaljitSingh explains > ','J_Buck51','Kenosha, WI',0,CURRENT TIMESTAMP,1508851319619); INSERT INTO SENTIMENT.TWEETS(TWEET,SCREEN_NAME,LOCATION,SENTIMENT_SCORE,TIMESTP,TIMESTAMP_MS) VALUES('RT @chris_lalevee: Install @NodeRED on #IBMi (https://t.co/DHlifEAEuo) and test Db2 for i Node !! https://t.co/KKu5Ji5ihW','MarolleauBenoit','Montpellier, France',0, CURRENT TIMESTAMP,1508851419619); INSERT INTO SENTIMENT.TWEETS(TWEET,SCREEN_NAME,LOCATION,SENTIMENT_SCORE,TIMESTP,TIMESTAMP_MS) VALUES('Looking forward to meeting #IBMi customers next week at the Jack Henry Conference in Nashville. Stop by booth 208 https://t.co/gZs4MXNsO8','petem59','Connecticut, USA',0,CURRENT TIMESTAMP,1508851544257); INSERT INTO SENTIMENT.TWEETS(TWEET,SCREEN_NAME,LOCATION,SENTIMENT_SCORE,TIMESTP,TIMESTAMP_MS) VALUES('RT #IBMi #db2 #XML Des soucis de gestion dates/heures avec XMLTABLE ? Allez plus loin avec les fonctions XQuery/XPath ','PhBourgeoisIBM','Paris, France',0,CURRENT TIMESTAMP,1508851704005);首先,我们需要在Node-RED面板中安装Db2 for i节点。 您可以按照Db2 for i节点主页上的说明使用命令行,或者使用如下所示的Node-RED图形界面来完成此操作。
在Node-RED中,单击右上角的按钮,然后单击管理调色板 。让我们用一个简单的查询来测试节点。 将Db2 for i节点拖到新流程,如下图所示。 然后,将SQL Query添加为注入节点,并将msg.payload添加为调试节点。
在“ 调试”面板中查看SQL查询的结果(行的JSON数组)。
在此步骤中,如果看不到结果,并且确定表存在并且不为空,请检查所使用的用户概要文件是否具有读取访问权限(具有适当SQL授予或IBM i权限)。
您已经使用Db2 for i编写了您的第一个Node-RED流!
这样做的目的是使您的IBM i能够在将推特插入到Db2 for i数据库中之前侦听推特并动态分析情绪。
为此,您只需要在Node-RED流编辑器中手动拖动并配置四个节点即可。
要快速执行此操作,请将现有流导入到当前的Node-RED流中:
单击右上角的菜单,然后单击导入 -> 剪贴板 。您应该得到以下结果。
例如,我们可以使用IBM Watson服务丰富传入的推文,以便在执行情感分析之前将传入的推文即时转换为英语。 这部分是可选的,因此您可以直接转到仪表板创建部分。
从IBM Cloud目录实例化Watson Language Translator服务,并获取生成的凭证(用户名,密码和端点)。 在Node-RED中配置关联节点时,将需要它们。该子流首先标识输入消息中使用的语言,然后使用IBM Watson服务和API进行翻译(如果与英语不同)。
配置两个Watson节点(通过指定用户名,密码和端点(如果需要)),每个节点都指向您刚在IBM Cloud上实例化的同一IBM Watson服务,但是每个节点都使用不同的API函数(语言标识和语言翻译) 。 如下图所示,使用测试流来测试子流,例如,使用手动注入节点。感谢IBM Watson,您的IBM i现在可以将法语,西班牙语和许多其他语言翻译成英语!
通过图形化方式将其集成到您现有的Twitter流中,如下图所示。在本节中,我们无需编写代码即可创建社交媒体仪表板,将您在Db2 for i上的业务数据与来自IBM Cloud和IoT的数据混合在一起。
安装仪表板节点。存在许多用于生成UI和图形的Node-RED。 node-red-dashboard是我的最爱之一。 在Node-RED编辑器的右上菜单中,单击Manage Palette ,然后搜索node-red-dashboard 。 然后,单击安装并重新启动Node-RED。
您刚刚创建了一个简单的社交媒体仪表板,其中一些图形填充了Db2 for i数据库中的数据!
“快速失败,更快成功”
IBM i本身就是一个私有云,当与开源技术以及Db2 for i结合使用时,您可以快速执行出色的工作并为您的业务带来创新。
在本文中,我们演示了IBM i上的Node-RED和Node.js可以成为API集成和原型开发的真正加速器,使您可以通过简单的拖放操作就可以玩节点并为整个世界编程! 我们还概述了IBM Watson及其认知计算API的功能,以增强我们在IBM i上的所有解决方案。
翻译自: https://www.ibm.com/developerworks/ibmi/library/i-social-media-dashboard/index.html