python - 将 xBRL 报告实例映射到 JSON #xbrl #python #json

标签 python json python-3.x xbrl

我希望将 xBRL 报告实例,特别是财务报告(例如 SEC 生成的报告)转换为 Python 字典或 JSON。我花了一些时间使用 bs4(美丽的汤)开发代码,但理想情况下我想利用开源 Arelle 库。
我的理解是有一个名为“saveLoadableOIM”的 Arelle 软件包插件。 xBRL.org 发布了一般指南;然而,它没有实际实现。
http://www.xbrl.org/Specification/xbrl-json/CR-2020-05-06/xbrl-json-CR-2020-05-06.html
我发现 Arelle 的命令提示符使用文档已过时且不适用于 Python 3.x。谁能提供有关如何通过python命令提示符操作Arelle的指导;以及,具体来说,如何将 SEC xBRL 报告实例转换为 JSON?我想要一个能够适应标准分类法 future 变化的模型,尤其是 GAAP:
https://www.sec.gov/info/edgar/edgartaxonomies.shtml
使用示例代码将以下 MSFT 10-K 的 xBRL 报告实例映射到 JSON 会特别有帮助:
https://www.sec.gov/Archives/edgar/data/789019/000156459018019062/msft-20180630.xml
如果现有的 Arelle 库存在限制,我想了解这些是什么。
谢谢,
雷萨

最佳答案

我在 Python 3 下调用 Arelle:

python3 $HOME/Arelle/arelleCmdLine.py
这是在 Linux 上,并假设我已将 Arelle 在我的主目录中 check out 为 Arelle .
要加载插件,请使用 --plugins并为其指定 Arelle/arelle/plugin 下的文件名目录(没有 .py 扩展名)。例如,--plugins=saveLoadableOIM .然后您可以添加 --help您应该会看到帮助消息中包含的其他选项。
这对我有用:
python3 $HOME/Arelle/arelleCmdLine.py --plugins=saveLoadableOIM --saveLoadableOIM=msft.json -f https://www.sec.gov/Archives/edgar/data/789019/000156459018019062/msft-20180630.xml
使用真棒 jq 提取数据的示例:
jq '[.facts[] | select( .dimensions.concept | test(":GrossProfit$") )] | sort_by(.dimensions.period)[-1]' msft.json
这将获得最新的 GrossProfit 值:
{
  "value": "20343000000",
  "decimals": -6,
  "dimensions": {
    "concept": "us-gaap:GrossProfit",
    "entity": "cik:0000789019",
    "period": "2018-04-01T00:00:00/2018-07-01T00:00:00",
    "unit": "iso4217:USD"
  }
}
我应该注意的是,xBRL-JSON 规范尚未最终确定,并且此 JSON 的格式可能会随着时间的推移而略有变化。我希望 Arelle 在可用后更新到最终版本。

关于python - 将 xBRL 报告实例映射到 JSON #xbrl #python #json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63882947/

相关文章:

python - 如何在 Matplotlib 中的 x 轴上分配相等的比例?

python - 如何删除重复的节点 xml Python

sql - 如何通过SQL查询检查是否有JSON函数?

javascript - 如何显示来自 JsonRestStore 的数据

python - 无法使用 Selenium 在 headless 模式下运行 Chromedriver

python - Python Django-如何同时支持Socket和API

python - anaconda2/Lib/site-packages/<pkg> 和 anaconda2/pkgs/<pkg> 有什么区别?

jquery - MongoDB:如何从 json 数据中找到一个值?

python - 是否可以使用不带齿轮的 discord.py 进行面向对象编程?

python-3.x - 使用 HDBSCAN 聚类时获取聚类中心