Допустим, у меня есть данные XML, которые сохраняются в таблице Bigquery, поэтому большая структура запроса может представлять собой некоторый нормальный атомарный столбец, а затем столбец повторяющихся записей, внутри этого столбца записи некоторый атомарный столбец и новый столбец повторяющихся записей, и это для многихстолбцы.
Теперь я хочу узнать, как лучше всего отложить вкладку, в основном, когда нам нужны данные из каждого столбца и применить агрегирование, скажем (сумма) для повторяющегося столбца.
Например, еслиЯ пишу запрос как Выбор имени, сумма (unit.unitprice) из теста, unnest (product1) p, Unnest (p.unit) unit - здесь единица повторяется в столбце записи в столбце повторяющихся записей продукта.
Itработает, но у меня есть другой столбец для другого продукта (например), поэтому, если я напишу
Выберите имя, сумму (unit1.unitprice), сумму (unit2.tax) из теста, unnest (product1) p1,Unnest (p1.unit) unit1, unnest (product2) p2, Unnest (p2.unit) unit2
Здесь начнется проблема, поскольку все три декартовых произведения дадут больше строки, а сумма будет неправильной.
Это только пример, в таблице есть еще такой столбец, к которому я хочу применить сумму и все.
Данные файла JSON, которые могут использовать аналогичную структуру: -
{ "Код": "123456", "время": "2018-08-27T16: 42: 04,000", "вентилятор": [{ "последовательность": 1, "единица": [{ "продать": "126,89", "стоимость": "126,89"}, { "продать": "126,89", "стоимость": "126.89"}], "продукт": [{ "плата": "40", "причина": "тестирование"}, {"fee": "400", "reason": "testing1"}]}], "AC": [{"sequence": 1, "unit": [{"sell": "1500", "Стоимость ":" 1500 "}]}, {" последовательность ": 2," единица ": [{" продать ":" 1500" , "стоимость": "1500"}, { "продать": "200",»cost ":" 250 "}]}]}
Запросы: - Этот запрос дает правильную сумму
select any_value (sku), sum (unit.cost) из nonpii_air_ticketed.test
, unnest (fan) f, unnest (f.unit) unit
Когда мы добавляем еще один компонент (product) в unnest, сумма единиц изменяется и дает неправильное значение, и то же самое применимо, если у нас больше таких столбцов.
выберите any_value (sku), сумму (unit.cost), sum (fee.fee) из nonpii_air_ticketed.test
, unnest (fan) f, unnest (f.unit) unit, unnest (f.product) плату
Схема таблицы со значением