Google bigquery 左连接以填充google big query中2个表中的数据
下面是两个表RawDebug和CarrierDetails。在RawDebug中,如果DebugData是VER%,那么ActualDebugData是Verizon,如果DebugData是一个数字,首先我们必须用“”替换其他字符,如(?),然后我们必须查找CarrierDetails表以选择其网络,其中Mcc=substr(“310410”,0,3)和Mnc=substr(“310410”,4,2)。然后将该网络填充为ActualDebugData 表1:Google bigquery 左连接以填充google big query中2个表中的数据,google-bigquery,Google Bigquery,下面是两个表RawDebug和CarrierDetails。在RawDebug中,如果DebugData是VER%,那么ActualDebugData是Verizon,如果DebugData是一个数字,首先我们必须用“”替换其他字符,如(?),然后我们必须查找CarrierDetails表以选择其网络,其中Mcc=substr(“310410”,0,3)和Mnc=substr(“310410”,4,2)。然后将该网络填充为ActualDebugData 表1: HardwareId Debug
HardwareId DebugData ActualDebugData
123 VER% Verizon
456 310410? Bell
表2.详细信息:
Mcc Mnc Network
310 410 Bell
我所尝试的:
SELECT
HardwareId, DebugReason, DebugData,
CASE
WHEN lower(DebugData) LIKE 'ver%' THEN 'Verizon'
WHEN REGEXP_MATCH(DebugData,'\\d+') THEN c.Network
ELSE REGEXP_REPLACE(DebugData,'\\?',' ')
END
AS ActualDebugData
FROM (
SELECT
HardwareId, DebugReason, DebugData,
INTEGER(SUBSTR(DebugData,0,3)) AS d1, INTEGER(SUBSTR(REGEXP_REPLACE(DebugData,'^[a-zA-Z0-9]',' '),4,LENGTH(DebugData)-1)) as d2
FROM TABLE_DATE_RANGE([bigdata:RawDebug.T],TIMESTAMP('2016-05-15'),TIMESTAMP('2016-05-15'))
WHERE DebugReason = 50013
) AS d
LEFT JOIN (
SELECT
Network, Mcc, Mnc
FROM [bigdata:RawDebug.CarrierDetails]
) AS c
ON c.Mcc = d.d1 and c.Mnc = d.d2
LIMIT 400
请记住-答案通常和问题一样好!
希望这会有所帮助,但看看你的问题的历史——这可能不是结束:o) 输出s:
HardwareId DebugReason DebugData ActualDebugData
123 50013 VER% Verizon
456 50013 310410? Bell
请记住-答案通常和问题一样好!
希望这会有所帮助,但看看你的问题的历史——这可能不是结束:o) 输出s:
HardwareId DebugReason DebugData ActualDebugData
123 50013 VER% Verizon
456 50013 310410? Bell
你发现这个答案有用吗?如果是这样的话,你可以考虑接受/投票它(如果还没有)你发现这个答案有用吗?如果是这样的话,你可以考虑接受/投票它(如果还没有)