Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BigQuery+PHP查询选择获取临时表_Php_Google Bigquery - Fatal编程技术网

BigQuery+PHP查询选择获取临时表

BigQuery+PHP查询选择获取临时表,php,google-bigquery,Php,Google Bigquery,我有点困惑,因为我很难找到详细的文档示例如何实现这一点 我想使用PHP上的API在BigQuery中的上一个select查询中查询临时表中的数据 function run_query($query, $useLegacySql, &$result) { $builder = new ServiceBuilder([ 'projectId' => 'PROJECTID', ]); $job = new

我有点困惑,因为我很难找到详细的文档示例如何实现这一点

我想使用PHP上的API在BigQuery中的上一个select查询中查询临时表中的数据

function run_query($query, $useLegacySql, &$result)
{ 
        $builder = new ServiceBuilder([
                'projectId' => 'PROJECTID',
        ]);

        $job = new Google_Job();

        $bigQuery = $builder->bigQuery();

        $queryResults = $bigQuery->runQuery(
            $query,
            ['useLegacySql' => $useLegacySql]);

        if ($queryResults->isComplete()) 
        {
            $i = 0;
            $rows = $queryResults->rows();

            foreach ($rows as $row) 
            {
                $i++;

                $result[$i] = $row;
            }
        } 
        else 
        {
            throw new Exception('The query failed to complete');
        }
}
所以我的问题是,如果我运行这个函数来执行select查询,例如select username FROM user_activities,我如何从这个select查询中获取临时表并从这个临时表中执行下一个查询

我知道BigQuery上有Jobs API,但我仍然不知道如何实现它


谢谢

您需要替换此部分代码:

 $queryResults = $bigQuery->runQuery(
            $query,
            ['useLegacySql' => $useLegacySql]);
与:

!!!您还需要立即轮询,直到作业完成,底部包含文档链接,然后您可以使用:

$info=$job->info();
print_r($info);
这会返回一组关于工作的信息,比如destinationTable

Array
(
    [kind] => bigquery#job
    [etag] => "<edited>"
    [id] => <edited>
    [selfLink] => https://www.googleapis.com/bigquery/v2/projects/<edited>
    [jobReference] => Array
        (
            [projectId] => <edited>
            [jobId] => <edited>
        )

    [configuration] => Array
        (
            [query] => Array
                (
                    [query] => SELECT repository_url, 
       repository_has_downloads 
FROM   [publicdata:samples.github_timeline]
LIMIT  10
                    [destinationTable] => Array
                        (
                            [projectId] => <edited>
                            [datasetId] => <edited>
                            [tableId] => anon734f2eebd13d01c49c65dce7359aeab1df285473
                        )

                    [createDisposition] => CREATE_IF_NEEDED
                    [writeDisposition] => WRITE_TRUNCATE
                )

        )

    [status] => Array
        (
            [state] => RUNNING
        )

    [statistics] => Array
        (
            [creationTime] => 1479487171996
            [startTime] => 1479487172576
        )

    [user_email] => <edited>
)

请参阅更多文档

您需要替换此部分代码:

 $queryResults = $bigQuery->runQuery(
            $query,
            ['useLegacySql' => $useLegacySql]);
与:

!!!您还需要立即轮询,直到作业完成,底部包含文档链接,然后您可以使用:

$info=$job->info();
print_r($info);
这会返回一组关于工作的信息,比如destinationTable

Array
(
    [kind] => bigquery#job
    [etag] => "<edited>"
    [id] => <edited>
    [selfLink] => https://www.googleapis.com/bigquery/v2/projects/<edited>
    [jobReference] => Array
        (
            [projectId] => <edited>
            [jobId] => <edited>
        )

    [configuration] => Array
        (
            [query] => Array
                (
                    [query] => SELECT repository_url, 
       repository_has_downloads 
FROM   [publicdata:samples.github_timeline]
LIMIT  10
                    [destinationTable] => Array
                        (
                            [projectId] => <edited>
                            [datasetId] => <edited>
                            [tableId] => anon734f2eebd13d01c49c65dce7359aeab1df285473
                        )

                    [createDisposition] => CREATE_IF_NEEDED
                    [writeDisposition] => WRITE_TRUNCATE
                )

        )

    [status] => Array
        (
            [state] => RUNNING
        )

    [statistics] => Array
        (
            [creationTime] => 1479487171996
            [startTime] => 1479487172576
        )

    [user_email] => <edited>
)

请参阅更多文档

您好,我必须调用哪个库?我尝试使用Google\Cloud\BigQuery\Jobs;但总是返回类“Google_Job”找不到?谢谢:我想你错过了键入composer require google/apiclient:^2.0我只有自动加载供应商,没有使用指令。嗨,谢谢,我已经成功地获得了工作数据。我的最后一个问题是,当我从[datasetid].[tableid]查询SELECT*时,它将自动执行临时表的结果:试试看,如果你把临时表的名字改成willHi,我该叫什么库?我尝试使用Google\Cloud\BigQuery\Jobs;但总是返回类“Google_Job”找不到?谢谢:我想你错过了键入composer require google/apiclient:^2.0我只有自动加载供应商,没有使用指令。嗨,谢谢,我已经成功地获得了工作数据。我的最后一个问题是,当我从[datasetid].[tableid]查询SELECT*时,它将自动执行临时表的结果:尝试一下,如果您输入临时表名称,它将