При загрузке в Big Query сбой эмодзи
В настоящее время я сталкиваюсь с проблемой с загрузкой (используя python) данных EMOJI в БОЛЬШОЙ ЗАПРОС
Это пример кода, который я пытаюсь загрузить в BQ:
{"emojiCharts":{"emoji_icon":"\ud83d\udc4d","repost": 4, "doc": 4, "engagement": 0, "reach": 0, "impression": 0}}
{"emojiCharts":{"emoji_icon":"\ud83d\udc49","repost": 4, "doc": 4, "engagement": 43, "reach": 722, "impression": 4816}}
{"emojiCharts":{"emoji_icon":"\u203c","repost": 4, "doc": 4, "engagement": 0, "reach": 0, "impression": 0}}
{"emojiCharts":{"emoji_icon":"\ud83c\udf89","repost": 5, "doc": 5, "engagement": 43, "reach": 829, "impression": 5529}}
{"emojiCharts":{"emoji_icon":"\ud83d\ude34","repost": 5, "doc": 5, "engagement": 222, "reach": 420, "impression": 2805}}
{"emojiCharts":{"emoji_icon":"\ud83d\ude31","repost": 3, "doc": 3, "engagement": 386, "reach": 2868, "impression": 19122}}
{"emojiCharts":{"emoji_icon":"\ud83d\udc4d\ud83c\udffb","repost": 5, "doc": 5, "engagement": 43, "reach": 1064, "impression": 7098}}
{"emojiCharts":{"emoji_icon":"\ud83d\ude3b","repost": 3, "doc": 3, "engagement": 93, "reach": 192, "impression": 1283}}
{"emojiCharts":{"emoji_icon":"\ud83d\ude2d","repost": 6, "doc": 6, "engagement": 212, "reach": 909, "impression": 6143}}
{"emojiCharts":{"emoji_icon":"\ud83e\udd84","repost": 8, "doc": 8, "engagement": 313, "reach": 402, "impression": 2681}}
{"emojiCharts":{"emoji_icon":"\ud83d\ude18","repost": 7, "doc": 7, "engagement": 0, "reach": 8454, "impression": 56366}}
{"emojiCharts":{"emoji_icon":"\ud83d\ude05","repost": 5, "doc": 5, "engagement": 74, "reach": 1582, "impression": 10550}}
{"emojiCharts":{"emoji_icon":"\ud83d\ude04","repost": 5, "doc": 5, "engagement": 73, "reach": 3329, "impression": 22206}}
Проблема в том, что большой запрос не может увидеть ни одного из этих смайликов (\ud83d\ude04
) и будет отображаться только в этом формате (\u203c
)
Даже если поле STRING отображает 2 черных ромба, почему BQ не может отобразить эмодзи в виде строки, не преобразовав ее в фактические эмодзи?
Вопросы:
Есть ли способ загрузить EMOJI в Big Query, чтобы он загружался правильно? - "будет использоваться в Google Data Studio"
Должен ли я (жестко запрограммирован) изменять все коды смайликов на приемлемые, какой формат является приемлемым?
3 ответа
Как пользователь "цифра" упоминает в своем комментарии:
Проверьте http://charbase.com/1f618-unicode-face-throwing-a-kiss Что вы хотите, чтобы преобразовать escape-символы javascript в фактические данные Unicode.
вам нужно изменить кодировку смайликов, чтобы они были точно представлены как один символ:
SELECT "\U0001f604 \U0001f4b8"
-- , "\ud83d\udcb8"
-- , "\ud83d\ude04"
2-я и 3-я строка терпят неудачу с ошибкой как Illegal escape sequence: Unicode value \ud83d is invalid at [2:7]
, но первая строка дает правильное отображение в BigQuery и Data Studio:
Дополнительные мысли по этому поводу:
Python не поддерживает представление «суррогатных символов», которое состоит из нескольких символов UTF-16, и некоторые смайлы (сверх) их используют. Например, 🏦 можно представить как
\U0001f3e6
(UTF-32) в Python и некоторых языках использует
\ud83c\udfe6
. Для этих значений меньше, Python и другие языки используют одно и то же представление, например
\u3020
(〠). Чтобы решить проблему с кодировкой, вы можете вручную преобразовать символы эмодзи или рассмотреть возможность использования некоторых библиотек, например https://github.com/hartwork/surrogates, чтобы преобразовать их в UTF-32.
Кроме того, клиент BigQueqry Python
load_table_from_json
была ошибка с теми персонажами, чьи значения превышены
0xFFFF
, даже если вы используете правильное представление UTF-32. Он только что выпустил новую версию, чтобы исправить это пару дней назад. ссылка: https://github.com/googleapis/python-bigquery/releases/tag/v2.24.0
Некоторые упоминания о банковских смайликах 🏦 с указанием различных представлений:
Это может быть связано с ответом на аналогичный вопрос, который я разместил здесь, /questions/56275014/big-query-izvlech-pole-json-soderzhaschee-emodzi/58680741#58680741