我正在將App Engine標準的請求日誌導出到BigQuery。我想用BigQuery UDF處理appengine_googleapis_com_request_log.protoPayload.line
由於Application輸出的日誌是在protoPayload.line中的,我們試圖用UDF來處理它。
但是,由於類型不匹配錯誤,查詢無法執行。 我打算讓模具保持一致,但我該如何解決它?
Error: No matching signature for function JS:LINE_COUNT for argument types: ARRAY<STRUCT<time TIMESTAMP, severity STRING, logMessage STRING, ...>>. Supported signature: LINE_COUNT(ARRAY<STRUCT<time TIMESTAMP, severity STRING, logMessage STRING, ...>>) at [3:3]
查詢:
#standardSQL
CREATE TEMPORARY FUNCTION LINE_COUNT(lines ARRAY<STRUCT<time TIMESTAMP,
severity STRING,
logMessage STRING,
sourceLocation STRUCT<file STRING,
line FLOAT64,
functionName STRING>>>)
RETURNS FLOAT64
LANGUAGE js AS """
var count = 0;
for (var i = 0; i < lines.length; i++) {
count++;
}
return count;
""";
SELECT
LINE_COUNT(protoPayload.line)
FROM
`gaelog_from_bqstreaming.appengine_googleapis_com_request_log_*`
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE("%Y%m%d",
DATE_SUB(CURRENT_DATE(),
INTERVAL 1 DAY))
AND FORMAT_DATE("%Y%m%d",
CURRENT_DATE())
LIMIT
1000
我解決了你的建議問題!謝謝! – sinmetal