Skip to content
Snippets Groups Projects
importFromKairosDB.php 8.93 KiB
Newer Older
root's avatar
root committed
#!/usr/bin/php
<?php
namespace SmartData;
require_once( __DIR__ . '/../Backend.php');
require_once( __DIR__ . '/KairosGetter.php');

$time_interval = Time::MONTH;

$to_be_imported = array();

//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Domain: hydrology
//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
$_domain = 'hydro';
$_begin = strtotime("2017/01/01")*1000*1000; // from the beginning
$_end = strtotime("2018/10/01")*1000*1000;

// array_push($to_be_imported, array(
//    'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => 'h_f1_lvl', // Exutorio
//    'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Length,              374672400, -423762500, -293721000, 0, $_begin, $_end, 0)
// ));

// array_push($to_be_imported, array(
//    'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => 'h_f7_lvl', // CCJ
//    'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Length,              374642900, -423784200, -293727600, 0, $_begin, $_end, 0)
// ));

// array_push($to_be_imported, array(
//    'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => 'h_f6_lvl', // Aplicacao
//    'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Length,              374619700, -423795900, -293741100, 0, $_begin, $_end, 0)
// ));

// array_push($to_be_imported, array(
//    'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => 'h_f5_lvl', // CDS
//    'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Length,              374636700, -423757700, -293773100, 0, $_begin, $_end, 0)
// ));

// array_push($to_be_imported, array(
//    'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => 'h_fa_plu', // ESMESC
//    'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Length,              374874100, -423624800, -293662600, 0, $_begin, $_end, 0)
// ));

// array_push($to_be_imported, array(
//     'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => '000050c58075b2700490226529d4620000000000000000000000000000ffffffffffffffff', // HU01
//     'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Water_Flow,          374677500, -423772800, -293700300, 0, $_begin, $_end, 0)
// ));

// array_push($to_be_imported, array(
//     'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => '00fc7fcf9f75b2700490226529d4620000000000000000000000000000ffffffffffffffff', // HU01
//     'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Water_Flow,          374677500, -423772800, -293700300, 0, $_begin, $_end, 0)
// ));

// array_push($to_be_imported, array(
//     'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => '000050c580a7b2700490226529d4620000000000000000000000000000ffffffffffffffff', // HU02
//     'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Water_Flow,          374677600, -423772700, -293700200, 0, $_begin, $_end, 0)
// ));

// array_push($to_be_imported, array(
//     'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => '00fc7fcf9fa7b2700490226529d4620000000000000000000000000000ffffffffffffffff', // HU02
//     'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Water_Flow,          374677600, -423772700, -293700200, 0, $_begin, $_end, 0)
// ));

// array_push($to_be_imported, array(
//     'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => '00fc7fcf9f059b700424346529d4620000000000000000000000000000ffffffffffffffff', // HU03
//     'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Water_Flow,          374672600, -423773000, -293706400, 0, $_begin, $_end, 0)
// ));

// array_push($to_be_imported, array(
//     'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => '00fc7fcf9fcdb670043b526529d4620000000000000000000000000000ffffffffffffffff', // HU05
//     'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Water_Flow,          374690300, -423766300, -293692900, 0, $_begin, $_end, 0)
// ));

// array_push($to_be_imported, array(
//     'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => '00fc7fcf9f0da470043b396529d4620000000000000000000000000000ffffffffffffffff', // HU06
//     'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Water_Flow,          374695800, -423766400, -293685900, 0, $_begin, $_end, 0)
// ));

// $begin = strtotime("2017/08/09")*1000*1000; //*since: 09/08/2017
// array_push($to_be_imported, array(
//    'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => 'h_fb_Pluviometer', // BU
//    'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Length,              374665000, -423767000, -293725000, 0, $_begin, $_end, 0)
// ));

