从符合条件的请求中获取所有行
Get all the lines from a request that match a criteria
我试图优化用于搜索我的 AppEngine 应用程序日志的 BigQuery 查询 (exported to BigQuery automatically through Google Cloud Logging),但我收到了一个我不理解的错误。
SELECT
protoPayload.requestId,
protoPayload.line.logMessage
FROM (
SELECT
protoPayload.requestId AS matchingRequestId
FROM
TABLE_DATE_RANGE(MyProject_Logs.appengine_googleapis_com_request_log_, DATE_ADD(CURRENT_TIMESTAMP(), -1, 'HOUR'), CURRENT_TIMESTAMP())
WHERE
protoPayload.resource CONTAINS '/url'
AND protoPayload.line.logMessage CONTAINS 'criteria'
LIMIT 50)
WHERE
protoPayload.requestId = matchingRequestId
结果
Query Failed
Error: Field 'protoPayload.requestId' not found.
Job ID: myProject:job_DZpCc0u52LBFh8DFL0nDCsizo8o
这个错误对我来说没有意义,因为当我尝试只执行也使用 protoPayload.requestId
字段的子查询时,它工作正常。
作为旁注,但我仍然很好奇是什么导致了我的查询错误。
- 对于问题中的特定示例,此错误对我来说很有意义:
在 subselect 之外 - protoPayload.requestId
不再可见 - 它是 matchingRequestId
基于 protoPayload.requestId AS matchingRequestId
中的别名
请注意,在您修复对 protoPayload.requestId
的外部(两个)引用后,下一个错误将是关于 protoPayload.line.logMessage
它对外部 select 也是不可见的,因为 a) 它不是 subselect 的一部分和 b) 从 subselect
[= 引用 table 28=]
看起来你过于简化了你的例子,甚至 if/after 上面的固定 - 它对我来说仍然没有多大意义 - 特别是因为 WHERE matchingRequestId = matchingRequestId
我试图优化用于搜索我的 AppEngine 应用程序日志的 BigQuery 查询 (exported to BigQuery automatically through Google Cloud Logging),但我收到了一个我不理解的错误。
SELECT
protoPayload.requestId,
protoPayload.line.logMessage
FROM (
SELECT
protoPayload.requestId AS matchingRequestId
FROM
TABLE_DATE_RANGE(MyProject_Logs.appengine_googleapis_com_request_log_, DATE_ADD(CURRENT_TIMESTAMP(), -1, 'HOUR'), CURRENT_TIMESTAMP())
WHERE
protoPayload.resource CONTAINS '/url'
AND protoPayload.line.logMessage CONTAINS 'criteria'
LIMIT 50)
WHERE
protoPayload.requestId = matchingRequestId
结果
Query Failed
Error: Field 'protoPayload.requestId' not found.
Job ID: myProject:job_DZpCc0u52LBFh8DFL0nDCsizo8o
这个错误对我来说没有意义,因为当我尝试只执行也使用 protoPayload.requestId
字段的子查询时,它工作正常。
作为旁注,
- 对于问题中的特定示例,此错误对我来说很有意义:
在 subselect 之外 - protoPayload.requestId
不再可见 - 它是 matchingRequestId
基于 protoPayload.requestId AS matchingRequestId
请注意,在您修复对
[= 引用 table 28=]protoPayload.requestId
的外部(两个)引用后,下一个错误将是关于protoPayload.line.logMessage
它对外部 select 也是不可见的,因为 a) 它不是 subselect 的一部分和 b) 从 subselect看起来你过于简化了你的例子,甚至 if/after 上面的固定 - 它对我来说仍然没有多大意义 - 特别是因为
WHERE matchingRequestId = matchingRequestId