pvw-cli 1.0.12__tar.gz → 1.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pvw-cli might be problematic. Click here for more details.
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/PKG-INFO +378 -58
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/README.md +377 -57
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/__init__.py +2 -2
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/account.py +24 -24
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/cli.py +16 -16
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/collections.py +24 -24
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/domain.py +8 -8
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/entity.py +328 -222
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/glossary.py +29 -29
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/health.py +2 -2
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/insight.py +7 -7
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/lineage.py +11 -11
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/unified_catalog.py +610 -29
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/workflow.py +43 -43
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_entity.py +35 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_unified_catalog.py +7 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/pvw_cli.egg-info/PKG-INFO +378 -58
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/pyproject.toml +3 -1
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/__main__.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/__init__.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/management.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/policystore.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/relationship.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/scan.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/search.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/share.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/cli/types.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/__init__.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_account.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_collections.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_domain.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_glossary.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_health.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_insight.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_lineage.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_management.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_policystore.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_relationship.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_scan.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_search.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_share.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_types.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/_workflow.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/api_client.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/business_rules.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/config.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/data_quality.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/endpoint.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/endpoints.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/exceptions.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/lineage_visualization.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/monitoring_dashboard.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/rate_limiter.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/retry_handler.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/scanning_operations.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/settings.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/client/sync_client.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/plugins/__init__.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/purviewcli/plugins/plugin_system.py +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/pvw_cli.egg-info/SOURCES.txt +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/pvw_cli.egg-info/dependency_links.txt +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/pvw_cli.egg-info/entry_points.txt +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/pvw_cli.egg-info/not-zip-safe +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/pvw_cli.egg-info/requires.txt +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/pvw_cli.egg-info/top_level.txt +0 -0
- {pvw_cli-1.0.12 → pvw_cli-1.2.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pvw-cli
|
|
3
|
-
Version: 1.0
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: Microsoft Purview CLI with comprehensive automation capabilities
|
|
5
5
|
Author-email: AYOUB KEBAILI <keayoub@msn.com>
|
|
6
6
|
Maintainer-email: AYOUB KEBAILI <keayoub@msn.com>
|
|
@@ -56,26 +56,27 @@ Requires-Dist: pytest-asyncio>=0.20.0; extra == "test"
|
|
|
56
56
|
Requires-Dist: pytest-cov>=4.0.0; extra == "test"
|
|
57
57
|
Requires-Dist: requests-mock>=1.9.0; extra == "test"
|
|
58
58
|
|
|
59
|
-
# PURVIEW CLI v1.0
|
|
59
|
+
# PURVIEW CLI v1.2.0 - Microsoft Purview Automation & Data Governance
|
|
60
60
|
|
|
61
61
|
> **LATEST UPDATE (October 2025):**
|
|
62
|
-
> -
|
|
63
|
-
> -
|
|
64
|
-
> -
|
|
65
|
-
> -
|
|
66
|
-
> - **🚀
|
|
67
|
-
> -
|
|
68
|
-
> -
|
|
69
|
-
> -
|
|
70
|
-
> - Enhanced Discovery Query/Search support
|
|
62
|
+
> - **� NEW: Bulk Term Import/Export** - Import multiple terms from CSV/JSON with dry-run support
|
|
63
|
+
> - **🗑️ NEW: Bulk Delete Scripts** - PowerShell and Python scripts for bulk term deletion
|
|
64
|
+
> - **📊 NEW: Multiple Output Formats** - `--output` flag supports table, json, and jsonc formats
|
|
65
|
+
> - **🔧 NEW: PowerShell Integration** - Plain JSON output works with `ConvertFrom-Json`
|
|
66
|
+
> - **🚀 Complete Data Product CRUD** - Full update and delete support with smart partial updates
|
|
67
|
+
> - **🏥 Health Monitoring API** - Automated governance health checks and recommendations
|
|
68
|
+
> - **🔄 Workflow Management** - Approval workflows and business process automation
|
|
69
|
+
> - **🚀 Complete Microsoft Purview Unified Catalog (UC)** - Full governance domains, glossary terms, data products, OKRs, and CDEs
|
|
71
70
|
|
|
72
71
|
---
|
|
73
72
|
|
|
74
73
|
## What is PVW CLI?
|
|
75
74
|
|
|
76
|
-
**PVW CLI v1.0
|
|
75
|
+
**PVW CLI v1.2.0** is a modern, full-featured command-line interface and Python library for Microsoft Purview. It enables automation and management of *all major Purview APIs* including:
|
|
77
76
|
|
|
78
|
-
- **
|
|
77
|
+
- **Unified Catalog (UC) Management** - Complete governance domains, glossary terms, data products, OKRs, CDEs
|
|
78
|
+
- **Bulk Operations** - Import/export terms from CSV/JSON, bulk delete scripts with progress tracking
|
|
79
|
+
- **Scriptable Output** - Multiple output formats (table, json, jsonc) for PowerShell/bash automation
|
|
79
80
|
- Entity management (create, update, bulk, import/export)
|
|
80
81
|
- Glossary and term management
|
|
81
82
|
- Lineage operations
|
|
@@ -83,65 +84,87 @@ Requires-Dist: requests-mock>=1.9.0; extra == "test"
|
|
|
83
84
|
- Advanced search and discovery
|
|
84
85
|
- Data product management (legacy compatibility)
|
|
85
86
|
- Classification, label, and status management
|
|
86
|
-
- And more (see command reference)
|
|
87
87
|
|
|
88
88
|
The CLI is designed for data engineers, stewards, architects, and platform teams to automate, scale, and enhance their Microsoft Purview experience.
|
|
89
89
|
|
|
90
90
|
---
|
|
91
91
|
|
|
92
|
-
##
|
|
92
|
+
## Getting Started
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
Follow this short flow to get PVW CLI installed and running quickly.
|
|
95
95
|
|
|
96
|
-
1.
|
|
96
|
+
1. Install (from PyPI):
|
|
97
97
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
```bash
|
|
99
|
+
pip install pvw-cli
|
|
100
|
+
```
|
|
101
101
|
|
|
102
|
-
|
|
102
|
+
For the bleeding edge or development:
|
|
103
103
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
```
|
|
104
|
+
```bash
|
|
105
|
+
pip install git+https://github.com/Keayoub/Purview_cli.git
|
|
106
|
+
# or for editable development
|
|
107
|
+
git clone https://github.com/Keayoub/Purview_cli.git
|
|
108
|
+
cd Purview_cli
|
|
109
|
+
pip install -r requirements.txt
|
|
110
|
+
pip install -e .
|
|
111
|
+
```
|
|
113
112
|
|
|
114
|
-
|
|
113
|
+
2. Set required environment variables (examples for cmd, PowerShell, and pwsh)
|
|
115
114
|
|
|
116
|
-
|
|
117
|
-
- Or set Service Principal credentials as environment variables
|
|
115
|
+
Windows cmd (example):
|
|
118
116
|
|
|
119
|
-
|
|
117
|
+
```cmd
|
|
118
|
+
set PURVIEW_ACCOUNT_NAME=your-purview-account
|
|
119
|
+
set PURVIEW_ACCOUNT_ID=your-purview-account-id-guid
|
|
120
|
+
set PURVIEW_RESOURCE_GROUP=your-resource-group-name
|
|
121
|
+
set AZURE_REGION= # optional
|
|
122
|
+
```
|
|
120
123
|
|
|
121
|
-
|
|
122
|
-
pvw uc domain list
|
|
123
|
-
```
|
|
124
|
+
PowerShell (Windows PowerShell):
|
|
124
125
|
|
|
125
|
-
|
|
126
|
+
```powershell
|
|
127
|
+
$env:PURVIEW_ACCOUNT_NAME = "your-purview-account"
|
|
128
|
+
$env:PURVIEW_ACCOUNT_ID = "your-purview-account-id-guid"
|
|
129
|
+
$env:PURVIEW_RESOURCE_GROUP = "your-resource-group-name"
|
|
130
|
+
$env:AZURE_REGION = "" # optional
|
|
131
|
+
```
|
|
126
132
|
|
|
127
|
-
|
|
128
|
-
pvw search query --keywords="customer" --limit=5
|
|
129
|
-
```
|
|
133
|
+
pwsh (PowerShell Core - cross-platform, recommended):
|
|
130
134
|
|
|
131
|
-
|
|
135
|
+
```pwsh
|
|
136
|
+
$env:PURVIEW_ACCOUNT_NAME = 'your-purview-account'
|
|
137
|
+
$env:PURVIEW_ACCOUNT_ID = 'your-purview-account-id-guid'
|
|
138
|
+
$env:PURVIEW_RESOURCE_GROUP = 'your-resource-group-name'
|
|
139
|
+
$env:AZURE_REGION = '' # optional
|
|
140
|
+
```
|
|
132
141
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
142
|
+
3. Authenticate
|
|
143
|
+
|
|
144
|
+
- Run `az login` (recommended), or
|
|
145
|
+
- Provide Service Principal credentials via environment variables.
|
|
146
|
+
|
|
147
|
+
4. Try a few commands:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# List governance domains
|
|
151
|
+
pvw uc domain list
|
|
152
|
+
|
|
153
|
+
# Search
|
|
154
|
+
pvw search query --keywords="customer" --limit=5
|
|
155
|
+
|
|
156
|
+
# Get help
|
|
157
|
+
pvw --help
|
|
158
|
+
pvw uc --help
|
|
159
|
+
```
|
|
137
160
|
|
|
138
|
-
For more advanced usage, see the
|
|
161
|
+
For more advanced usage, see the documentation in `doc/` or the project docs: https://pvw-cli.readthedocs.io/
|
|
139
162
|
|
|
140
163
|
---
|
|
141
164
|
|
|
142
165
|
## Overview
|
|
143
166
|
|
|
144
|
-
**PVW CLI v1.0
|
|
167
|
+
**PVW CLI v1.2.0** is a modern command-line interface and Python library for Microsoft Purview, enabling:
|
|
145
168
|
|
|
146
169
|
- Advanced data catalog search and discovery
|
|
147
170
|
- Bulk import/export of entities, glossary terms, and lineage
|
|
@@ -278,6 +301,95 @@ For more details, see the [Azure Identity documentation](https://learn.microsoft
|
|
|
278
301
|
|
|
279
302
|
---
|
|
280
303
|
|
|
304
|
+
## Output Formats & Scripting Integration
|
|
305
|
+
|
|
306
|
+
PVW CLI supports multiple output formats to fit different use cases - from human-readable tables to machine-parseable JSON.
|
|
307
|
+
|
|
308
|
+
### Output Format Options
|
|
309
|
+
|
|
310
|
+
All `list` commands now support the `--output` parameter with three formats:
|
|
311
|
+
|
|
312
|
+
1. **`table`** (default) - Rich formatted table with colors for human viewing
|
|
313
|
+
2. **`json`** - Plain JSON for scripting with PowerShell, bash, jq, etc.
|
|
314
|
+
3. **`jsonc`** - Colored JSON with syntax highlighting for viewing
|
|
315
|
+
|
|
316
|
+
### PowerShell Integration
|
|
317
|
+
|
|
318
|
+
The `--output json` format produces plain JSON that works perfectly with PowerShell's `ConvertFrom-Json`:
|
|
319
|
+
|
|
320
|
+
```powershell
|
|
321
|
+
# Get all terms as PowerShell objects
|
|
322
|
+
$domainId = "59ae27b5-40bc-4c90-abfe-fe1a0638fe3a"
|
|
323
|
+
$terms = py -m purviewcli uc term list --domain-id $domainId --output json | ConvertFrom-Json
|
|
324
|
+
|
|
325
|
+
# Access properties
|
|
326
|
+
Write-Host "Found $($terms.Count) terms"
|
|
327
|
+
foreach ($term in $terms) {
|
|
328
|
+
Write-Host " • $($term.name) - $($term.status)"
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
# Filter and export
|
|
332
|
+
$draftTerms = $terms | Where-Object { $_.status -eq "Draft" }
|
|
333
|
+
$draftTerms | Export-Csv -Path "draft_terms.csv" -NoTypeInformation
|
|
334
|
+
|
|
335
|
+
# Group by status
|
|
336
|
+
$terms | Group-Object status | Format-Table Count, Name
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### Bash/Linux Integration
|
|
340
|
+
|
|
341
|
+
Use `jq` for JSON processing in bash:
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
# Get domain ID
|
|
345
|
+
DOMAIN_ID="59ae27b5-40bc-4c90-abfe-fe1a0638fe3a"
|
|
346
|
+
|
|
347
|
+
# Get term names only
|
|
348
|
+
pvw uc term list --domain-id $DOMAIN_ID --output json | jq -r '.[] | .name'
|
|
349
|
+
|
|
350
|
+
# Count terms
|
|
351
|
+
pvw uc term list --domain-id $DOMAIN_ID --output json | jq 'length'
|
|
352
|
+
|
|
353
|
+
# Filter by status
|
|
354
|
+
pvw uc term list --domain-id $DOMAIN_ID --output json | jq '.[] | select(.status == "Draft")'
|
|
355
|
+
|
|
356
|
+
# Group by status
|
|
357
|
+
pvw uc term list --domain-id $DOMAIN_ID --output json | jq 'group_by(.status) | map({status: .[0].status, count: length})'
|
|
358
|
+
|
|
359
|
+
# Save to file
|
|
360
|
+
pvw uc term list --domain-id $DOMAIN_ID --output json > terms.json
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### Examples by Command
|
|
364
|
+
|
|
365
|
+
```bash
|
|
366
|
+
# Domains
|
|
367
|
+
pvw uc domain list --output json | jq '.[] | .name'
|
|
368
|
+
|
|
369
|
+
# Terms
|
|
370
|
+
pvw uc term list --domain-id "abc-123" --output json
|
|
371
|
+
pvw uc term list --domain-id "abc-123" --output table # Default
|
|
372
|
+
pvw uc term list --domain-id "abc-123" --output jsonc # Colored for viewing
|
|
373
|
+
|
|
374
|
+
# Data Products
|
|
375
|
+
pvw uc dataproduct list --domain-id "abc-123" --output json
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
### Migration from Old --json Flag
|
|
379
|
+
|
|
380
|
+
**Old (deprecated):**
|
|
381
|
+
```bash
|
|
382
|
+
pvw uc term list --domain-id "abc-123" --json
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
**New (recommended):**
|
|
386
|
+
```bash
|
|
387
|
+
pvw uc term list --domain-id "abc-123" --output json # Plain JSON for scripting
|
|
388
|
+
pvw uc term list --domain-id "abc-123" --output jsonc # Colored JSON (old behavior)
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
|
|
281
393
|
## Required Purview Configuration
|
|
282
394
|
|
|
283
395
|
Before using PVW CLI, you need to set three essential environment variables. Here's how to find them:
|
|
@@ -530,17 +642,107 @@ pvw uc domain update --domain-id "abc-123" --description "Updated financial gove
|
|
|
530
642
|
```bash
|
|
531
643
|
# List all terms in a domain
|
|
532
644
|
pvw uc term list --domain-id "abc-123"
|
|
645
|
+
pvw uc term list --domain-id "abc-123" --output json # Plain JSON for scripting
|
|
646
|
+
pvw uc term list --domain-id "abc-123" --output jsonc # Colored JSON for viewing
|
|
647
|
+
|
|
648
|
+
# Create a single glossary term
|
|
649
|
+
pvw uc term create --name "Customer" --domain-id "abc-123" --description "A person or entity that purchases products"
|
|
650
|
+
|
|
651
|
+
# Get term details
|
|
652
|
+
pvw uc term show --term-id "term-456"
|
|
653
|
+
|
|
654
|
+
# Update term
|
|
655
|
+
pvw uc term update --term-id "term-456" --description "Updated description"
|
|
656
|
+
|
|
657
|
+
# Delete term
|
|
658
|
+
pvw uc term delete --term-id "term-456" --confirm
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
**📦 Bulk Import (NEW)**
|
|
662
|
+
|
|
663
|
+
Import multiple terms from CSV or JSON files with validation and progress tracking:
|
|
664
|
+
|
|
665
|
+
```bash
|
|
666
|
+
# CSV Import - Preview with dry-run
|
|
667
|
+
pvw uc term import-csv --csv-file "samples/csv/uc_terms_bulk_example.csv" --domain-id "abc-123" --dry-run
|
|
668
|
+
|
|
669
|
+
# CSV Import - Actual import
|
|
670
|
+
pvw uc term import-csv --csv-file "samples/csv/uc_terms_bulk_example.csv" --domain-id "abc-123"
|
|
533
671
|
|
|
534
|
-
#
|
|
535
|
-
pvw uc term
|
|
672
|
+
# JSON Import - Preview with dry-run
|
|
673
|
+
pvw uc term import-json --json-file "samples/json/term/uc_terms_bulk_example.json" --dry-run
|
|
536
674
|
|
|
537
|
-
#
|
|
538
|
-
pvw uc term
|
|
675
|
+
# JSON Import - Actual import (domain_id from JSON or override with flag)
|
|
676
|
+
pvw uc term import-json --json-file "samples/json/term/uc_terms_bulk_example.json"
|
|
677
|
+
pvw uc term import-json --json-file "samples/json/term/uc_terms_bulk_example.json" --domain-id "abc-123"
|
|
678
|
+
```
|
|
679
|
+
|
|
680
|
+
**Bulk Import Features:**
|
|
681
|
+
- ✅ Import from CSV or JSON files
|
|
682
|
+
- ✅ Dry-run mode to preview before importing
|
|
683
|
+
- ✅ Support for multiple owners (Entra ID Object IDs), acronyms, and resources
|
|
684
|
+
- ✅ Progress tracking with Rich console output
|
|
685
|
+
- ✅ Detailed error messages and summary reports
|
|
686
|
+
- ✅ Sequential POST requests (no native bulk endpoint available)
|
|
687
|
+
|
|
688
|
+
**CSV Format Example:**
|
|
689
|
+
```csv
|
|
690
|
+
name,description,status,acronym,owner_id,resource_name,resource_url
|
|
691
|
+
Customer Acquisition Cost,Cost to acquire new customer,Draft,CAC,<guid>,Metrics Guide,https://docs.example.com
|
|
692
|
+
Monthly Recurring Revenue,Predictable monthly revenue,Draft,MRR,<guid>,Finance Dashboard,https://finance.example.com
|
|
693
|
+
```
|
|
539
694
|
|
|
540
|
-
|
|
541
|
-
|
|
695
|
+
**JSON Format Example:**
|
|
696
|
+
```json
|
|
697
|
+
{
|
|
698
|
+
"terms": [
|
|
699
|
+
{
|
|
700
|
+
"name": "Data Lake",
|
|
701
|
+
"description": "Centralized repository for structured/unstructured data",
|
|
702
|
+
"domain_id": "your-domain-id-here",
|
|
703
|
+
"status": "Draft",
|
|
704
|
+
"acronyms": ["DL"],
|
|
705
|
+
"owner_ids": ["<entra-id-object-id-guid>"],
|
|
706
|
+
"resources": [{"name": "Architecture Guide", "url": "https://example.com"}]
|
|
707
|
+
}
|
|
708
|
+
]
|
|
709
|
+
}
|
|
542
710
|
```
|
|
543
711
|
|
|
712
|
+
**Important Notes:**
|
|
713
|
+
- ⚠️ **Owner IDs must be Entra ID Object IDs (GUIDs)**, not email addresses
|
|
714
|
+
- ⚠️ **Terms cannot be "Published" in unpublished domains** - use "Draft" status
|
|
715
|
+
- ✅ Sample files available: `samples/csv/uc_terms_bulk_example.csv`, `samples/json/term/uc_terms_bulk_example.json`
|
|
716
|
+
- 📖 Complete documentation: [`doc/commands/unified-catalog/term-bulk-import.md`](doc/commands/unified-catalog/term-bulk-import.md)
|
|
717
|
+
|
|
718
|
+
**🗑️ Bulk Delete (NEW)**
|
|
719
|
+
|
|
720
|
+
Delete all terms in a domain using PowerShell or Python scripts:
|
|
721
|
+
|
|
722
|
+
```powershell
|
|
723
|
+
# PowerShell - Delete all terms with confirmation
|
|
724
|
+
.\scripts\delete-all-uc-terms.ps1 -DomainId "abc-123"
|
|
725
|
+
|
|
726
|
+
# PowerShell - Delete without confirmation
|
|
727
|
+
.\scripts\delete-all-uc-terms.ps1 -DomainId "abc-123" -Force
|
|
728
|
+
```
|
|
729
|
+
|
|
730
|
+
```bash
|
|
731
|
+
# Python - Delete all terms with confirmation
|
|
732
|
+
python scripts/delete_all_uc_terms_v2.py --domain-id "abc-123"
|
|
733
|
+
|
|
734
|
+
# Python - Delete without confirmation
|
|
735
|
+
python scripts/delete_all_uc_terms_v2.py --domain-id "abc-123" --force
|
|
736
|
+
```
|
|
737
|
+
|
|
738
|
+
**Bulk Delete Features:**
|
|
739
|
+
- ✅ Interactive confirmation prompts (type "DELETE" to confirm)
|
|
740
|
+
- ✅ Beautiful progress display with colors
|
|
741
|
+
- ✅ Success/failure tracking per term
|
|
742
|
+
- ✅ Detailed summary reports
|
|
743
|
+
- ✅ Rate limiting (200ms delay between deletes)
|
|
744
|
+
- ✅ Graceful error handling and Ctrl+C support
|
|
745
|
+
|
|
544
746
|
#### 📦 **Data Products Management**
|
|
545
747
|
|
|
546
748
|
```bash
|
|
@@ -877,12 +1079,130 @@ If you need a feature that is not yet implemented, please open an issue or check
|
|
|
877
1079
|
|
|
878
1080
|
---
|
|
879
1081
|
|
|
1082
|
+
## Sample Files & Scripts
|
|
1083
|
+
|
|
1084
|
+
PVW CLI includes comprehensive sample files and scripts for bulk operations:
|
|
1085
|
+
|
|
1086
|
+
### Bulk Import Samples
|
|
1087
|
+
|
|
1088
|
+
- **CSV Samples:** `samples/csv/uc_terms_bulk_example.csv` (8 sample terms)
|
|
1089
|
+
- **JSON Samples:**
|
|
1090
|
+
- `samples/json/term/uc_terms_bulk_example.json` (8 data management terms)
|
|
1091
|
+
- `samples/json/term/uc_terms_sample.json` (8 business terms)
|
|
1092
|
+
|
|
1093
|
+
### Bulk Delete Scripts
|
|
1094
|
+
|
|
1095
|
+
- **PowerShell:** `scripts/delete-all-uc-terms.ps1` - Full-featured with confirmation prompts
|
|
1096
|
+
- **Python:** `scripts/delete_all_uc_terms_v2.py` - Rich progress bars and error handling
|
|
1097
|
+
|
|
1098
|
+
### Test Scripts
|
|
1099
|
+
|
|
1100
|
+
- **PowerShell:** `scripts/test-json-output.ps1` - Validates JSON output parsing
|
|
1101
|
+
|
|
1102
|
+
### Jupyter Notebooks
|
|
1103
|
+
|
|
1104
|
+
- `samples/notebooks (plus)/unified_catalog_terms_examples.ipynb` - Complete examples including:
|
|
1105
|
+
- Examples 10-16: Bulk import demonstrations
|
|
1106
|
+
- Code generation for CSV/JSON files
|
|
1107
|
+
- Dry-run and actual import examples
|
|
1108
|
+
- Term verification workflows
|
|
1109
|
+
|
|
1110
|
+
---
|
|
1111
|
+
|
|
1112
|
+
## Documentation
|
|
1113
|
+
|
|
1114
|
+
### Core Documentation
|
|
1115
|
+
|
|
1116
|
+
- **Main Documentation:** [`doc/README.md`](doc/README.md)
|
|
1117
|
+
- **Unified Catalog:** [`doc/commands/unified-catalog.md`](doc/commands/unified-catalog.md)
|
|
1118
|
+
- **Bulk Import Guide:** [`doc/commands/unified-catalog/term-bulk-import.md`](doc/commands/unified-catalog/term-bulk-import.md)
|
|
1119
|
+
- **Data Products:** [`doc/commands/data-product.md`](doc/commands/data-product.md)
|
|
1120
|
+
|
|
1121
|
+
### Quick Reference
|
|
1122
|
+
|
|
1123
|
+
- **API Coverage:** All major Purview APIs including Unified Catalog, Data Map, Discovery, Collections
|
|
1124
|
+
- **Authentication:** Azure CLI, Service Principal, Managed Identity support
|
|
1125
|
+
- **Output Formats:** Table (default), JSON (plain), JSONC (colored)
|
|
1126
|
+
- **Bulk Operations:** Import/export terms from CSV/JSON, bulk delete scripts
|
|
1127
|
+
|
|
1128
|
+
---
|
|
1129
|
+
|
|
1130
|
+
## Recent Updates (October 2025)
|
|
1131
|
+
|
|
1132
|
+
### ✅ Bulk Term Import/Export
|
|
1133
|
+
- Import multiple terms from CSV or JSON files
|
|
1134
|
+
- Dry-run mode for validation before import
|
|
1135
|
+
- Support for owners (Entra ID GUIDs), acronyms, resources
|
|
1136
|
+
- Progress tracking and detailed error reporting
|
|
1137
|
+
- 100% success rate in testing (8/8 terms)
|
|
1138
|
+
|
|
1139
|
+
### ✅ PowerShell & Scripting Integration
|
|
1140
|
+
- New `--output` parameter with table/json/jsonc formats
|
|
1141
|
+
- Plain JSON works with PowerShell's `ConvertFrom-Json`
|
|
1142
|
+
- Compatible with jq, Python json module, and other tools
|
|
1143
|
+
- Migration from deprecated `--json` flag
|
|
1144
|
+
|
|
1145
|
+
### ✅ Bulk Delete Scripts
|
|
1146
|
+
- PowerShell script with interactive confirmation ("DELETE" to confirm)
|
|
1147
|
+
- Python script with Rich progress bars
|
|
1148
|
+
- Beautiful UI with colored output
|
|
1149
|
+
- Success/failure tracking per term
|
|
1150
|
+
- Rate limiting (200ms delay)
|
|
1151
|
+
|
|
1152
|
+
### ✅ Critical Fixes
|
|
1153
|
+
- **Owner ID Format:** Must use Entra ID Object IDs (GUIDs), not email addresses
|
|
1154
|
+
- **Domain Status:** Terms cannot be "Published" in unpublished domains - use "Draft"
|
|
1155
|
+
- **Error Validation:** Enhanced error handling shows actual API responses
|
|
1156
|
+
|
|
1157
|
+
---
|
|
1158
|
+
|
|
1159
|
+
## Key Features Summary
|
|
1160
|
+
|
|
1161
|
+
### 🚀 **Unified Catalog (UC) - Complete Management**
|
|
1162
|
+
- Governance domains, glossary terms, data products
|
|
1163
|
+
- Objectives & Key Results (OKRs), Critical Data Elements (CDEs)
|
|
1164
|
+
- Health monitoring and workflow automation
|
|
1165
|
+
- Full CRUD operations with smart partial updates
|
|
1166
|
+
|
|
1167
|
+
### 📦 **Bulk Operations**
|
|
1168
|
+
- CSV/JSON import with dry-run validation
|
|
1169
|
+
- PowerShell and Python bulk delete scripts
|
|
1170
|
+
- Progress tracking and error handling
|
|
1171
|
+
- Sample files and templates included
|
|
1172
|
+
|
|
1173
|
+
### 📊 **Multiple Output Formats**
|
|
1174
|
+
- Table format for human viewing (default)
|
|
1175
|
+
- Plain JSON for PowerShell/bash scripting
|
|
1176
|
+
- Colored JSON for visual inspection
|
|
1177
|
+
|
|
1178
|
+
### 🔧 **Automation & Integration**
|
|
1179
|
+
- Azure CLI, Service Principal, Managed Identity auth
|
|
1180
|
+
- Works in local development, CI/CD, and production
|
|
1181
|
+
- Compatible with PowerShell, bash, Python, jq
|
|
1182
|
+
|
|
1183
|
+
### 📚 **Comprehensive Documentation**
|
|
1184
|
+
- Complete API coverage documentation
|
|
1185
|
+
- Jupyter notebook examples
|
|
1186
|
+
- Troubleshooting guides
|
|
1187
|
+
- Sample files and templates
|
|
1188
|
+
|
|
1189
|
+
---
|
|
1190
|
+
|
|
880
1191
|
## Contributing & Support
|
|
881
1192
|
|
|
882
|
-
- [Documentation](https://github.com/Keayoub/Purview_cli/blob/main/doc/README.md)
|
|
883
|
-
-
|
|
884
|
-
-
|
|
1193
|
+
- **Documentation:** [Full Documentation](https://github.com/Keayoub/Purview_cli/blob/main/doc/README.md)
|
|
1194
|
+
- **Issue Tracker:** [GitHub Issues](https://github.com/Keayoub/Purview_cli/issues)
|
|
1195
|
+
- **Email Support:** [keayoub@msn.com](mailto:keayoub@msn.com)
|
|
1196
|
+
- **Repository:** [GitHub - Keayoub/Purview_cli](https://github.com/Keayoub/Purview_cli)
|
|
1197
|
+
|
|
1198
|
+
---
|
|
1199
|
+
|
|
1200
|
+
## License
|
|
1201
|
+
|
|
1202
|
+
See [LICENSE](LICENSE) file for details.
|
|
885
1203
|
|
|
886
1204
|
---
|
|
887
1205
|
|
|
888
|
-
**PVW CLI empowers data engineers, stewards, and architects to automate, scale, and enhance their Microsoft Purview experience with powerful command-line and programmatic capabilities.**
|
|
1206
|
+
**PVW CLI v1.2.0 empowers data engineers, stewards, and architects to automate, scale, and enhance their Microsoft Purview experience with powerful command-line and programmatic capabilities.**
|
|
1207
|
+
|
|
1208
|
+
**Latest Features:** Bulk term import/export, PowerShell integration, multiple output formats, and comprehensive bulk delete scripts with beautiful progress tracking.
|