我正在尝试在Mark逻辑中为JSON文件创建TDE。
在Marklogic中对文档进行采样:
{
"filename": "StudentDetails.txt",
"auditId": "xxxx",
"FileInputTimestamp": "2018-11-14T15:47:40.074",
"FileProcessedTimestamp": "2018-11-14T15:47:40.236",
}
** TDE我尝试过&我能够验证它,但是JSON文档没有层次结构&我无法将上下文指定为根节点。 **
xquery version "1.0-ml";
let $my-first-TDE:=
<template xmlns="http://marklogic.com/xdmp/tde">
<context>/</context>
<collections>
<collection>ods_fms_file_audit</collection>
</collections>
<rows>
<row>
<schema-name>File_audit</schema-name>
<view-name>ABaC_View</view-name>
<columns>
<column>
<name>FILE_NAME</name>
<scalar-type>string</scalar-type>
<val>filename</val>
</column>
<column>
<name>AUDIT_ID</name>
<scalar-type>string</scalar-type>
<val>auditId</val>
</column>
</columns>
</row>
</rows>
</template>
return
tde:validate(
$my-first-TDE
)
**这将提取我通过的文档模板,并且得到空的结果集。 问题是,我无法在普通json中指定根节点。 **
xquery version "1.0-ml";
let $my-first-TDE:=
<template xmlns="http://marklogic.com/xdmp/tde">
<context>/</context>
<collections>
<collection>ods_fms_file_audit</collection>
</collections>
<rows>
<row>
<schema-name>File_audit</schema-name>
<view-name>ABaC_View</view-name>
<columns>
<column>
<name>FILE_NAME</name>
<scalar-type>string</scalar-type>
<val>filename</val>
</column>
<column>
<name>AUDIT_ID</name>
<scalar-type>string</scalar-type>
<val>auditId</val>
</column>
</columns>
</row>
</rows>
</template>
return
tde:node-data-extract(
fn:doc( "/file/StudentDetails.json" ),
$my-first-TDE
)
此外,如果我能获取到如何将marklogic输出提取并将其连接到POwer BI,还是很棒的(或)是否可以运行.xqy来生成我的报告并从ML中提取数据。
>答案 0 :(得分:1)
典型的方法是为上下文指定一个属性,如
/filename
,然后指定val相对于上下文的路径,如
../filename
之所以这样做,是因为上下文在确定模板为哪些文档建立索引方面起着重要作用。如果上下文仅仅是
/
然后,模板将不得不尝试对所有文档建立索引,这将为持久性增加很多成本(因为索引发生在持久性时间)。
如果我没记错的话,如果还指定了集合或目录,则MarkLogic 9的最新版本将接受根上下文,但是用步骤指定上下文仍然是最佳实践。
希望有帮助,
答案 1 :(得分:1)
通过在TDE格式的上下文部分中指定\,我能够为没有根节点的文档创建TDE。
还可以在SQL窗口中查询Marklogic。感谢大家对此的帮助。