繁体   English   中英

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

[英]BigQuery + PHP Query Select Get Temporary Table

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

我想使用PHP上的API从BigQuery中的先前选择查询查询临时表中的数据

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 username FROM user_activities”,如何从此select查询中获取临时表并从此临时表执行下一个查询?

我知道BigQuery上有Jobs API,但我仍然混淆了如何实现它?

谢谢

您需要替换代码的这一部分:

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

有:

$job = $bigQuery->runQueryAsJob($query);
$isComplete = false;
$queryResults = $job->queryResults();

while (!$isComplete) {
    sleep(1); // let's wait for a moment...
    $queryResults->reload(); // trigger a network request
    $isComplete = $queryResults->isComplete(); // check the query's status
}

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

$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>
)

在这里查看更多文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM