sonnyyou / php-presto-client

PHP PrestoDB 客户端

0.1.5 2020-12-21 08:32 UTC

This package is not auto-updated.

Last update: 2024-09-24 20:31:30 UTC


README

Build Status Coverage Status Scrutinizer Code Quality

License Latest Version Total Downloads StyleCI

SensioLabsInsight

PrestoDB HTTP 协议 PHP 客户端

PrestoDB

什么是 Presto

Presto 是一个开源的分布式 SQL 查询引擎,它可以针对从小到数十亿字节到大到拍字节的各种大小的数据源执行交互式分析查询。

安装

需要 PHP 7.0 及以上版本

$ composer require sonnyyou/php-presto-client

用法

标准

<?php

$client = new \SonnyYou\PrestoClient\StatementClient(
    new \SonnyYou\PrestoClient\ClientSession('https://:8080/', 'acme'),
    'SELECT * FROM acme.acme.acme'
);
// execute http request
$client->execute();
// next call uri
$client->advance();

/** @var \SonnyYou\PrestoClient\QueryResult $result */
// current result
$result = $client->current();

// request cancel
$client->cancelLeafStage();

批量操作

<?php

$client = new \SonnyYou\PrestoClient\StatementClient(
    new \SonnyYou\PrestoClient\ClientSession('https://:8080/', 'acme'),
    'SELECT * FROM acme.acme.acme'
);
$resultSession = new \SonnyYou\PrestoClient\ResultsSession($client);
// yield results instead of returning them. Recommended.
$result = $resultSession->execute()->yieldResults();

// array
$result = $resultSession->execute()->getResults();

获取样式

修复数据对象

<?php

$client = new \SonnyYou\PrestoClient\StatementClient(
    new \SonnyYou\PrestoClient\ClientSession('https://:8080/', 'acme'),
    'SELECT * FROM acme.acme.acme'
);
$resultSession = new \SonnyYou\PrestoClient\ResultsSession($client);
$result = $resultSession->execute()->yieldResults();
/** @var \SonnyYou\PrestoClient\QueryResult $row */
foreach ($result as $row) {
    foreach ($row->yieldData() as $yieldRow) {
        if ($yieldRow instanceof \SonnyYou\PrestoClient\FixData) {
            var_dump($yieldRow->offsetGet('column_name'), $yieldRow['column_name']);
        }
    }
}

数组键

<?php

$client = new \SonnyYou\PrestoClient\StatementClient(
    new \SonnyYou\PrestoClient\ClientSession('https://:8080/', 'acme'),
    'SELECT * FROM acme.acme.acme'
);
$resultSession = new \SonnyYou\PrestoClient\ResultsSession($client);
$result = $resultSession->execute()->yieldResults();
/** @var \SonnyYou\PrestoClient\QueryResult $row */
foreach ($result as $row) {
    /** @var array $item */
    foreach ($row->yieldDataArray() as $item) {
        if (!is_null($item)) {
            var_dump($item);
        }
    }
}

映射类

<?php

class Testing
{
    private $_key;

    private $_value;
}

$client = new \SonnyYou\PrestoClient\StatementClient(
    new \SonnyYou\PrestoClient\ClientSession('https://:8080/', 'acme'),
    'SELECT * FROM acme.acme.acme'
);
$resultSession = new \SonnyYou\PrestoClient\ResultsSession($client);
$result = $resultSession->execute()->yieldResults();
/** @var \SonnyYou\PrestoClient\QueryResult $row */
foreach ($result as $row) {
    foreach($row->yieldObject(Testing::class) as $object) {
        if ($object instanceof Testing) {
            var_dump($object);
        }
    }
}