0

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

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

有人能帮我吗?

此致

4

2 回答 2

0

我找到了解决方案:演员阵容是正确的方向,但不是詹姆斯伍德所说的方式。

SQL-使用 Cast 函数为您提供了很多帮助,问题是您需要强制转换(转换为二进制然后转换为字符):

SQL SELECT CAST( CAST( "BASE64ENCODEDFIELDINEED" as XML ).value('.','varbinary(max)') AS varchar(max) ) as decodedField

我项目的另一部分是将 decodedField 解释为 XML 文件。Qlik Sense 中有一个名为 From_Field 的函数(当然还有 Load),使用 Qlik 中的 xmlsimple 可以解析结果:

LOAD * From_Field(<TABLEYOUNEEDTOLOADFROM>, decodedField)(xmlsimple, table is [<TABLEINYOURXMLFILE>]);

我希望这对遇到完全相同问题的人有所帮助,因为我认为这里的 Qlik Sense 开发人员没有您想象的那么多。

最好的问候

于 2016-09-14T16:25:26.800 回答
0

您只需要解码 Base64 字符串。

在 Google 中的快速 搜索建议TSQL 它看起来像这样:

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

虽然QilkSense显然为此内置了函数,例如utility.custom_decryptbyte.decode(base64_encoded_private_key)

于 2016-09-06T20:24:36.460 回答