大查询-提取包含表情符号的json字段



在我的BQ数据库表中,我有一个名为payload的列,其中包含原始的facebook-webhooks JSON有效载荷作为字符串。其中一个包含带有类似Sample的表情符号的文本。在大查询中,它看起来像

{"object":"page","entry":[{"id":"xxxx","time":1602757469275,"messaging":[{"sender":{"id":"xxxx"},"recipient":{"id":"xxxx"},"timestamp":1602757469062,"message":{"mid":"m_xxxx","text":"Sample ud83cudfe6","quick_reply":{"payload":"{"key": "value"}"},"tags":{"source":"source"}}}]}]}

我想创建一个具有列text的视图,该列具有从原始json中提取的text字段值。我创建了一个类似sql的

SELECT
JSON_EXTRACT_SCALAR(payload, '$.entry[0].messaging[0].message.text') as text,
FROM `my_table.facebook.webhook_received` 

遗憾的是,我得到的结果看起来像Sample ��

有人知道如何让大查询正确解码表情符号吗?或者至少不要把它改成�标志?

您嵌入的这些字符不适用于银行图标,我相信这是您的问题。在BQ中运行以下操作,返回所需的表情符号:select " Sample U0001f3e6"

参考编号:https://emojipedia.org/bank/

您提供的两个似乎默认为"?",无效字符http://unicode.scarfboy.com/?s=U%2Bdfe6

编辑:处理消息的人可能会抛出你在消息中看到的编码,这可能是实际的问题。

如果您使用的是BigQuery Python客户端及其load_table_from_json方法,则在以前的版本中存在Unicode错误(尤其是其字节超过0xFFFF等),并且我已经提交了这个错误修复程序,该修复程序已包含在最新版本中,https://github.com/googleapis/python-bigquery/releases/tag/v2.24.0.顺便说一句,您应该使用U0001F3E6,而不是ud83cudfe6(UTF-16十六进制类型)在BigQuery的Python代码中显示。

Unicode字符"BANK":https://www.fileformat.info/info/unicode/char/1f3e6/index.htm,https://charbase.com/1f3e6-unicode-bank

最新更新