Google bigquery 在我的日内桌上放上所有的东西

Google 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

我已经看过几个例子,但我不知道如何将我的查询格式化为一个合并了日内表的联合。TABLE_后缀很好地抓取了我所有的日常表格,但我还需要抓取intraday
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美丽的。非常感谢。