【发布时间】:2017-05-23 04:46:48
【问题描述】:
我目前有一个如下所示的表格:
Id // Key
General
platformId
platformName
Products [
Repeated Product {
Country
URL
Offers [
Repeated Offer
Type
Price
Currency
]
}
]
我需要将其转换为不同的格式:
Record ID // Key
Country
Providers [
Repeated provider
platformName
Offers [
Repeated Offer
Type
Price
Currency
]
]
我最初把桌子弄平,得到这样的东西:
id,platformId,platformName,products.product.country,products.product.offers.offer.price,products.product.offers.offer.type,products.product.offers.offer.currency
1,123,AWS,US,1.99,CPU,USD
1,123,AWS,US,1.99,HDD,USD
1,123,AWS,US,1.99,RAM,USD
2,123,AWS,CA,2.99,CPU,CAN
2,123,AWS,CA,2.99,HDD,CAN
2,123,AWS,CA,2.99,RAM,CAN
3,123,GOOG,US,3.99,CPU,GBP
3,123,GOOG,US,3.99,HDD,GBP
3,123,GOOG,US,3.99,RAM,GBP
我想按国家和平台名称对以下字段进行分组:
1,123,AWS,US,1.99,CPU,USD
1,123,AWS,US,1.99,HDD,USD
1,123,AWS,US,1.99,RAM,USD
3,123,GOOG,US,1.99,CPU,GBP
3,123,GOOG,US,1.99,HDD,GBP
3,123,GOOG,US,1.99,RAM,GBP
字段结构应如下所示:
123,US,AWS
CPU,1.99,USD
HDD,1.99,USD
RAM,1.99,USD
GOOG
CPU,3.99,USD
HDD,3.99,USD
RAM,3.99,USD
有什么建议吗? 目前我无法按国家/地区分组:
+---------+---------------+--------+--------+----------+
| country | platformName | type | price | currency |
+---------+---------------+--------+--------+----------+
| US | AWS | CPU | 1.99 | USD |
| | | HDD | 1.99 | USD |
| | | RAM | 1.99 | USD |
| CA | AWS | CPU | 2.99 | CAN |
| | | HDD | 2.99 | CAN |
| | | RAM | 2.99 | CAN |
| US | GOOG | CPU | 3.99 | USD |
| | | HDD | 3.99 | USD |
| | | RAM | 3.99 | USD |
--------------------------------------------------------
这是我的查询
SELECT
country,
platformName,
NEST(type) AS type,
NEST(price) AS price,
CASE
WHEN NEST(currency) = '' THEN NULL
ELSE NEST(currency)
END AS currency,
FROM
tbl
WHERE
master_id = 123
GROUP BY
platform_name,
country
【问题讨论】:
标签: google-bigquery google-query-language