与附件文档中的索引字段同名的字段如何避免范围索引错误?

问题描述

对于我的项目,我必须导入和整理来自各种来源的数据。 我通过使用数据流的数据集线器框架来做到这一点。 我所有不同的来源都有一个称为“日期”的字段。但是它们都以不同的形式出现,例如yyyy-mm-dd,yyyymmdd,dd.mm.yyyy。

我通过映射步骤对一种常见格式yyyy-mm-dd进行管理。 映射后,该字段仍称为“日期”。

由于我希望能够进行范围搜索,因此我需要在“日期”上建立索引。但是,由于导入的数据的“日期”字段尚未映射为正确的格式,因此在导入数据时会导致错误

我的解决方案是不拒绝STAGING数据库的无效值。但是,由于旧文件是附加在策展后的新文件的信封中的,该新文件在映射后移至FINAL数据库,所以我得到了附件文件的范围索引错误

我想拒绝FINAL数据库中的无效值,但我也想将原始文档作为附件保留在最终文件中。

到目前为止,我唯一看到的解决方案是在FINAL数据库中将“日期”元素命名为iDate之类,以避免冲突。

这对我来说似乎不是一个干净的解决方案。您有更好的建议吗?

我正在使用:

  • centos 7
  • Marklogic 10
  • Marklogic数据中心5.2.3

解决方法

如果您使用路径范围索引,则可以将其限制为仅位于顶级实例而不是附件中的date个元素。

有关使用路径范围索引的详细信息,请参见https://docs.marklogic.com/guide/admin/range_index#id_40666

,

将路径字段配置为仅定位标准化日期,不包括信封中的原始日期元素。

https://docs.marklogic.com/guide/admin/fields#id_23934

在路径字段中,包含和排除的元素被约束到该路径标识的子树。例如,如果该字段的路径是/ A / B / C,则仅节点C中的元素,例如A / B / C / D,A / B / C / D / E和/ A / B / C / Z,则包含在该字段中或从该字段中排除。

路径字段可以包含一个或多个路径。多个路径被视为路径的并集。因此,他们每个人都将标识给定文档中字段实例的根。

,

为标准化的“日期”元素提供不同的名称似乎是一种完美的方法。理想情况下,所有具有相同名称(由名称空间限定)的元素都具有相同的定义和相同的语义。当您的源给您的“日期”实际上不是xs:dates时,则提供的“ date”节点实际上只是一个(略有约束的)字符串。当然,它以某种易于翻译的方式描述了日期,但实际上它不是日期字段,因此不能作为日期字段索引。在标准化源数据时,您正在创建一个新的数据点,该数据点实际上是一个日期,并且它“应该”采用新的身份:您建议的新本地名称,或“规范化”中的“日期”数据”命名空间。

df.insert(0,'Group',df[0].where(df[0].str.startswith('Group')).ffill())
df = df[df[0].ne(df['Group'])].rename(columns={0:'Data'})
print (df)
            Group     Data
1    Group One []     John
2    Group One []    Jacob
3    Group One []    James
5    Group Two []     Mary
6    Group Two []    Molly
8  Group Three []  Anthony
9  Group Three []     Alan

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...