【问题标题】:BigQuery SQL User Agent DetectingBigQuery SQL 用户代理检测
【发布时间】:2021-01-17 18:53:43
【问题描述】:

如何提取关于 设备类型 浏览器, 操作系统等 来自用户代理字符串:

Mozilla/5.0 (Linux; Android 10; SM-A307G Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/87.0.4280.141 Mobile Safari/537.36 Instagram 170.2.0.30.474 Android (29/10; 280dpi; 720x1423; samsung; SM-A307G; a30s; exynos7904; es_US; 267925733)

谢谢

【问题讨论】:

  • 提供示例,说明您期望从问题中的输入数据中获得什么输出
  • 您的问题的背景是什么?你用的是什么平台?举例说明您正在寻找什么。
  • 我想提取设备类型浏览器、操作系统等信息。我在这里看到过使用静态脚本的类似问题,但我的问题是如何在我的数据更新时动态获取这些信息

标签: sql google-bigquery user-agent


【解决方案1】:

您可以使用此处概述的方法 - https://titanwolf.org/Network/Articles/Article?AID=2af15c50-e1cb-4ce1-b641-f7263e66ac8a#gsc.tab=0 - 将 JavaScript 用户代理解析库上传到 Google Cloud Storage。然后在 Google Cloud BigQuery 用户定义函数中引用它。

基于此,您可以 - 1. 将函数定义保存在 BigQuery 本身中,以及 2. 使用它来使用视图解析更新的数据,例如 SELECT [my-project.[my-dataset].[parse_user_agent]([user_agent_field]) FROM [my-project].[my-dataset].[my-table]。之后就可以从 View 中读取解析出来的信息了。

我已经测试过这种方法并且它有效。

将 woothee.js 文件上传到 Google Cloud Storage 中的存储桶后,我在 Google Cloud BigQuery 中创建了函数

CREATE OR REPLACE FUNCTION `[my-project].[my-dataset].user_agent_parse`(ua STRING)
 RETURNS STRUCT<category STRING, name STRING, version STRING, os STRING, vendor STRING, os_version STRING>
 LANGUAGE js AS """  return {category:woothee.parse(ua).category
 ,name:woothee.parse(ua).name
 ,version:woothee.parse(ua).version
 ,os:woothee.parse(ua).os
 ,vendor:woothee.parse(ua).vendor
 ,os_version:woothee.parse(ua).os_version};
"""OPTIONS(library="gs://[my-bucket]/woothee.js");

唯一需要担心的是,根据您的数量,每当您从视图中读取时,基本上重新解析所有用户代理可能会花费您很多。因此,您可能需要考虑按计划将 Parsed 数据存储在表中。

【讨论】:

    猜你喜欢
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多