用于可视化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 Android HttpClient cookies   如何使用Java在远程系统上运行SSH命令?   java从字符串数组中的字符串末尾删除“,”   在One plus 3t手机上,当应用程序被终止或从最近的应用程序中刷出时,java Android FCM推送通知不起作用   java如何使垂直滚动条始终位于jtable的末尾   在java中解析迄今为止“未知”的字符串   javascript在Java中获取Nashorn JsonObject   java windows 10和ubuntu可以使用相同的JDK吗?   java在不同的文件中记录不同的日志。但所有日志都放在同一个文件中   具有特定jdk的java Gradle构建项目   xml Java web服务生成错误响应   javascript Jaggery文件更改不显示   java输出二进制搜索树数组   将BufferedReader解析为JSON对象时,java在位置处意外标记文件结尾