Я храню журнал доступа к пиксельному изображению в хранилище облачного хранилища dev-access-log-bucket
, используя стандартную "раковину"
так что файлы выглядят так requests/2019/05/08/15:00:00_15:59:59_S1.json
и одна строка выглядит следующим образом (я отформатировал JSON, но это на одной строке нормально):
{
"httpRequest": {
"cacheLookup": true,
"remoteIp": "93.24.25.190",
"requestMethod": "GET",
"requestSize": "224",
"requestUrl": "https://dev-snowplow.legalstart.fr/one_pixel_image.png?user_id=0&action=purchase&product_id=0&money=10",
"responseSize": "779",
"status": 200,
"userAgent": "python-requests/2.21.0"
},
"insertId": "w6wyz1g2jckjn6",
"jsonPayload": {
"@type": "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry",
"statusDetails": "response_sent_by_backend"
},
"logName": "projects/tracking-pixel-239909/logs/requests",
"receiveTimestamp": "2019-05-08T15:34:24.126095758Z",
"resource": {
"labels": {
"backend_service_name": "",
"forwarding_rule_name": "dev-yolaw-pixel-forwarding-rule",
"project_id": "tracking-pixel-239909",
"target_proxy_name": "dev-yolaw-pixel-proxy",
"url_map_name": "dev-urlmap",
"zone": "global"
},
"type": "http_load_balancer"
},
"severity": "INFO",
"spanId": "7d8823509c2dc94f",
"timestamp": "2019-05-08T15:34:23.140747307Z",
"trace": "projects/tracking-pixel-239909/traces/bb55577eedd5797db2867931f8de9162"
}
все это опять-таки стандартные вещи GCP, я ничего здесь не настраивал.
Итак, теперь я хочу сделать несколько запросов от Bigquery, я создаю набор данных и внешнюю таблицу, настроенную так:
External Data Configuration
Source URI(s) gs://dev-access-log-bucket/requests/*
Auto-detect schema true (note: I don't know why it puts true though i've manually defined it)
Ignore unknown values true
Source format NEWLINE_DELIMITED_JSON
Max bad records 0
и следующая ручная схема:
timestamp DATETIME REQUIRED
httpRequest RECORD REQUIRED
httpRequest. requestUrl STRING REQUIRED
и когда я запускаю запрос
SELECT
timestamp
FROM
`path.to.my.table`
LIMIT
1000
Я получил
Неверное имя поля "@type". Поля должны содержать только буквы, цифры и подчеркивания, начинаться с буквы или подчеркивания и содержать не более 128 символов.
Как можно обойти это без необходимости предварительной обработки журнала, чтобы в нем не было поля "@type"?