标签: bigquery-standard-sql

BigQuery - 非法转义序列

我在 BigQuery 中匹配正则表达式时遇到问题。我有以下代码行试图识别用户代理:

when regexp_contains((cs_user_agent),  '^AppleCoreMedia\/1\.(.*)iPod') then "iOS App - iPod"
Run Code Online (Sandbox Code Playgroud)

但是,由于某种原因,BigQuery 似乎不喜欢转义序列,并且出现了我无法弄清楚的错误:

Syntax error: Illegal escape sequence: \/ at [4:63]
Run Code Online (Sandbox Code Playgroud)

这段代码在我使用的正则表达式验证器中运行良好,但 BigQuery 对它不满意,我不知道为什么。在此先感谢您的帮助

google-bigquery bigquery-standard-sql

6
推荐指数
1
解决办法
5255
查看次数

从存储为整数的时间戳中提取小时的时间是否比EXTRACT(从TIMESTAMP_SECONDS(visitStartTime)小时起)更短?

在主题中.使用standard-sql时,从存储为整数的时间戳中提取小时(或其他日期部分)的时间比EXTRACT(HOUR FROM TIMESTAMP_SECONDS(visitStartTime))更短吗?

google-bigquery bigquery-standard-sql

5
推荐指数
1
解决办法
6012
查看次数

在BigQuery中计算百分位数

我正在使用BigQuery,我需要计算数据集列的第25,第50和第75百分位数.

例如,如何使用BigQuery和STANDARD SQL获取上述数字.我查看了PERCENT_RANK,RANK和NTILE函数,但我似乎无法破解它.

这里有一些代码可以指导我

感谢帮助!

percentile google-bigquery google-cloud-platform bigquery-standard-sql

5
推荐指数
2
解决办法
7578
查看次数

从Bigquery中的时间戳中提取日期:一种更好的方法

Bigquery大师的一个快速问题.

以下是使用standardSQL从Bigquery中的时间戳中提取日期的两种方法

#standardSQL
#1
DATE(TIMESTAMP_MILLIS(CAST((timestamp) AS INT64)))
#2
EXTRACT(DATE FROM TIMESTAMP_MILLIS(timestamp))
Run Code Online (Sandbox Code Playgroud)

哪一个更可取,为什么?谢谢!

timestamp google-bigquery bigquery-standard-sql

5
推荐指数
1
解决办法
2984
查看次数

如何计算bigquery数组字段中元素的频率

我有一张看起来像这样的表:

在此处输入图片说明

我正在寻找一个表格,它给出了字段中元素的频率计数l_0, l_1, l_2, l_3

例如,输出应如下所示:

| author_id  | year | l_o.name         | l_0.count| l1.name    | l1.count | l2.name             | l2.count| l3.name            | l3.count|
| 2164089123 | 1987 | biology          | 3        | botany     | 3        |                     |         |                    |         |
| 2595831531 | 1987 | computer science | 2        | simulation | 2        | computer simulation | 2       | mathematical model | 2       |
Run Code Online (Sandbox Code Playgroud)

编辑:

在某些情况下,数组字段可能有不止一种类型的元素。例如l_0可能是 ['biology', 'biology', 'geometry', 'geometry']. 在这种情况下,输出为字段l_0, l_1, l_2, …

google-bigquery bigquery-standard-sql

5
推荐指数
1
解决办法
4634
查看次数

如何在标准 SQL 中解码 BASE64?

我正在尝试使用 BigQuery 中的标准 SQL 将一列 base64 值解散为解码的字符串,但到目前为止还没有任何运气。

我发现有一个函数叫做FROM_BASE64()但是 -

答:文档使它看起来好像将 BASE64 转换为 BYTES,这意味着我需要额外的转换。

B.FROM_BASE64()甚至不工作 - 查询运行,但结果始终与我输入的编码字符串完全相同。

SELECT FROM_BASE64('aGVsbG8tc3RhY2tvdmVyZmxvdw==')
Run Code Online (Sandbox Code Playgroud)

