Google bigquery 在我的日内桌上放上所有的东西
我已经看过几个例子,但我不知道如何将我的查询格式化为一个合并了日内表的联合。TABLE_后缀很好地抓取了我所有的日常表格,但我还需要抓取intradayGoogle bigquery 在我的日内桌上放上所有的东西,google-bigquery,Google Bigquery,我已经看过几个例子,但我不知道如何将我的查询格式化为一个合并了日内表的联合。TABLE_后缀很好地抓取了我所有的日常表格,但我还需要抓取intradaysmarttruck-6d137.com\u usinc\u android\u android.app\u events\u intraday.*。有人能帮我处理一下这个项目的所有格式吗?多谢各位 SELECT event_dim.date AS Date, ( SELECT value.value.string_value
smarttruck-6d137.com\u usinc\u android\u android.app\u events\u intraday.*
。有人能帮我处理一下这个项目的所有格式吗?多谢各位
SELECT
event_dim.date AS Date,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'imei_id') AS IMEI,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'division_id') AS Branch,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'truck_id') AS Truck,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'installer_id') AS Installer,
COUNT(*) AS Count
FROM
`smarttruck-6d137.com_usiinc_android_ANDROID.app_events_*`
CROSS JOIN
UNNEST(event_dim) AS event_dim
WHERE
event_dim.name = 'app_exception'
AND EXISTS (
SELECT
1
FROM
UNNEST(event_dim.params)
WHERE
key = 'fatal'
AND value.int_value = 1 )
AND _TABLE_SUFFIX = Date
GROUP BY
Date,
IMEI,
Branch,
Truck,
Installer
ORDER BY
Date DESC,
Count DESC;
我想这是我自己弄明白的。通过删除where子句中的_TABLE_SUFFIX=Date,BQ也使用了通配符来获取我的日内表。我不会假装我完全理解这为什么有效,但它确实有效。如果你能解释,请插话 标准SQL
SELECT
event_dim.date AS Date,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'imei_id') AS IMEI,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'division_id') AS Branch,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'truck_id') AS Truck,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'installer_id') AS Installer,
COUNT(*) AS Count
FROM
`smarttruck-6d137.com_usiinc_android_ANDROID.app_events_*`
CROSS JOIN
UNNEST(event_dim) AS event_dim
WHERE
event_dim.name = 'app_exception'
AND EXISTS (
SELECT
1
FROM
UNNEST(event_dim.params)
WHERE
key = 'fatal'
AND value.int_value = 1 )
GROUP BY
Date,
IMEI,
Branch,
Truck,
Installer
ORDER BY
Date DESC,
Count DESC;
我想这是我自己弄明白的。通过删除where子句中的_TABLE_SUFFIX=Date,BQ也使用了通配符来获取我的日内表。我不会假装我完全理解这为什么有效,但它确实有效。如果你能解释,请插话 标准SQL
SELECT
event_dim.date AS Date,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'imei_id') AS IMEI,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'division_id') AS Branch,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'truck_id') AS Truck,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'installer_id') AS Installer,
COUNT(*) AS Count
FROM
`smarttruck-6d137.com_usiinc_android_ANDROID.app_events_*`
CROSS JOIN
UNNEST(event_dim) AS event_dim
WHERE
event_dim.name = 'app_exception'
AND EXISTS (
SELECT
1
FROM
UNNEST(event_dim.params)
WHERE
key = 'fatal'
AND value.int_value = 1 )
GROUP BY
Date,
IMEI,
Branch,
Truck,
Installer
ORDER BY
Date DESC,
Count DESC;
检查这是否适用于您:
SELECT
event_dim.date AS Date,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'imei_id') AS IMEI,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'division_id') AS Branch,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'truck_id') AS Truck,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'installer_id') AS Installer,
COUNT(*) AS Count
FROM
`smarttruck-6d137.com_usiinc_android_ANDROID.app_events_*`
CROSS JOIN
UNNEST(event_dim) AS event_dim
WHERE
event_dim.name = 'app_exception'
AND EXISTS (
SELECT
1
FROM
UNNEST(event_dim.params)
WHERE
key = 'fatal'
AND value.int_value = 1 )
AND REGEXP_EXTRACT(_TABLE_SUFFIX, r'(\d+)') BETWEEN '20170807' and '20170809'
GROUP BY
Date,
IMEI,
Branch,
Truck,
Installer
ORDER BY
Date DESC,
Count DESC;
您可以更改我在选择中使用的日期,以确定最适合您的日期
如果您将在DataStudio中使用该查询,我倾向于基于今天的日期和返回时间的天数创建一个日期范围。例如:
AND REGEXP_EXTRACT(_TABLE_SUFFIX, r'(\d+)') BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)) and FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 0 DAY))
这将自动查询从今天算起的过去30天。您可以根据data studio报表中最有效的内容调整此查询。检查此查询是否适用于您:
SELECT
event_dim.date AS Date,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'imei_id') AS IMEI,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'division_id') AS Branch,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'truck_id') AS Truck,
(
SELECT
value.value.string_value
FROM
UNNEST(user_dim.user_properties)
WHERE
key = 'installer_id') AS Installer,
COUNT(*) AS Count
FROM
`smarttruck-6d137.com_usiinc_android_ANDROID.app_events_*`
CROSS JOIN
UNNEST(event_dim) AS event_dim
WHERE
event_dim.name = 'app_exception'
AND EXISTS (
SELECT
1
FROM
UNNEST(event_dim.params)
WHERE
key = 'fatal'
AND value.int_value = 1 )
AND REGEXP_EXTRACT(_TABLE_SUFFIX, r'(\d+)') BETWEEN '20170807' and '20170809'
GROUP BY
Date,
IMEI,
Branch,
Truck,
Installer
ORDER BY
Date DESC,
Count DESC;
您可以更改我在选择中使用的日期,以确定最适合您的日期
如果您将在DataStudio中使用该查询,我倾向于基于今天的日期和返回时间的天数创建一个日期范围。例如:
AND REGEXP_EXTRACT(_TABLE_SUFFIX, r'(\d+)') BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)) and FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 0 DAY))
这将自动查询从今天算起的过去30天。您可以根据data studio报表中最有效的内容调整此查询。是否需要在结果中区分这两个表?或者将它们视为一个公共表就足够了?一个公共表就可以了。您需要在结果中区分这两个表吗?或者将它们视为一个公共表就足够了吗?公共表可以。只需确保您没有通过删除范围筛选条件来选择整个数据集即可。检查运行此查询时将处理多少数据。这里发生的是
*
匹配两种后缀,例如20170807
和intraday\u 20170807
。威尔的答案是使用正则表达式提取后缀的日期部分。谢谢你们,我知道你们要去哪里了。然而,这不只是我约会范围内的硬编码吗?我将在Data Studio中使用此选项,因此我希望根据用户输入更改日期。请确保您没有通过删除范围筛选条件来选择整个数据集。检查运行此查询时将处理多少数据。这里发生的是*
匹配两种后缀,例如20170807
和intraday\u 20170807
。威尔的答案是使用正则表达式提取后缀的日期部分。谢谢你们,我知道你们要去哪里了。然而,这不只是我约会范围内的硬编码吗?我将在DataStudio中使用它,因此我希望根据用户输入更改日期。另一个选项(而不是正则表达式)是使用SUBSTR(_TABLE_后缀,LENGTH(_TABLE_后缀)-7)
,但两者都可以正常工作。@ElliottBrossard酷技术!我也会尝试一下well@WillianFuks美丽的。谢谢。另一个选项(而不是正则表达式)是使用SUBSTR(\u TABLE\u后缀,LENGTH(\u TABLE\u后缀)-7)
,但两者都可以使用。@ElliottBrossard很酷的技术!我也会尝试一下well@WillianFuks美丽的。非常感谢。