从Python配置元数据库

mara-metabase的Python项目详细描述


马拉代谢酶

Build StatusPyPI - LicensePyPI versionSlack Status

自动设置和配置元数据库实例。附带

  • 用于添加用户、数据库和设置的函数

  • 将用Mara Schema定义的字段描述和度量与元数据库同步

  • 将用户和权限同步到元数据库

  • 用于在本地运行元数据库的生成文件

安装

要直接使用库,请使用pip:

pip install mara-metabase

或者

^{pr2}$

关于一个集成到flask应用程序的例子,请看一下mara example project 1。在

运行元数据库

从一个项目中,包括[https://github.com/mara/mara metabase/tree/master/.scripts/metabase.mk]在项目Makefile中(例如https://github.com/mara/mara-example-project-1/blob/master/Makefile)。在

运行make setup-metabase将下载一个元数据库jar文件,运行数据库迁移,添加一个管理用户并创建到数据仓库的数据库连接。然后,运行make run-metabase将在端口3000上启动元数据库:

Metabase

您可以使用默认用户名admin@my-company.com和密码123abc(可通过mara_metabase/config.py配置,请在生产中更改)。在

要在生产环境中运行元数据库,请查看https://www.metabase.com/docs/latest/operations-guide/installing-metabase.html。在

特点

编程设置Metabase

文件mara_metabase/setup.py包含配置元数据库实例的函数,方法是直接写入元数据数据库(而不是通过UI手动配置实例)。当维护多个元数据库实例(例如,每个测试/登台环境一个)时,这些函数特别有用。在

有一个flaskcli命令用于运行setup函数:flask mara_metabase.setup。在

Danger:这将从元数据库中删除任何其他已配置的数据库连接!

元数据同步

如果您在Mara Schema中定义了一个数据仓库模式,那么您可以自动将字段描述和度量定义与mara_metabase/metadata.py中的update_metadata函数同步。在

以下是度量平均订单值的自动同步定义示例:

Metabae metadata sync

此函数假定所有报表表都是使用Mara Schema的sql生成特性创建的。在

可以使用flask mara_metabase.update-metadata手动触发架构同步。在

查看https://github.com/mara/mara-example-project-1/blob/master/app/pipelines/update_frontends/__init__.py,了解如何将模式同步集成到数据管道中。在

正在从Mara ACL同步用户、组和权限

一旦将mara_metabase/views.py中的元数据库ACL资源添加到项目中,就可以轻松控制哪些用户可以查询哪些数据集:

Metabase ACL

必须在安装程序代码中显式启用同步,才能不干扰具有自己用户管理的元数据库实例:

# e.g. in app/ui/__init__.py importmara_metabase.aclmara_metabase.acl.enable_automatic_sync_of_users_and_permissions_to_metabase()

Danger:启用此功能将覆盖元数据库中的任何现有用户、组和权限

启用后,maracl中的所有用户将在“保存”权限时与其各自的组同步到元数据库。可以为所有数据集或单个数据集授予元数据库中的权限。在

在本例中,“管理”组的用户可以查询所有数据集,“营销”组的用户只能查询“客户”和“潜在客户”(Thomas除外,他还可以查询“订单项”和“卖家”)。在

这是元数据库管理UI中的相同数据:

Metabase permissions

尝试Mara元数据库最简单的方法是运行mara example project 1。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java Android Studio从XML中洗牌2D数组列   安卓 rx java obsever pojo模型的变化   java如何在安卓应用程序中以编程方式打开google教室   java如何将充满令牌的对象[]转换为整数数组?   java Minify Maven插件抛出“不支持JavaScript引擎”错误   java如何检查调用应用程序的用户是否具有绑定特权端口的权限?   java无法向firestore发送数据   jpanel Java向ScrollPane中嵌入的面板添加JLabel   将Bash脚本移植到Java   JavaSpring显示错误消息   java如何为这些路径表达式编写正则表达式   java如何通过编程在Android手机上获得时间?   Java:捕获未检查的异常与已检查的异常