首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何拆分一个大的XBRL文件?

如何拆分一个大的XBRL文件?
EN

Stack Overflow用户
提问于 2019-11-14 18:44:32
回答 2查看 104关注 0票数 1

我有大约50 is长的xbrl文件。当我尝试通过arelle打开它时,我得到了MemoryError。有没有办法将xbrl文件拆分成更小的片段?xbrl规范是否支持这一点?

EN

回答 2

Stack Overflow用户

发布于 2019-11-14 19:10:59

没有一种简单或标准的方法可以将XBRL文件拆分成更小的片段,尽管有一些方法可以做到。您可以将成批的事实复制到单独的文件中,但在执行此操作时,您需要确保还复制了事实的引用上下文和单元定义。上下文和单元可能出现在引用它们的事实之前或之后,因此您可能需要在多个流解析中完成,这使得这一点变得更加棘手。

如果您自己生成数据,我建议您查看xBRL-CSV。这是一种新规范,适用于以更紧凑的形式表示大型的、基于记录的XBRL数据集。我相信在Arelle中有对此的初步支持。

票数 0
EN

Stack Overflow用户

发布于 2019-11-14 20:23:14

首先让我从数据库的角度(与XBRL无关)给出一个一般性的评论。

在处理大量数据时,数据管理中的常见做法是将输入拆分到位于同一目录中的多个较小的文件(每个文件最多100 MB )。这是通常对大型数据集执行的操作,文件名在同一目录中包含递增的整数。它有实际的原因,使得将数据集复制到其他位置变得更容易。

但是,我不确定是否有以这种方式拆分XBRL实例的公共标准(尽管对于引擎开发人员来说,这样做和实现相对简单:只需对事实进行分区,并在传递闭包中仅使用上下文和单元为每个文件编写一个分区--这实际上是一个标准化的问题)。

然而,非常大的文件(50 to,但也更多)通常仍然可以在有限的内存(例如,16 to或更少)下读取,用于对流友好的查询(如过滤、投影、计数、转换为另一种格式等)。

在使用XBRL的情况下,诀窍是按照pdw提到的以流方式读取文件的方式构造文件。我推荐看看XBRL International 1的以下官方文档,它现在是一个候选推荐,它解释了如何创建可以以流方式读取的XBRL实例:

1

如果引擎支持这一点,则对实例的大小没有理论上的限制,除了磁盘的容量和查询流经时需要在内存中维护多少中间数据(例如,在计数上聚合的分组查询将需要跟踪其键和关联的计数)。与可以做的事情相比,50 on的容量相对较小。我仍然希望它至少需要一到两位数的分钟数来处理,这取决于确切的用例。

我不确定Arelle目前是否支持流媒体。目前,大多数XBRL处理器都将实例具体化在内存中,但我预计将会有一些XBRL处理器实现流扩展。

最后,我建议pdw减少输入的大小,比如使用CSV语法,这有助于提高速度和占用内存。50G的XBRL实例很可能以正确的格式存储在不到50G的内存中,而表(CSV)是实现这一点的一种很好的方法。话虽如此,还应该记住,磁盘上使用的语法不必与内存中的数据结构匹配,只要外部行为不变,任何引擎都可以自由地设计它认为合适的方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58854902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档