Skip to content

Commit 88a27cb

Browse files
committed
Update README
1 parent 1108cc2 commit 88a27cb

File tree

2 files changed

+73
-5
lines changed

2 files changed

+73
-5
lines changed

README.md

+73-5
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,86 @@
11
# BigQuery View Analyzer
22
[![PyPI version](https://img.shields.io/pypi/v/bigquery-view-analyzer.svg)](https://pypi.python.org/pypi/bigquery-view-analyzer)
3-
[![Build status](https://img.shields.io/travis/servian/bigquery-view-analyzer.svg)](https://travis-ci.org/servian/bigquery-view-analyzer)
4-
[![Coverage](https://img.shields.io/coveralls/github/servian/bigquery-view-analyzer.svg)](https://coveralls.io/github/servian/bigquery-view-analyzer?branch=master)
53
[![Python versions](https://img.shields.io/pypi/pyversions/bigquery-view-analyzer.svg)](https://pypi.python.org/pypi/bigquery-view-analyzer)
4+
[![Build status](https://img.shields.io/travis/servian/bigquery-view-analyzer.svg)](https://travis-ci.org/servian/bigquery-view-analyzer)
65
[![Github license](https://img.shields.io/github/license/servian/bigquery-view-analyzer.svg)](https://github.com/servian/bigquery-view-analyzer)
76

87
## Description
9-
TBC
8+
`bigquery-view-analyzer` is a command-line tool for visualizing dependencies and managing permissions between BigQuery views.
9+
10+
To authorize a vew, permissions must be granted at a dataset level for every view/table referenced in the view definition. This requirement cascades down to every view that's referenced by the parent view, they too must have permissions granted for every view/table they reference - and so on. This can quickly become difficult to manage if you have many nested views across multiple datasets and/or projects.
11+
12+
`bigquery-view-analyzer` automatically resolves these dependencies and applies the relevant permissions to all views and datasets referenced by the parent view.
13+
1014

1115
## Installation
1216

1317
```bash
14-
pip install bigquery-view-analyzer
18+
$ pip install bigquery-view-analyzer
1519
```
1620

1721
## Usage
18-
TBC
22+
23+
```bash
24+
$ bqva --help
25+
```
26+
27+
28+
### Example
29+
30+
![Example tree](/docs/example.png)
31+
32+
Given the above datasets and tables in BigQuery, to authorize `bqva-demo:dataset_4.shared_view`, the following views would need to be authorized with each of the following datasets:
33+
34+
- Authorized views for **`dataset_1`**
35+
- `bqva-demo:dataset_3.view_a_b_c_d`
36+
- Authorized views for **`dataset_2`**
37+
- `bqva-demo:dataset_3.view_a_b_c_d`
38+
- `bqva-demo:dataset_1.view_c`
39+
- Authorized views for **`dataset_3`**
40+
- `bqva-demo:dataset_2.view_d`
41+
- `bqva-demo:dataset_4.shared_view`
42+
43+
You can easily visualize the above view hierarchy using the `bqva tree` command.
44+
45+
```bash
46+
# View dependency tree and authorization status for 'bqva-demo:dataset_4.shared_view'
47+
$ bqva tree --status --view "bqva-demo:dataset_4.shared_view"
48+
bqva-demo:dataset_4.shared_view
49+
└── bqva-demo:dataset_3.view_a_b_c_d (⨯)
50+
├── bqva-demo:dataset_1.table_a (⨯)
51+
├── bqva-demo:dataset_1.table_b (⨯)
52+
├── bqva-demo:dataset_1.view_c (⨯)
53+
│ └── bqva-demo:dataset_2.table_c (⨯)
54+
└── bqva-demo:dataset_2.view_d (⨯)
55+
└── bqva-demo:dataset_3.table_d (⨯)
56+
```
57+
58+
Permissions can be applied automatically to all datasets referenced by the parent view using the `bqva authorize` command.
59+
60+
```bash
61+
# Apply all permissions required by 'bqva-demo:dataset_4.shared_view'
62+
$ bqva authorize --view "bqva-demo:dataset_4.shared_view"
63+
bqva-demo:dataset_4.shared_view
64+
└── bqva-demo:dataset_3.view_a_b_c_d (✓)
65+
├── bqva-demo:dataset_1.table_a (✓)
66+
├── bqva-demo:dataset_1.table_b (✓)
67+
├── bqva-demo:dataset_1.view_c (✓)
68+
│ └── bqva-demo:dataset_2.table_c (✓)
69+
└── bqva-demo:dataset_2.view_d (✓)
70+
└── bqva-demo:dataset_3.table_d (✓)
71+
```
72+
73+
If you want to revoke permissions for a view, you can do that too!
74+
75+
```bash
76+
# Revoke all permissions granted to 'bqva-demo:dataset_4.shared_view'
77+
$ bqva revoke --view "bqva-demo:dataset_4.shared_view"
78+
bqva-demo:dataset_4.shared_view
79+
└── bqva-demo:dataset_3.view_a_b_c_d (⨯)
80+
├── bqva-demo:dataset_1.table_a (⨯)
81+
├── bqva-demo:dataset_1.table_b (⨯)
82+
├── bqva-demo:dataset_1.view_c (⨯)
83+
│ └── bqva-demo:dataset_2.table_c (⨯)
84+
└── bqva-demo:dataset_2.view_d (⨯)
85+
└── bqva-demo:dataset_3.table_d (⨯)
86+
```

docs/example.png

58.4 KB
Loading

0 commit comments

Comments
 (0)