Google bigquery 将一列拆分为多列

Google bigquery 将一列拆分为多列,google-bigquery,Google Bigquery,请求谷歌大查询帮助 我们有一个数据表,其中一列是status,它捕获 票的生命周期。 此字段包含工单指定日期、正在进行的工作、已关闭、待定等。 各类。下面是一个例子: “已分配2017年01月03日06:13:47上午->在建工程2017年02月03日05:27:52上午->已解决2017年06月04日03:34:16上午” 我们需要在此列的基础上创建多个列-一个用于分配,另一个用于分配 为了解决问题等。 我们尝试了以下几种选择 子状态跟踪,11,20分配日期, rightSTATUS_TRAI

请求谷歌大查询帮助 我们有一个数据表,其中一列是status,它捕获 票的生命周期。 此字段包含工单指定日期、正在进行的工作、已关闭、待定等。 各类。下面是一个例子: “已分配2017年01月03日06:13:47上午->在建工程2017年02月03日05:27:52上午->已解决2017年06月04日03:34:16上午” 我们需要在此列的基础上创建多个列-一个用于分配,另一个用于分配 为了解决问题等。 我们尝试了以下几种选择

子状态跟踪,11,20分配日期, rightSTATUS_TRAIL,截止日期为34

但这样做的结果并不是最新的,因为每一列都可能错过其中一列
其他状态,即某些票据尚未关闭或任何票据未挂起且为WIP,而某些票据已关闭。

请尝试下面的BigQuery标准SQL

标准SQL 以你的桌子为例 选择“分配的2017年01月03日06:13:47上午->正在进行的工作2017年02月03日05:27:52上午->已解决的2017年06月04日03:34:16上午”作为票证 选择 REGEXP\u EXTRACTticket,r'Assigned\\d\d/\d\d/\d\d\d\d:\d\d:\d\d[AP]M\', REGEXP\u EXTRACTticket,r'Work In Progress\\d\d/\d\d/\d\d\d\d\d\d:\d\d:\d\d[AP]M\', REGEXP\u EXTRACTticket,r'Resolved\\d\d/\d\d/\d\d\d\d\d:\d\d:\d\d[AP]M\' 从你的桌子上 尝试拆分功能:

#standardSQL
WITH Input AS (
   SELECT 'Assigned (03/01/2017 06:13:47 AM) -> Work In Progress (03/02/2017 05:27:52 AM) -> Resolved (04/06/2017 03:34:16 AM)' AS STATUS_TRAIL
)
SELECT
  events[SAFE_OFFSET(0)] AS assigned_event,
  events[SAFE_OFFSET(1)] AS progress_event,
  events[SAFE_OFFSET(2)] AS resolved_event
FROM (
  SELECT
    SPLIT(STATUS_TRAIL, ' -> ') AS events
  FROM Input
);
或者,作为查看数据的另一种方式,您可以将其建模为一个包含事件类型和时间戳条目的数组:

#standardSQL
WITH Input AS (
   SELECT 'Assigned (03/01/2017 06:13:47 AM) -> Work In Progress (03/02/2017 05:27:52 AM) -> Resolved (04/06/2017 03:34:16 AM)' AS STATUS_TRAIL
)
SELECT
  ARRAY(
    SELECT AS STRUCT
      parts[SAFE_OFFSET(0)] AS type,
      PARSE_TIMESTAMP('%m/%d/%Y %T %p)', parts[SAFE_OFFSET(1)]) AS timestamp
    FROM (
      SELECT SPLIT(event_string, ' (') AS parts
      FROM UNNEST(event_strings) AS event_string
    )
  ) AS events
FROM (
  SELECT SPLIT(STATUS_TRAIL, ' -> ') AS event_strings
  FROM Input
);
输出中的每一行将类似于:

[{Assigned, 2017-03-01 06:13:47+00},
 {Work In Progress, 2017-03-02 05:27:52+00},
 {Resolved, 2017-04-06 03:34:16+00}]

这成功了,这就是我想要实现的。祝你有一个愉快的一天,米哈伊尔。你可能想接受答案并投票表决:我尝试了你的第一个方法,它帮助我取得了必要的结果。祝你今天愉快