2017-08-22 2 views
-1

Récemment, j'explore un peu HPE Vertica. Est-il possible de trouver des statistiques récapitulatives (moyenne, sd, quartiles, max, min, comptes, etc.) à partir d'une table de données chargée en vertica? Ces deux liens; https://my.vertica.com/docs/7.0.x/HTML/Content/Authoring/SQLReferenceManual/Functions/VerticaFunctions/ANALYZE_STATISTICS.htmRecherche de résumé et de statistiques de base à partir de données dans Vertica

https://my.vertica.com/docs/7.0.x/HTML/Content/Authoring/SQLReferenceManual/Functions/VerticaFunctions/ANALYZE_HISTOGRAM.htm

disent que nous pouvons trouver des statistiques & histogramme à partir des données mais le résultat est de me faire n'a aucun sens. D'après cela, la commande ANALYZE_STATISTICS lancera un 0 pour une exécution réussie. Comme

NEWDB_aug17=> SELECT ANALYZE_STATISTICS ('MM_schema.capitalline'); 
ANALYZE_STATISTICS 
-------------------- 
        0 
(1 row) 

Ici NEWDB_aug17 est la base de données, le schéma est MM_schema sous lequel table capitalline a été inséré. Mais où sont les mesures sommaires, je veux dire les chiffres que nous recherchons réellement? Seul un 0 ne va pas servir mon but.

Pouvez-vous me guider dans ce contexte?

Répondre

2

Vertica enregistre les statistiques collectées par ANALYZE_STATISTICS() dans l'emplacement du catalogue. Ces statistiques sont utilisées par la suite pour calculer le meilleur plan d'exécution de requête.

Vous trouverez les détails statistiques dans le tableau du système v_internal.dc_analyze_statistics

[[email protected] ~]$ vsql 
dbadmin=> \x 
Expanded display is on. 
dbadmin=> select * from v_internal.dc_analyze_statistics limit 1; 
-[ RECORD 1 ]----+----------------------------------- 
time    | 2017-08-21 02:07:03.287895+00 
node_name  | v_test_node0001 
session_id  | v_test_node0001-502811:0x834a4 
user_id   | 45035996273704962 
user_name  | dbadmin 
transaction_id | 45035996307673368 
statement_id  | 9 
request_id  | 1 
table_name  | test_table 
proj_column_name | test_column 
proj_name  | test_table_sp_v11_b1 
table_oid  | 45036013037102108 
proj_column_oid | 45036013037111264 
proj_row_count | 119878353211 
disk_percent  | 10 
disk_read_rows | 11987835321 
sample_rows  | 131072 
sample_bytes  | 7602176 
start_time  | 2017-08-21 02:07:03.657377+00 
end_time   | 2017-08-21 02:07:24.799398+00 

Time: First fetch (1 row): 849.467 ms. All rows formatted: 849.594 ms 

Ou à ce chemin:

{your_catalog_location}/{db_name}/{node_name}_catalog/DataCollector/AnalyzeStatistics_*.log 
+0

Merci pour votre réponse. Mais le résultat est seulement capable de renvoyer les comptes en termes de résumé. Je ne peux pas obtenir la moyenne, sd, quartiles, min max dans une vue consolidée? Tout comme dans R, nous écrivons un résumé (df) ou en python nous écrivons df.describe() où df est mes données. –

+0

Vous ne pouvez pas l'obtenir dans Vertica sans outil tiers. – Yahel2410

0

fonction PERCENTILE_CONT de Vertica serait utile dans la récupération quartile.

create table test 
(metric_value integer); 

insert into test values(1); 
insert into test values(2); 
insert into test values(3); 
insert into test values(4); 
insert into test values(5); 
insert into test values(6); 
insert into test values(7); 
insert into test values(8); 
insert into test values(9); 
insert into test values(10); 

alter table anatest add column metric varchar(100) default 'abc'; 

select 
metric_value, 
percentile_cont(1) within group (order by metric_value) over (partition by metric) as max, 
percentile_cont(.75) within group (order by metric_value) over (partition by metric) as q3, 
percentile_cont(.5) within group (order by metric_value) over (partition by metric) as median, 
percentile_cont(.25) within group (order by metric_value) over (partition by metric) as q1, 
percentile_cont(0) within group (order by metric_value) over (partition by metric) as min 
from test ;