The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Quiq::Database::DataAnalysis - Führe Datenanalyse durch

BASE CLASS

Quiq::Hash

DESCRIPTION

Führe eine Analyse auf den Daten einer Relation (Tabelle oder View) oder eines SQL-Statements durch, das Daten liefert (üblicherweise ein SELECT-Statement). Das Analyseergebnis kann mit den Methoden der Klasse ausgegeben werden.

METHODS

Konstruktor

new() - Führe Datenanalyse durch

Synopsis

    $obj = $class->new($db,@select,@opt);

Arguments

$db

Datenbankverbindung

@select

Name einer Relation oder Komponenten eines SELECT-Statements. Siehe Quiq::Sql->select().

Options

-cache => $n (Default: Kein Caching)

Siehe Quiq::Database::Connection/sql().

-enumLimit => $n (Default: 10)

Bis zu dieser Anzahl an unterschiedlichen Werten werden diese einzelnen Werte in der Kolumne "DISTINCT <column>" aufgezählt.

-valLenLimit => $n (Default: 30)

Bis zu dieser Länge werden die Werte der Kolumnen "MIN(<column>)" und "MAX(<column>)" angezeigt. Längere Werte werden auf die Länge $n-3 gekürzt und um drei Punkte (...) ergänzt.

Returns

$obj

Objekt mit dem Ergebnis der Datenanalyse.

Description

Führe eine Datenanalyse für Datenquelle @select (Tabelle, View, Statement) durch und liefere ein Objekt, das das Analyseergebnis repräsentiert, zurück. Folgende Information wird für alle Kolumnen der Datenquelle ermittelt:

    COUNT(DISTINCT <column>) - Anzahl der verschiedenen Werte
    COUNT(<column>)          - Anzahl der Werte, die nicht NULL sind
    MIN(LENGTH(<column>))    - Länge des kürzesten Werts
    MAX(LENGTH(<column>))    - Länge des längsten Werts
    MIN(<column>)            - Kleinster Wert (gemäß Datentyp)
    MAX(<column>)            - Größter Wert (gemäß Datentyp)

Ferner wird ermittelt:

    COUNT(1)                 - Anzahl aller Zeilen der Datenquelle

Das Ergebnis der Analyse kann mit der Methode $obj->asTable() ausgegeben werden.

Example

Datenanalyse einer Tabelle q06i001, die Ergebnismenge wird einen Tag gecacht:

    print Quiq::Database::DataAnalysis->new($db,'q06i001',-cache=>86400)->asTable;
    __END__
    q06i001
    
    30.088.616 rows
    
    1 <column>
    2 COUNT(DISTINCT <column>)
    3 COUNT(<column>)
    4 MIN(LENGTH(<column>))
    5 MAX(LENGTH(<column>))
    6 MIN(<column>)
    7 MAX(<column>)
    8 DISTINCT <column>
    
    1                2            3            4    5    6                          7                           8
    | fid            |        101 | 30.088.616 |  1 |  3 | 0                        | 808                       |                    |
    | ag             |          5 | 30.088.616 |  2 |  2 | 25                       | 29                        | 25, 26, 27, 28, 29 |
    | kdnr           |  2.805.719 | 30.088.616 |  9 |  9 | 111111200                | 900002009                 |                    |
    | vsnr           |  2.971.673 | 30.088.616 |  6 |  9 | 230243                   | 999999999                 |                    |
    | lfd_nr         |        439 | 30.088.616 |  1 |  3 | 1                        | 439                       |                    |
    | com_dat        |          1 | 30.088.616 |  1 |  1 | 0                        | 0                         | 0                  |
    | wirk_dat       |     12.553 | 30.088.616 |  7 |  7 | 1000101                  | 2190731                   |                    |
    | vwnd_kz        |          1 | 30.088.616 |  1 |  1 | 0                        | 0                         | 0                  |
    | cur_dat        |      8.408 | 30.088.616 |  1 |  7 | 0                        | 2190418                   |                    |
    | va             |         18 | 30.088.616 |  1 |  2 | 0                        | 99                        |                    |
    | nf             |     11.855 | 30.088.616 |  1 |  7 | 0                        | 2990101                   |                    |
    | sost_kz        |          3 | 30.088.616 |  1 |  1 | 0                        | 2                         | 0, 1, 2            |
    | stor_dat       |     12.762 | 30.088.616 |  1 |  7 | 0                        | 2990101                   |                    |
    | berech_ab      |     11.950 | 30.088.616 |  1 |  7 | 0                        | 2190630                   |                    |
    | ges_beitr_brt  |    543.939 | 30.088.616 |  4 | 11 | -1717145.01              | 9944894.74                |                    |
    | fpr_stop_kz    |          4 | 30.088.616 |  0 |  1 |                          | 3                         | '', 1, 2, 3        |
    | umstlg_kz      |          3 | 30.088.616 |  1 |  1 | 0                        | 2                         | 0, 1, 2            |
    | masch_aend_grd |         25 | 30.088.616 |  1 |  2 | 0                        | 99                        |                    |
    | nnr            |      1.093 | 30.088.616 |  1 |  4 | 0                        | 9998                      |                    |
    | lfd_tp_nr      |        277 | 30.088.616 |  1 |  3 | 1                        | 277                       |                    |
    | lg_zt          | 30.088.616 | 30.088.616 | 24 | 24 | 060508000100001000000033 | 190418160157999000007760  |                    |
    | tech_ab        |     12.553 | 30.088.616 | 10 | 10 | 1900-01-01               | 2019-07-31                |                    |
    | tech_bis       |     12.293 | 30.088.616 | 10 | 10 | 1900-01-01               | 9999-12-31                |                    |
    | upd_dat        |      5.572 | 30.088.616 | 19 | 26 | 2006-05-10 08:13:11      | 2019-04-19 00:02:05.66096 |                    |
    
    24 columns

Objektmethoden

asTable() - Analyseergebnis als Tabelle

Synopsis

    $str = $obj->asTable;

VERSION

1.150

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2019 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.