現在、GA360とBigQuery連携しており、GA360のローデータをBQに吐き出しています。そのデータに対して
pythonでサービスアカウント認証して、BigQueryへsqlを実行して特定のテーブルからデータを引っ張ってくること自体は全然問題なくできています。
ローデータをunnestした結果が入っているテーブルを
select * from テーブル名
でちゃんとデータを引っ張ってくることができるのは確認済みです。
しかしなぜか、unnestした結果のテーブルを参照しにいく場合は問題なくデータをpythonにとってくることができるのですが、
pythonから直接GA360で吐き出したローデータテーブルに対して、unnest用のsqlをかましてデータをとってきたいのですが、うまくいかず、以下のエラーが出てしまいます。
raise GenericGBQException("Reason: {0}".format(ex))
pandas_gbq.gbq.GenericGBQException: Reason: 400 Unrecognized name: visitorId at [1:19]
pythonから実行しているSQL
"SELECT
visitorId,
fullVisitorId,
clientId,
visitNumber,
visitId,
visitStartTime,
PARSE_DATE('%Y%m%d', date) AS hit_date,
totals.pageviews,
totals.timeOnSite,
trafficSource.referralPath,
trafficSource.campaign,
trafficSource.source,
trafficSource.medium,
trafficSource.keyword,
trafficSource.adContent,
device.browser,
device.browserVersion,
device.operatingSystem,
device.operatingSystemVersion,
device.isMobile,
device.flashVersion,
device.javaEnabled,
device.language,
device.screenColors,
device.screenResolution,
geoNetwork,
geoNetwork.continent,
geoNetwork.subContinent,
geoNetwork.country,
geoNetwork.region,
geoNetwork.metro,
geoNetwork.city,
geoNetwork.cityId,
geoNetwork.networkDomain,
geoNetwork.latitude,
geoNetwork.longitude,
geoNetwork.networkLocation,
hits.hitNumber,
hits.time,
TIMESTAMP_SECONDS(visitStartTime + CAST((hits.time / 1000) AS int64)) AS hit_timestamp,
hits.hour,
hits.minute,
hits.isSecure,
hits.isInteraction,
hits.referer,
hits.page.pagePath,
hits.page.hostname,
hits.page.pageTitle,
hits.page.searchKeyword,
hits.page.searchCategory,
hits.transaction.transactionId AS hit_transactionId,
hits.transaction.transactionRevenue,
hits.transaction.transactionTax,
hits.transaction.transactionShipping,
hits.transaction.affiliation,
hits.transaction.currencyCode AS hit_transaction_currencyCode,
hits.transaction.localTransactionRevenue,
hits.transaction.localTransactionTax,
hits.transaction.localTransactionShipping,
hits.item.transactionId,
hits.item.productName,
hits.item.productCategory,
hits.item.productSku,
hits.item.itemQuantity,
hits.item.itemRevenue,
hits.item.currencyCode,
hits.item.localItemRevenue,
hits.contentInfo.contentDescription,
hits.appInfo.name,
hits.appInfo.version,
hits.appInfo.id,
hits.appInfo.installerId,
hits.exceptionInfo.description,
hits.exceptionInfo.isFatal,
hits.eventInfo.eventCategory,
hits.eventInfo.eventAction,
hits.eventInfo.eventLabel,
hits.eventInfo.eventValue,
(SELECT MAX(IF(index=1, value, NULL)) FROM UNNEST(hits.customDimensions)) AS dimension1,
(SELECT MAX(IF(index=2, value, NULL)) FROM UNNEST(hits.customDimensions)) AS dimension2,
(SELECT MAX(IF(index=3, value, NULL)) FROM UNNEST(hits.customDimensions)) AS dimension3,
(SELECT MAX(IF(index=4, value, NULL)) FROM UNNEST(hits.customDimensions)) AS dimension4,
(SELECT MAX(IF(index=5, value, NULL)) FROM UNNEST(hits.customDimensions)) AS dimension5,
(SELECT MAX(IF(index=1, value, NULL)) FROM UNNEST(hits.customMetrics)) AS metrics1,
(SELECT MAX(IF(index=2, value, NULL)) FROM UNNEST(hits.customMetrics)) AS metrics2,
(SELECT MAX(IF(index=3, value, NULL)) FROM UNNEST(hits.customMetrics)) AS metrics3,
(SELECT MAX(IF(index=4, value, NULL)) FROM UNNEST(hits.customMetrics)) AS metrics4,
(SELECT MAX(IF(index=5, value, NULL)) FROM UNNEST(hits.customMetrics)) AS metrics5,
hits.type
FROM
{0}.{1}.{2}
,
UNNEST(hits) AS hits
ORDER BY hit_timestamp DESC, fullVisitorId DESC"
※ {0}はプロジェクト名、{1}はデータベース名、{2}はテーブル名が入ります。
visitorIdも指定しており、問題ないと思うのですが、理由が分からず困っています。
わかる方いらっしゃいましたら、至急教えていただけると幸いです。
よろしくお願い致します。
あなたの回答
tips
プレビュー