Carter Shanklin created HIVE-16937:
--------------------------------------

             Summary: INFORMATION_SCHEMA usability: everything is currently a 
string
                 Key: HIVE-16937
                 URL: https://issues.apache.org/jira/browse/HIVE-16937
             Project: Hive
          Issue Type: Bug
    Affects Versions: 3.0.0
            Reporter: Carter Shanklin


HIVE-1010 adds an information schema to Hive, also taking the opportunity to 
expose some non-standard but valuable things like statistics in a SYS table.

A challenge I have noted with the SYS table is that all statistic counts are 
exposed as string types rather than numerics.

{code}
hive> show create table sys.tab_col_stats;
OK
CREATE TABLE `sys.tab_col_stats`(
  `cs_id` string COMMENT 'from deserializer',
  `db_name` string COMMENT 'from deserializer',
  `table_name` string COMMENT 'from deserializer',
  `column_name` string COMMENT 'from deserializer',
  `column_type` string COMMENT 'from deserializer',
  `tbl_id` string COMMENT 'from deserializer',
  `long_low_value` string COMMENT 'from deserializer',
  `long_high_value` string COMMENT 'from deserializer',
  `double_high_value` string COMMENT 'from deserializer',
  `double_low_value` string COMMENT 'from deserializer',
  `big_decimal_low_value` string COMMENT 'from deserializer',
  `big_decimal_high_value` string COMMENT 'from deserializer',
  `num_nulls` string COMMENT 'from deserializer',
  `num_distincts` string COMMENT 'from deserializer',
  `avg_col_len` string COMMENT 'from deserializer',
  `max_col_len` string COMMENT 'from deserializer',
  `num_trues` string COMMENT 'from deserializer',
  `num_falses` string COMMENT 'from deserializer',
  `last_analyzed` string COMMENT 'from deserializer')
ROW FORMAT SERDE
  'org.apache.hive.storage.jdbc.JdbcSerDe'
STORED BY
  'org.apache.hive.storage.jdbc.JdbcStorageHandler'
{code}

So you might run this query to try and find the column(s) which have the most 
distinct values.
{code}
select
  db_name, table_name, column_name
from
  sys.tab_col_stats
where
  num_distincts = ( select max(num_distincts) from sys.tab_col_stats );
{code}

Unfortunately this maximum is based on string sorting so it's not likely what 
you really want.

It would be better to use numeric types where appropriate such as all the 
numbers in tab_col_stats, and most likely bigints should be used for stats like 
# rows, etc.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to