加载base64编码字段

时间:2016-09-06 19:37:26

标签: load base64 blob crm qliksense

我正在从Microsoft CRM读取数据库。这很好。我需要从数据库(annotationbase)中读取notes字段。就像在这个截图中一样:

Notes MS CRM

我的代码用于加载我需要的信息:

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(内部部署)。

有人可以帮助我吗?

祝你好运

2 个答案:

答案 0 :(得分:0)

您只需要解码Base64字符串。

Google quick TSQL中的search suggests,它看起来像这样:

cast(” as xml).value(‘xs:base64Binary(sql:variable("@source"))’, ‘varchar(max)’)

虽然显然QilkSense内置了utility.custom_decryptbyte.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的开发人员并不像你想象的那么多。

最好的问候