// $begin = strtotime("2017/09/15")*1000*1000; //*since: 15/09/2017
// array_push($to_be_imported, array(
//    'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => 'h_f8_lvl', // Corrego Grande
//    'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Length,              374795300, -423642000, -293737500, 0, $_begin, $_end, 0)
// ));

// $begin = strtotime("2017/12/04")*1000*1000; //*since: 04/12/2017
// array_push($to_be_imported, array(
//    'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => 'h_f8_tur', // Corrego Grande
//    'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Amount_of_Substance, 374795300, -423642000, -293737500, 0, $_begin, $_end, 0)
// ));

// $begin = strtotime("2017/02/07")*1000*1000; //*since: 07/02/2017
// array_push($to_be_imported, array(
//    'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => 'h_f9_lvl', // Ana D'Avila
//    'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Length,              374880900, -423611900, -293673500, 0, $_begin, $_end, 0)
// ));

// $begin = strtotime("2017/12/02")*1000*1000; //*since: 02/12/2017
// array_push($to_be_imported, array(
//    'domain' => $_domain, 'begin' => $_begin, 'end' => $_end, 'metric' => 'h_f9_tur', // Ana D'Avila
//    'series' => new Series(SmartData::STATIC_VERSION, TypicalUnit::Amount_of_Substance, 374880900, -423611900, -293673500, 0, $_begin, $_end, 0)
// ));

//$__FORCE_SCREEN_LOG = true;

foreach($to_be_imported as $series_metadata) {
    $domain = $series_metadata['domain'];
    $begin  = $series_metadata['begin'];
    $end    = $series_metadata['end'];
    $metric = $series_metadata['metric'];
    $series = $series_metadata['series'];

    $cred = new Credentials($domain, Config::config()::CASSANDRA_SUPERUSER, Config::config()::CASSANDRA_SUPERPASS);

    echo "------------------------------------------------------------\n";
    echo "- Importing Series from metric \"{$metric}\" to  domain \"$domain\"\n";
    echo "- Unit : ".$series->unit()."\n";
    echo "- Region : ({$series->x},{$series->y},{$series->z})->{$series->r}\n";
    echo "- Dev : {$series->dev}\n";
    echo '- From '.Time::time_to_date($begin).' to '.Time::time_to_date($end)."\n";
    echo "------------------------------------------------------------\n";

    $t0 = $begin;
    $t1 = $begin + $time_interval;

    $zero = 0;
    $cc = 0;

    while($t0 < $end){
        $series->t0 = $t0;
        $series->t1 = $t1;
        echo 'Sub-series from '.Time::time_to_date($t0).' to '.Time::time_to_date($t1)."\n";

        $json = KairosGetter::query($metric, ($series->t0/Time::mSECOND), ($series->t1/Time::mSECOND));
        $json = json_decode($json, true);

        $values = $json['queries'][0]['results'][0]['values'] ?? array();
        $count = count($values);

        if($count > 0){
            $batch = array();
            foreach($values as $value) {
                $_time  = $value[0] * Time::mSECOND; // from Kairos
                $_value = $value[1];                 // from Kairos
                // NOTICE: we can get the fields below from $json['queries'][0]['results'][0]['tags']
                $_error = 0;
                $_confidence = 0;
                $_x = $series->x;
                $_y = $series->y;
                $_z = $series->z;

                $smartdata = new StaticSmartData (
                    $series->unit,
                    $_value,
                    $_error,
                    $_confidence,
                    $_x,
                    $_y,
                    $_z,
                    $_time,
                    $series->dev
                );
                array_push($batch, $smartdata);
            }

            $__FORCE_VERSION = Config_Common::VERSION_1_1;
            $to_db = new Backend_V1_1($cred, true);

            echo "Creating data series...\n";
            if(!$to_db->create($series))
                die ("Create error");

            if(!$to_db->insertBatch($series, ...$batch)) {
                die ("Insertion Batch Failed! [$count entries]\n");
            } else {
                echo "Insertion Batch Done! [$count entries]\n";
            }
        }

        $t0 += $time_interval;
        $t1 += $time_interval;
    }
}