/db2whrest/v1/report: POST
Crée une définition de rapport de curation et l'exécute immédiatement.
| Administrateur de données | Utilisateur de données | Administrateur de collection | Administrateur | Utilisateur de maintenance |
|---|---|---|---|---|
| ✓ | Χ | Χ | Χ | Χ |
Résumé de la demande URL
curl -k -H 'Authorization: Bearer <token>' https://<data_cataloging_host>/db2whrest/v1/report -X POST -d@report.json -H "Content-Type: application/json"
/db2whrest/v1/search et possède également un paramètre name :- requête
- Indique une chaîne de requête de recherche.
- filtres
- Indique un tableau de dictionnaires qui filtrent les résultats de la requête. Chaque dictionnaire doit contenir les trois zones suivantes:
- clé
- Nom de la zone ou de la colonne à renvoyer.
- opérateur
- L'un des opérateurs suivants:
=, >, <, <>, <=, >=, is, like. - valeur
- Valeur de la zone ou de la colonne à filtrer.
- groupe_par
- Indique une liste de zones à utiliser pour récapituler les résultats de la recherche. Les requêtes groupées renvoient des colonnes de sortie pour le comptage et la somme, tandis que les requêtes non groupées renvoient toutes les colonnes pour chaque ligne. Si la zone
group_byn'est pas spécifiée, la recherche renvoie des informations de niveau enregistrement. - sort_by
- Indique un tableau d'objets dictionnaire. Chaque objet dictionnaire doit spécifier un nom de zone ou de colonne à trier et une direction de tri. Les directions de tri valides sont asc et desc.
- limite
- Indique le nombre maximal de lignes pouvant être renvoyées par la réponse.
- nom
- Indique un nom pour le fichier de sortie de rapport. Si ce paramètre n'est pas spécifié, le noeud final utilise l'identificateur unique universel généré de manière aléatoire comme base de nom de fichier.
{
"name": "Unassigned Project Report",
"query": "platform='Spectrum Scale'",
"filters": [
{
"key": "project",
"operator": "is",
"value": "null"
}
],
"group_by": ["Filesystem","Owner","Site"],
"sort_by": [{"Filesystem": "asc"},{"Owner": "asc"}],
"limit": 100000
}
Types de demande et formats de réponse pris en charge
- POST
- JavaScript Object Notation
Codes de statut
- 201
- L'opération s'est terminée avec succès.
- Toutes les autres valeurs de code de statut
- L'opération a échoué.
- 201: L'opération a abouti.
- Toutes les autres valeurs de code de statut: l'opération a échoué.
Exemples
- L'exemple suivant montre comment créer un rapport:
- Etape 1: définissez les paramètres de recherche dans un fichier nommé report.json:
{ "name": "Unassigned Project Report", "query": "platform='Spectrum Scale'", "filters": [ { "key": "project", "operator": "is", "value": "null" } ], "group_by": ["Filesystem","Owner","Site"], "sort_by": [{"Filesystem": "asc"},{"Owner": "asc"}], "limit": 100000 } - Etape 2: Soumettez la demande suivante:
curl -k -H 'Authorization: Bearer <token>' https://<data_cataloging_host>/db2whrest/v1/report -X POST -d@report.json -H "Content-Type: application/json"
- Etape 1: définissez les paramètres de recherche dans un fichier nommé report.json:
- La réponse inclut l'ID du nouveau rapport et le statut de l'opération ("rapport créé"):
{"report": "b5ff3126-353d-4d7d-857a-750cc20b8bab", "status": "report created"}
Scripts de rapport
- Exemples JSON
L'exemple suivant répertorie les fichiers ou les objets auxquels vous avez accédé au cours des derniers 0 à 30 jours. Ce rapport est créé dans l'interface utilisateur.
age_report_0-30_days_since_access_detail.json{ "name": "Age Report Detail. 0-30 Days", "query": "", "filters": [ { "key": "atime", "operator": ">", "value": "NOW() - 30 DAYS" } ], "group_by": [], "sort_by": [] }Cet exemple récapitule les fichiers ou les objets auxquels on accède au cours des 0 à 30 derniers jours et qui sont regroupés par source de données. Ce rapport est créé dans l'interface utilisateur.
age_report_0-30_days_since_access_summary.json{ "name": "Age Report Summary. 0-30 Days", "query": "", "filters": [ { "key": "atime", "operator": ">", "value": "NOW() - 30 DAYS" } ], "group_by": ["datasource"], "sort_by": [{"datasource": "asc"}] }Cet exemple répertorie les fichiers ou les objets accessibles au cours des 30 à 60 derniers jours. Ce rapport est créé dans l'interface utilisateur.
age_report_30-60_days_since_access_detail.json{ "name": "Age Report Detail. 30-60 Days", "query": "", "filters": [ { "key": "atime", "operator": "<=", "value": "NOW() - 30 DAYS" }, { "key": "atime", "operator": ">", "value": "NOW() - 60 DAYS" } ], "group_by": [], "sort_by": [] }Cet exemple récapitule les fichiers ou les objets consultés au cours des 30 à 60 derniers jours et regroupés par source de données. Ce rapport est créé dans l'interface utilisateur.
age_report_30-60_days_since_access_summary.json{ "name": "Age Report Summary. 30-60 Days", "query": "", "filters": [ { "key": "atime", "operator": "<=", "value": "NOW() - 30 DAYS" }, { "key": "atime", "operator": ">", "value": "NOW() - 60 DAYS" } ], "group_by": ["datasource"], "sort_by": [{"datasource": "asc"}] }Cet exemple répertorie les fichiers ou les objets auxquels on accède au cours des 60 à 90 derniers jours. Ce rapport est créé dans l'interface utilisateur.
age_report_60-90_days_since_access_detail.json{ "name": "Age Report Detail. 60-90 Days", "query": "", "filters": [ { "key": "atime", "operator": "<=", "value": "NOW() - 60 DAYS" }, { "key": "atime", "operator": ">", "value": "NOW() - 90 DAYS" } ], "group_by": [], "sort_by": [] }L'exemple suivant récapitule les fichiers ou les objets auxquels on accède au cours des 60 à 90 derniers jours et qui sont regroupés par source de données. Ce rapport est créé dans l'interface utilisateur.
age_report_60-90_days_since_access_summary.json{ "name": "Age Report Summary. 60-90 Days", "query": "", "filters": [ { "key": "atime", "operator": "<=", "value": "NOW() - 60 DAYS" }, { "key": "atime", "operator": ">", "value": "NOW() - 90 DAYS" } ], "group_by": ["datasource"], "sort_by": [{"datasource": "asc"}] }L'exemple suivant répertorie les fichiers ou les objets auxquels vous avez accédé au cours des 90 à 180 derniers jours. Ce rapport est créé dans l'interface utilisateur.
age_report_90-180_days_since_access_detail.json{ "name": "Age Report Detail. 90-180 Days", "query": "", "filters": [ { "key": "atime", "operator": "<=", "value": "NOW() - 90 DAYS" }, { "key": "atime", "operator": ">", "value": "NOW() - 180 DAYS" } ], "group_by": [], "sort_by": [] }L'exemple suivant récapitule les fichiers ou les objets auxquels on accède au cours des 90 à 180 derniers jours et qui sont regroupés par source de données. Ce rapport est créé dans l'interface utilisateur.
age_report_90-180_days_since_access_summary.json{ "name": "Age Report Summary. 90-180 Days", "query": "", "filters": [ { "key": "atime", "operator": "<=", "value": "NOW() - 90 DAYS" }, { "key": "atime", "operator": ">", "value": "NOW() - 180 DAYS" } ], "group_by": ["datasource"], "sort_by": [{"datasource": "asc"}] }L'exemple suivant répertorie les fichiers ou les objets accessibles au cours des 180 à 360 derniers jours. Ce rapport est créé dans l'interface utilisateur.
age_report_180-360_days_since_access_detail.json{ "name": "Age Report Detail. 180-360 Days", "query": "", "filters": [ { "key": "atime", "operator": "<=", "value": "NOW() - 180 DAYS" }, { "key": "atime", "operator": ">", "value": "NOW() - 360 DAYS" } ], "group_by": [], "sort_by": [] }L'exemple suivant récapitule les fichiers ou les objets auxquels on accède au cours des 180 à 360 derniers jours et qui sont regroupés par source de données. Ce rapport est créé dans l'interface utilisateur.
age_report_180-360_days_since_access_summary.json{ "name": "Age Report Summary. 180-360 Days", "query": "", "filters": [ { "key": "atime", "operator": "<=", "value": "NOW() - 180 DAYS" }, { "key": "atime", "operator": ">", "value": "NOW() - 360 DAYS" } ], "group_by": ["datasource"], "sort_by": [{"datasource": "asc"}] }L'exemple suivant répertorie les fichiers ou les objets auxquels on accède au cours des 360 à 720 derniers jours. Ce rapport est créé dans l'interface utilisateur.
age_report_360-720_days_since_access_detail.json{ "name": "Age Report Detail. 360-720 Days", "query": "", "filters": [ { "key": "atime", "operator": "<=", "value": "NOW() - 360 DAYS" }, { "key": "atime", "operator": ">", "value": "NOW() - 720 DAYS" } ], "group_by": [], "sort_by": [] }L'exemple suivant récapitule les fichiers ou les objets auxquels on accède au cours des 360 à 720 derniers jours et qui sont regroupés par source de données. Ce rapport est créé dans l'interface utilisateur.
age_report_360-720_days_since_access_summary.json{ "name": "Age Report Summary. 360-720 Days", "query": "", "filters": [ { "key": "atime", "operator": "<=", "value": "NOW() - 360 DAYS" }, { "key": "atime", "operator": ">", "value": "NOW() - 720 DAYS" } ], "group_by": ["datasource"], "sort_by": [{"datasource": "asc"}] }L'exemple suivant répertorie les fichiers ou objets consultés qui n'ont pas été consultés au cours des 720 derniers jours. Ce rapport est créé dans l'interface utilisateur.
age_report_720+_days_since_access_detail.json{ "name": "Age Report Detail. 720+ Days", "query": "", "filters": [ { "key": "atime", "operator": "<=", "value": "NOW() - 720 DAYS" } ], "group_by": [], "sort_by": [] }L'exemple suivant récapitule les fichiers ou les objets auxquels on accède au cours des 720 derniers jours et qui sont regroupés par source de données. Ce rapport est créé dans l'interface utilisateur.
age_report_720+_days_since_access_summary.json{ "name": "Age Report Summary. 720+ Days", "query": "", "filters": [ { "key": "atime", "operator": "<=", "value": "NOW() - 720 DAYS" } ], "group_by": ["datasource"], "sort_by": [{"datasource": "asc"}] }
- Scripts SQL
Ce script fournit le nombre de fichiers potentiellement en double dans l'environnement hétérogène. Ce rapport n'est pas créé dans l'interface utilisateur.
duplicate_files_by_count.sqlselect filename, size, count(fkey) from metaocean group by filename, size order by count(fkey) desc limit 20;Ce script fournit la taille des fichiers potentiellement en double dans l'environnement hétérogène. Ce rapport n'est pas créé dans l'interface utilisateur.
duplicate_files_by_total_size.sqlselect filename,entrysize,entrycount,totalsize from (select filename, size as entrysize, count(fkey) as entrycount, count(fkey)*size as TotalSize from metaocean group by filename,size) where entrycount>1 order by totalsize desc;Ce script fournit la taille des fichiers potentiellement en double dans l'environnement hétérogène. Ce rapport n'est pas créé dans l'interface utilisateur.
size_snap.sqlselect datasource,count(*),sum(size)/1024/1024/1024,max(mtime),max(atime) from metaocean group by datasource with urCe script fournit une vue de la capacité consommée par collection. Ce rapport n'est pas créé dans l'interface utilisateur.
space_per_collection.sqlselect metaocean.collection,count(*),sum(size)/1024/1024/1024,max(mtime),datasource, tier from metaocean group by metaocean.collection,datasource,tier order by max(mtime) desc with urCe script fournit une vue de la capacité consommée par type de fichier. Ce rapport n'est pas créé dans l'interface utilisateur.
space_per_filetype.sqlselect filetype,datasource,tier,count(*),sum(size)/1024/1024/1024 from metaocean group by filetype,datasource,tier order by filetype,datasource,tier desc with urCe script fournit une vue de la capacité consommée par utilisateur. Ce rapport n'est pas créé dans l'interface utilisateur.
space_per_user.sqlselect owner,tier,count(*),sum(size)/1024/1024/1024,max(mtime),max(atime) from metaocean group by owner,tier order by owner,tier with ur
- /opt/ibm/metaocean/reports/generate_report.pyPour exécuter les utilitaires, connectez-vous à un nœud de catalogage de données IBM et exécutez generate_report.py avec l'utilisation suivante :
python generate_report.py [-h] [-o filename] -u username [infile]- Exécutez un rapport avec un fichier d'entrée SQL:
python generate_report.py -u sdadmin -o report.csv sql/space_per_user.sql Enter password for SD user 'sdadmin': - Exécutez un rapport avec un fichier d'entrée JSON:
python generate_report.py -u sdadmin sql/age_report_0-30_days_since_access_detail.json Enter password for SD user 'sdadmin':
Il faut pour cela disposer d'un nom d'utilisateur et d'un fichier d'entrée pour IBM Data Cataloging. Vous devez disposer du rôle Administrateur de données pour générer des rapports. L'outil vous invite à entrer un mot de passe
Les exemples de fichier d'entrée sont stockés dans le répertoire /opt/ibm/metaocean/reports/sql . Il existe une combinaison de fichiers JSON et SQL dans le répertoire. Tous les fichiers JSON créent un rapport dans l'interface utilisateur de catalogage de données IBM. Les fichiers SQL créent un fichier CSV.
- Exécutez un rapport avec un fichier d'entrée SQL:
- /opt/ibm/metaocean/reports/generate_path_age_report.pyImportant : cet outil ne permet pas de créer des rapports dans l'interface utilisateur de catalogage de données IBM.Voici l'utilisation de l'outil:
generate_path_age_report.py [-h] -u username -r report -p pathlevel -a archive optional arguments: -h, --help show this help message and exit -u username, --user username User name with authority to create reports -r report, --report report The report type to be generated (ARDS, ARDSOW, AROW, ARPL, CPPL, FTMB, CPFT, FTMB50) -p pathlevel, --pathlevel pathlevel The level of path used in some reports -a archive, --archive archive The archive threshold in monthsL'outilgenerate_path_age_report.pya besoin d'au moins trois paramètres:pathlevelNiveau de chemin utilisé dans certains rapports, par exemple:
Si votre rapport n'utilise pas ce paramètre, la valeur 1 doit être utilisée.1 = /x/, 2=/x/y/archiveLe seuil d'archivage correspond au nombre de mois écoulés depuis la dernière fois qu'un fichier est considéré comme pertinent pour l'archivage à des fins de génération de rapports. Si votre rapport n'utilise pas ce paramètre, la valeur 1 doit être utilisée.
reportLe type de rapport est l'un des codes suivants:ARDS = Summary of archivable capacity grouped by datasource ARDSOW = Summary of archivable capacity grouped by datasource AROW = Summary of archivable capacity grouped by owner ARPL = Summary of archivable capacity grouped by specified path level CPPL = Summary of capacity grouped by specified path level FTMB = Summary of filetype usage by month, previous 12 months CPFT = Summary of capacity grouped by filetype FTMB50 = Summary of filetype usage by month, previous 12 months' top 50 filetypes
generate_path_age_report.py :python generate_path_age_report.py -u sdadmin -r ARDSOW -p 2 -a 12
Starting to create report type 'ARDSOW' for user: sdadmin
Enter password for SD user 'sdadmin':
Setting up path level summary table
Generating path level summary table
Generating path level summary table complete.
Generating report
Generating report - building temporary table.
Generating report - querying temporary table.
Generating report - writing output file.
Report generated successfully. Results are in 'rpt_ar_ds_ow.csv'.