在BigQuery中复制/重复字符串

问题描述 投票:0回答:2

是否可以使用bigquery以指定的次数复制字符串?这是我想要实现的一个玩具示例......

输入:

id | count
----------
a  | 1
b  | 2
c  | 3

按计数复制id(即所需的输出):

id | newstr
----------
a  | a
b  | bb
c  | ccc

似乎这个功能是由REPLICATE在其他sql变种中提供的。

google-bigquery
2个回答
4
投票

您不需要UDF。无论如何它会慢得多。只需使用SQL函数REPEAT(请参阅here):

#standardSQL
WITH
  data AS (
  SELECT
    'a' AS id,
    2 AS repititions
  UNION ALL
  SELECT
    'b' AS id,
    3 AS repititions)
SELECT
  id,
  repititions,
  REPEAT(id,
    repititions) AS repeated
FROM
  data

产量

enter image description here


1
投票

我认为BigQuery中没有REPLICATE()函数,但您可以像这样创建UDF函数:

#standardSQL
CREATE TEMPORARY FUNCTION REPLICATE(x STRING, y FLOAT64)
RETURNS STRING
LANGUAGE js AS """
  return x.repeat(y);;
""";

WITH data AS (SELECT 'a' as id, 2 as count),
     data1 AS (SELECT 'b' as id, 3 as count)
SELECT id, REPLICATE(id,count) as newstr FROM data
UNION ALL
SELECT id, REPLICATE(id,count) as newstr FROM data1

在这种情况下输出将是:

Row id  newstr 
1   a   aa
2   b   bbb
© www.soinside.com 2019 - 2024. All rights reserved.