При импорте моего заказа из Shopify создается новая запись в BigQuery для каждого заказа, если что-то изменилось с момента последнего импорта, так что вы можете видеть, как изменяются свойства заказа с течением времени, а не только последнее состояние импорта.Это также создает несколько записей в таблице для одного и того же порядка, где единственной уникальной деталью являются значения _sdc_batched_at
и sdc_sequence
.Иногда я вижу до 30 записей одного и того же заказа.
Схема таблицы ...
order:
order_number: Int
fulfillments: Array
_sdc_batched_at: DateTime
_sdc_sequence: Int
Что я сделал ...
Iсоздал секционированную таблицу, которая по существу сводится к подмножеству записей между заданным диапазоном дат и выполнением> 0
Первоначальный запрос для сокращения набора данных ...
with orders as (
select order_number, fulfillments, _sdc_batched_at, _sdc_sequence
from `project.shopify.orders`
where created_at between '2018-11-08' and '2018-11-15'
and ARRAY_LENGTH(fulfillments) > 0
)
Проблема... Я сталкиваюсь с проблемами, пытаясь использовать отличное или групповое, поскольку выполнение - это массив, и это отбрасывает вещи.Как мне написать запрос, который будет возвращать только последнюю запись заказа по значению _sdc_batched_at
?
Пример данных
[
{
"order_number": "5545",
"fulfillments": [
{
"tracking_url": null,
"id": "617029074993",
"tracking_company": "ups",
"tracking_number": "Z1234567890"
}
],
"_sdc_batched_at": "2018-11-10 02:46:21.270 UTC",
"_sdc_sequence": "1541817507934"
},
{
"order_number": "5545",
"fulfillments": [
{
"tracking_url": null,
"id": "617029074993",
"tracking_company": "ups",
"tracking_number": "Z1234567890"
}
],
"_sdc_batched_at": "2018-11-10 03:16:16.606 UTC",
"_sdc_sequence": "1541819139795"
},
{
"order_number": "5545",
"fulfillments": [
{
"tracking_url": null,
"id": "617029074993",
"tracking_company": "ups",
"tracking_number": "Z1234567890"
}
],
"_sdc_batched_at": "2018-11-10 03:46:12.704 UTC",
"_sdc_sequence": "1541821046476"
},
{
"order_number": "5545",
"fulfillments": [
{
"tracking_url": null,
"id": "617029074993",
"tracking_company": "ups",
"tracking_number": "Z1234567890"
}
],
"_sdc_batched_at": "2018-11-10 04:16:07.952 UTC",
"_sdc_sequence": "1541822755508"
},
{
"order_number": "2212",
"fulfillments": [
{
"tracking_url": null,
"id": "617029074993",
"tracking_company": "ups",
"tracking_number": "Z1234567890"
}
],
"_sdc_batched_at": "2018-11-10 03:46:12.704 UTC",
"_sdc_sequence": "1541821046476"
},
{
"order_number": "2212",
"fulfillments": [
{
"tracking_url": null,
"id": "617029074993",
"tracking_company": "ups",
"tracking_number": "Z1234567890"
}
],
"_sdc_batched_at": "2018-11-10 04:1:07.952 UTC",
"_sdc_sequence": "1541822755508"
}
]
Ожидаемый результат
Возврат только самой последней записи по _sdc_batched_at
значению
{
"order_number": "5545",
"fulfillments": [
{
"tracking_url": null,
"id": "617029074993",
"tracking_company": "ups",
"tracking_number": "Z1234567890"
}
],
"_sdc_batched_at": "2018-11-10 04:16:07.952 UTC",
"_sdc_sequence": "1541822755508"
},
{
"order_number": "2212",
"fulfillments": [
{
"tracking_url": null,
"id": "617029074993",
"tracking_company": "ups",
"tracking_number": "Z1234567890"
}
],
"_sdc_batched_at": "2018-11-10 04:1:07.952 UTC",
"_sdc_sequence": "1541822755508"
}