我无法在 bigquery 的 customtarget 列上应用正确的正则表达式。
使用普通的 MSSQL:
SELECT * from mytable where CustomTargeting like = '%u=%' -- is all okay
Run Code Online (Sandbox Code Playgroud)
使用 Bigquery(legacy-sql) :
SELECT REGEXP_EXTRACT(CustomTargeting, r'[^u=\d]') as validate_users
from [project:dataset.impressions_4213_20181112] Limit 10
Run Code Online (Sandbox Code Playgroud)
错误:
必须仅指定一个捕获组
更新:
但无法获得子字符串 u ='anystring'
如何提取 CustomTargeting ='%u=somestring%' 的数据?
我正在尝试为连接到 Google BigQuery 的 tableau 仪表板构建查询。我们有每个月数据的表格,但我想在任何给定时间显示过去 30 天的数据(因此它必须跨多个表格)。我当前的查询给出了错误“需要时间戳文字或显式转换为时间戳。” 我一直在寻找有关如何转换为时间戳的帮助,但没有找到任何有用的信息。这是我的代码。
SELECT
DATE(date_time) AS date,
FROM
TABLE_QUERY(myTable, "date(concat(left(table_id,4),'-',right(table_id,2),'-','01')) >= '2017-06-01'")
WHERE
DATE(date_time) >= DATE_ADD(day,-30, current_date())
and DATE(date_time) <= current_date()
ORDER BY
date
Run Code Online (Sandbox Code Playgroud)
任何有关如何使其工作的帮助将不胜感激。
注意:我们使用的是旧版 SQL
我正在尝试从jsons(使用sql legacy)中提取每个json中的两个密钥,目前我正在使用json提取功能:
json_extract(json_column , '$[1].X') AS X,
json_extract(json_column , '$[1].Y') AS Y,
Run Code Online (Sandbox Code Playgroud)
如何使它在“ json arry列”的每个json上运行,而不仅仅是[1](例如)?
json示例:
[
{"blabla":000,"X":1,"blabla":000,"blabla":000,"blabla":000,,"Y":"2"},
{"blabla":000,"X":3,"blabla":000,"blabla":000,"blabla":000,,"Y":"4"},
]
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我正在尝试将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) 我有一个简单的表,有两列Bin_name
(int) 和Count_in_this_bin
(int)
我想将其转换为每个垃圾箱与所有垃圾箱中总数的比率。
我在 Google BigQuery 中使用了以下查询:
SELECT count_in_bin/(SELECT SUM(count_in_bin) FROM [table])
FROM [table]
Run Code Online (Sandbox Code Playgroud)
然后我得到
错误:查询失败错误:SELECT 子句中不允许子选择
现在有人可以告诉我在 BigQuery 中进行这种简单划分的正确方法吗?
我有一个包含日期、事件和用户的表。有一个名为“A”的事件。我想找出 Sql Bigquery 中事件“A”之前和之后特定事件发生的次数。例如,
User Date Events
123 2018-02-13 X.Y.A
123 2018-02-12 X.Y.B
134 2018-02-10 Y.Z.A
123 2018-02-11 A
123 2018-02-01 X.Y.Z
134 2018-02-05 X.Y.B
134 2018-02-04 A
Run Code Online (Sandbox Code Playgroud)
输出会是这样的
User Event Before After
123 A 1 3
134 A 0 1
Run Code Online (Sandbox Code Playgroud)
我必须计数的事件包含特定的前缀。意味着我必须检查以( XY 然后是某个事件名称)开头的事件。因此,XYSomeEvent 是我必须设置计数器的事件。有什么建议么?
我正在尝试(未成功)将 Google BigQuery 中的字符串列拆分为包含所有单个单词和所有单词对(彼此相邻并按顺序排列)的行。我还需要维护 IndataTable 中单词的 ID 字段。两个记录集都有 2 列。
IndataTable as IDT
ID WordString
1 苹果香蕉梨
2 胡萝卜
3 蓝红绿黄
OutdataTable 作为 ODT
ID WordString
1 苹果
1 香蕉
1 梨
1 苹果香蕉
1 香蕉梨
2 胡萝卜
3 蓝色
3 红色
3 绿色
3 黄色
3 蓝色红色
3 红色绿色
3 绿色黄色(仅对彼此相邻)
这可能在大查询 SQL?
编辑/添加:
这是我迄今为止所拥有的,可将其拆分为单个单词。我真的很难弄清楚如何将其扩展为单词对。我不知道是否可以对此进行修改,或者我完全需要一种新方法。
SELECT ID, split(WordString,' ') as Words
FROM (
select *
from
(select ID, WordString from IndataTable)
)
Run Code Online (Sandbox Code Playgroud) 我在BigQuery中有一个表TabA,它有一列ColA,ColA列有以下结构
1038627|21514184
Run Code Online (Sandbox Code Playgroud)
而TabA表有超过一百万条记录.我用它来分成多列
SELECT ColA,FIRST(SPLIT(ColA, '/')) part1,
NTH(2, SPLIT(ColA, '/')) part2
FROM TabA
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,在某些行之后,拆分似乎无法正常工作.
我们得到这样的记录,
ColA part1 part2
1038627|21507470 1038627 21507470
1038627|21534857 1038627 21507470
1038627|21546455 1038627 21507470
1038627|21577167 1038627 21507470
Run Code Online (Sandbox Code Playgroud)
It his happening on a random basis. Not sure where is there error.
SELECT COUNT(*) FROM TabA - returns say 1.7M records
SELECT ColA,FIRST(SPLIT(ColA, '|')) part1, NTH(2, SPLIT(ColA, '|')) part2 FROM TabA - returns 1.7M records with the wrong split
SELECT FIRST(SPLIT(ColA, '|')) part1, NTH(2, SPLIT(ColA, '|')) part2 …
要加入表,我正在使用以下查询。
SELECT *
FROM(select user as uservalue1 FROM [projectname.FullData_Edited]) as FullData_Edited
JOIN (select user as uservalue2 FROM [projectname.InstallDate]) as InstallDate
ON FullData_Edited.uservalue1=InstallDate.uservalue2;
Run Code Online (Sandbox Code Playgroud)
该查询有效,但是联接的表只有两列uservalue1和uservalue2。我想使所有列都存在于两个表中。知道如何实现吗?