用于可视化bigquery视图之间的依赖关系和管理权限的命令行工具

bigquery-view-analyzer的Python项目详细描述


bigquery视图分析器

PyPI versionPython versionsBuild statusGithub license

说明

bigquery-view-analyzer是一个命令行工具,用于可视化bigquery视图之间的依赖关系和管理权限。

要授权视图,必须在数据集级别为视图定义中引用的每个视图/表授予权限。这一要求级联到父视图引用的每个视图,它们也必须对它们引用的每个视图/表授予权限,依此类推。如果您在多个数据集和/或项目中有多个嵌套视图,这可能很快变得难以管理。

bigquery-view-analyzer自动解析这些依赖项,并将相关权限应用于父视图引用的所有视图和数据集。

安装

$ pip install bigquery-view-analyzer

用法

$ bqva --help

asciicast

示例

Example tree

考虑到bigquery中的上述数据集和表,要授权bqva-demo:dataset_4.shared_view,需要对以下每个数据集授权以下视图:

  • dataset_1的授权视图
    • bqva-demo:dataset_3.view_a_b_c_d
  • dataset_2的授权视图
    • bqva-demo:dataset_3.view_a_b_c_d
    • bqva-demo:dataset_1.view_c
  • dataset_3的授权视图
    • bqva-demo:dataset_2.view_d
    • bqva-demo:dataset_4.shared_view

您可以使用bqva tree命令轻松可视化上述视图层次结构。

# View dependency tree and authorization status for 'bqva-demo:dataset_4.shared_view'
$ bqva tree --status --no-key --view "bqva-demo:dataset_4.shared_view"
bqva-demo:dataset_4.shared_view
└── bqva-demo:dataset_3.view_a_b_c_d ()
    ├── bqva-demo:dataset_1.table_a ()
    ├── bqva-demo:dataset_1.table_b ()
    ├── bqva-demo:dataset_1.view_c ()
    │   └── bqva-demo:dataset_2.table_c ()
    └── bqva-demo:dataset_2.view_d ()
        └── bqva-demo:dataset_3.table_d ()

权限可以使用bqva authorize命令自动应用于父视图引用的所有数据集。

# Apply all permissions required by 'bqva-demo:dataset_4.shared_view'
$ bqva authorize --view "bqva-demo:dataset_4.shared_view"
bqva-demo:dataset_4.shared_view
└── bqva-demo:dataset_3.view_a_b_c_d ()
    ├── bqva-demo:dataset_1.table_a ()
    ├── bqva-demo:dataset_1.table_b ()
    ├── bqva-demo:dataset_1.view_c ()
    │   └── bqva-demo:dataset_2.table_c ()
    └── bqva-demo:dataset_2.view_d ()
        └── bqva-demo:dataset_3.table_d ()

如果要撤消视图的权限,也可以这样做!

# Revoke all permissions granted to 'bqva-demo:dataset_4.shared_view'
$ bqva revoke --view "bqva-demo:dataset_4.shared_view"
bqva-demo:dataset_4.shared_view
└── bqva-demo:dataset_3.view_a_b_c_d ()
    ├── bqva-demo:dataset_1.table_a ()
    ├── bqva-demo:dataset_1.table_b ()
    ├── bqva-demo:dataset_1.view_c ()
    │   └── bqva-demo:dataset_2.table_c ()
    └── bqva-demo:dataset_2.view_d ()
        └── bqva-demo:dataset_3.table_d ()

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

推荐PyPI第三方库


热门话题
java<E extends Number>和<Number>之间有什么区别?   java如何将ActionScriptObject转换为ByteArray?   java如何平衡图形中的循环?   java为什么会抛出这个SAXParsexException?   使用JPA的java删除实体   java为什么要使用AccessibilityManager是有原因的。sInstance会导致内存泄漏吗?   java如何在Spring表单中隐藏选项?   java简单Hello World servlet在EclipseTomcat中给出错误404   java解决Web应用程序的heapdump问题(JSP+SpringMVC+JPAHIBERNATE)   SpringBoot如何为java联合生成graphql模式?   java是否将用户输入(从TextField)传递到另一个类?   java如何对集合执行clone()。newSetFromMap(地图)   java节点JS服务器处理10000个WebSocket   java为什么Thymeleaf International仅适用于ResourceBundleMessageSource   java如何使用build编译ResourceBundle类。xml文件   Java 2D游戏检查玩家是否触摸到另一个精灵   java无法从类<PowerMockRunner>转换为类<?扩展Runner>   从服务器搜索json数组的java搜索栏   java通过无知解决LazyInitializationException异常   java从线程更新JFreeChart