2
私は2つのテーブルからデータにアクセスするためにクロス結合を使用しています。しかし、クロスに参加し、私はエラー「d.DebugDataテーブルに見つからない 『bigdataを得る:RawDebug.CarrierDetails』すべてのヘルプはGoogle BigQuery cross join
SELECT
HardwareId, DebugReason, DebugData,
CASE
WHEN REGEXP_MATCH(DebugData,'\\d+') THEN c.Network
ELSE REGEXP_REPLACE(DebugData,'\\?',' ')
END
as ActualDebugData
FROM(
SELECT
HardwareId, DebugReason, DebugData
FROM TABLE_DATE_RANGE([bigdata:RawDebug.T],TIMESTAMP ('2016-05-15'),TIMESTAMP('2016-05-15'))
WHERE Reason = 500
) as d
CROSS JOIN (
SELECT Network
FROM [bigdata:RawDebug.CarrierDetails]
WHERE Mcc = substr(d.DebugData,0,3) AND Mnc = substr(d.DebugData,4,LENGTH(d.Reason - 1))
LIMIT 1
) AS c
はこれを試し!!理解されるだろうが、私はこのエラーを取得:」ON句は、テーブル名が付いすべてのフィールド名と、各テーブルから1フィールド名の=の比較でなければなりません「
%%sql --module Test2
DEFINE QUERY Test2
SELECT
HardwareId, DebugReason, DebugData,
CASE
WHEN REGEXP_MATCH(DebugData,'\\d+') THEN c.Network
ELSE REGEXP_REPLACE(DebugData,'\\?',' ')
END AS ActualDebugData
FROM (
SELECT
HardwareId, DebugReason, DebugData,
SUBSTR(DebugData,0,3) AS d1, REGEXP_REPLACE(SUBSTR(DebugData,3,LENGTH(DebugData)-1),'%[^a-zA-Z0-9, ]%',' ') as d2
FROM TABLE_DATE_RANGE([bigdata:RawDebug.T],TIMESTAMP('2016-05-15'),TIMESTAMP('2016-05-15'))
WHERE DebugReason = 500
) AS d
LEFT JOIN (
SELECT
Network, Mcc, Mnc
,ROW_NUMBER() OVER(PARTITION BY Mcc, Mnc) AS pos
FROM [bigdata:RawDebug.CarrierDetails]
) AS c
ON c.Mcc = INTEGER(d.d1) AND c.Mnc = INTEGER(d.d2)
WHERE c.pos = 1
私は以下の構造追加してい:。
RawDebug:
HardwareId DebugReason DebugData
550029358 50013 VER%
550029359 50013 RO%
550029360 50013 34020?
550029361 50013 34021?
DebugDaを最初に3文字の部分文字列を取り、Carrierdetailsと残りの文字でMccにマッチさせて、CarrierdetailsのMncとマッチさせる必要があります。
最近のクエリでは、すべてのケースを考慮していません。むしろ、1つの特定の番号をとり、すべての行にActualDebugDataを使用します。
私は質問セクションにあるコードを試しました。しかし、 "ON句は、各テーブルの1つのフィールド名のANDの= ANDでなければならず、すべてのフィールド名の前にテーブル名が付いていなければなりません"というエラーがスローされます。 – user3447653
あなたが気づいたかどうかわかりませんが、これは私の答えにはありません!それらを整数にキャストする必要がある場合は、ONステートメントではなく、subselectsを使用する必要があります。たとえば、 'INTEGER(SUBSTR(DebugData、0,3))AS d1' –
このクエリは期待どおりに機能しません。それはむしろ1つの特定の番号をとり、すべての異なるハードウェアIDに使用します。 – user3447653