返回

"aGVsbG8tc3RhY2tvdmVyZmxvdw=="
Run Code Online (Sandbox Code Playgroud)

这里最好的方法是什么?

sql base64 google-bigquery bigquery-standard-sql

5
推荐指数
1
解决办法
7310
查看次数

展平Google BigQuery中的多个重复字段

我正在尝试将Big Query中重复字段中的数据弄平。我已经看过这个查询BigQuery中的多个重复字段的方法,但是我似乎无法使它正常工作。

我的数据如下所示:

[
  {
    "visitorId": null,
    "visitNumber": "15",


    "device": {
      "browser": "Safari (in-app)",
      "browserVersion": "(not set)",
      "browserSize": "380x670",
      "operatingSystem": "iOS",
    },
    "hits": [
      {
        "isEntrance": "true",
        "isExit": "true",
        "referer": null,
        "page": {
          "pagePath": "/news/bla-bla-bla",
          "hostname": "www.example.com",
          "pageTitle": "Win tickets!!",
          "searchKeyword": null,
          "searchCategory": null,
          "pagePathLevel1": "/news/",
          "pagePathLevel2": "/bla-bla-bla",
          "pagePathLevel3": "",
          "pagePathLevel4": ""
        },
        "transaction": null
      }
    ]
  }
]
Run Code Online (Sandbox Code Playgroud)

我想要的是hits-page重复字段中的字段。

例如,我想获取hits.page.pagePath(值为“ / news / bla-bla-bla”)

我已尝试使用以下查询,但出现错误:

SELECT 
visitorId,
visitNumber,
device.browser,
hits.page.pagePath
FROM 
`Project.Page`
LIMIT 1000
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

Error: Cannot …
Run Code Online (Sandbox Code Playgroud)

google-bigquery bigquery-standard-sql legacy-sql

3
推荐指数
1
解决办法
2140
查看次数

COUNT(*)FILTER(WHERE ...在BigQuery中

如何在BigQuery中过滤计数?

在Postgres中,我正在执行以下操作:

COUNT(*) FILTER (WHERE event_date>('{{ report_date }}'::date-INTERVAL '2 WEEK'))
Run Code Online (Sandbox Code Playgroud)

尽管这在BigQuery中不起作用。最好的选择是什么?我使用标准SQL。

sql google-bigquery bigquery-standard-sql

3
推荐指数
2
解决办法
2382
查看次数

如何在bigquery中获取重复嵌套字段的长度

我在 bigquery 中有一个表,其中有一个重复的嵌套字段,称为author_names.在此处输入图片说明

如何获取重复嵌套字段的长度author_names?例如,对于article_id = 2049807276,作者姓名的长度将为 2。

我更喜欢 bigquery 中的标准 sql 语法。

google-bigquery bigquery-standard-sql

3
推荐指数
1
解决办法
2886
查看次数

如何在Bigquery中使用Except子句?

我正在尝试使用ExceptBigquery 中的现有子句。请在下面找到我的查询

select * EXCEPT (b.hosp_id, b.person_id,c.hosp_id) from 
person a 
inner join hospital b
on a.hosp_id= b.hosp_id
inner join reading c
on a.hosp_id= c.hosp_id
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用了 3 个表。所有 3 个表都有hosp_id列,所以我想删除重复的列,即b.hosp_idc.hosp_id。同样,我也想删除b.person_id列。

当我执行上述查询时,出现如下所示的语法错误

Syntax error: Expected ")" or "," but got "." at [9:19]
Run Code Online (Sandbox Code Playgroud)

请注意,我在 inExcept子句中使用的所有列都存在于所使用的表中。附加信息是所有使用的表都是使用with子句创建的临时表。当我通过选择感兴趣的列手动执行相同操作时,它工作正常。但是我有几列,无法手动执行此操作。

你能帮我吗?我正在尝试学习 Bigquery。您的意见会有所帮助

sql google-bigquery bigquery-standard-sql python-bigquery

3
推荐指数
2
解决办法
1995
查看次数