我正在从Microsoft CRM读取数据库。这很好。我需要从数据库(annotationbase)中读取notes字段。就像在这个截图中一样:
我的代码用于加载我需要的信息:
LIB CONNECT TO 'CRM';
LOAD someuninterestingfield1,
someuninterestingfield2,
someuninterestingfield3,
someuninterestingfield4,
someuninterestingfield5,
someuninterestingfield6,
BASE64ENCODEDFIELDINEED;
SQL SELECT someuninterestingfield1,
someuninterestingfield2,
someuninterestingfield3,
someuninterestingfield4,
someuninterestingfield5,
someuninterestingfield6,
BASE64ENCODEDFIELDINEED
FROM "CRM_DATABASE".usr.AnnotationBase;
BASE64ENCODEDFIELDINEED有一个base64编码的xml文件,我需要进行分析。 我不知道(在Qlik Sense加载时或加载后我无法找到解码数据的任何内容)如何解码内容以最终接收我的xml数据。 我正在使用Qlik Sense 3.0和MS CRM 2015(内部部署)。
有人可以帮助我吗?
祝你好运
答案 0 :(得分:0)
您只需要解码Base64字符串。
Google quick TSQL中的search suggests,它看起来像这样:
cast(” as xml).value(‘xs:base64Binary(sql:variable("@source"))’, ‘varchar(max)’)
虽然显然QilkSense内置了utility.custom_decrypt
或byte.decode(base64_encoded_private_key)
等功能。
答案 1 :(得分:0)
我找到了解决方案: 演员是正确的方向,但不是詹姆斯伍德所说的。
SQL-使用Cast函数帮助你很多,问题是你需要强制转换(转换为二进制,然后转换为char):
SQL SELECT CAST( CAST( "BASE64ENCODEDFIELDINEED" as XML ).value('.','varbinary(max)') AS varchar(max) ) as decodedField
我的项目的另一部分是将decodeField解释为XML文件。 Qlik Sense中有一个函数叫做From_Field(当然是+ Load),使用Qlik的xmlsimple解析结果:
LOAD * From_Field(<TABLEYOUNEEDTOLOADFROM>, decodedField)(xmlsimple, table is [<TABLEINYOURXMLFILE>]);
我希望这对有完全相同问题的人有所帮助,因为我认为Qlik Sense的开发人员并不像你想象的那么多。
最好的问候