File Coverage

blib/lib/CLI/Table/Key/Finder.pm
Criterion Covered Total %
statement 8 8 100.0
branch n/a
condition n/a
subroutine 3 3 100.0
pod n/a
total 11 11 100.0


line stmt bran cond sub pod time code
1             package CLI::Table::Key::Finder;
2              
3 1     1   46843 use 5.006;
  1         3  
4 1     1   4 use strict;
  1         1  
  1         14  
5 1     1   12 use warnings;
  1         2  
  1         43  
6              
7             =head1 NAME
8              
9             CLI::Table::Key::Finder - These CLIs help you to find key column(s) of a table, as fast as possible, hopefully.
10              
11             =head1 VERSION
12              
13             Version 0.31
14              
15             =cut
16              
17             our $VERSION = '0.31';
18              
19              
20             =head1 SYNOPSIS
21              
22             Followings are CLI (command line interfaces) commands.
23              
24             alluniq -- To check evely lines has different values ; if not it ouputs how the multiple-ness occurs.
25             colpairs -- (Not matured) Shows N x N matrics to see how many different values appear on every pair of N columns.
26             colsummary -- Quickly (but not so computationally fast) shows the summary of every column of a table. Useful.
27             csel -- the columns selector like AWK/cut in a simpler way.
28             freq -- 1-way contingency table of values separated by line ends. A frequency table is ouput with many options.
29             keyvalues -- How many different values each key column value has?
30             piececount -- How many lines that have the specified pattern?
31             wisejoin -- a wiser command than Unix-join. It is like SQL-join. You can combiner another table to refer to.
32              
33             If you are given a table, you may want to check :
34             - whether the table has lines which shares completely same value,
35             - whether it has a meaningful a key column to be refered to,
36             - whether it has a meaningful key columns if not it does not have a key columns,
37             - the minimum number of combination of column(s) to distinguish all the records of the table,
38             - whether the column which seems to have all number values really has only numbers..
39              
40             The above commands would greatly help you on such questions.
41              
42             One scenario :
43              
44             1. Use `colsummary' to see all the statistics of each column by one-shot command.
45             2. If you cannot find any key column, use `colpairs' to try to find the key-pairs which distinguished all the recoods.
46             3. In case you cannot find such key-pairs, `csel -d X table | alluniq` changing X from 1 to N give you hints to
47             identify the neccessary columns to dinstinguish all the records.
48             4. You would use `piececount` to check the format of key column values.
49             5. `freq' and `keyvalues' is helpful to check the "disinguishability"-ness of columns.
50             6. Sometimes (actually potentially everytime), you like to "join" tables. `wisejoin' is helpful.
51              
52             Note:
53             Some of 8 commands has long history to be used by the authors hands but the others are not. So it is
54             vulnerable to change the function of such commands easily.
55              
56             =cut
57              
58              
59             =head1 AUTHOR
60              
61             "Toshiyuki Shimono", C<< >>
62              
63              
64             =head1 SUPPORT
65              
66             You can find documentation for this module with the perldoc command.
67              
68             perldoc CLI::Table::Key::Finder
69              
70              
71             =head1 ACKNOWLEDGEMENTS
72              
73              
74             =head1 LICENSE AND COPYRIGHT
75              
76             Copyright 2018 "Toshiyuki Shimono".
77              
78             This program is free software: you can redistribute it and/or modify
79             it under the terms of the GNU General Public License as published by
80             the Free Software Foundation, either version 3 of the License, or
81             (at your option) any later version.
82              
83             This program is distributed in the hope that it will be useful,
84             but WITHOUT ANY WARRANTY; without even the implied warranty of
85             MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
86             GNU General Public License for more details.
87              
88             You should have received a copy of the GNU General Public License
89             along with this program. If not, see L.
90              
91              
92             =cut
93              
94             1; # End of CLI::Table::Key::Finder