Ниже приведен пример для BigQuery Standard SQL
#standardSQL
CREATE TEMP FUNCTION exampleFunction(exampleString STRING)
RETURNS STRUCT<index INT64, latency INT64>
LANGUAGE js AS
"""
arr = exampleString.split(':');
this.index = arr[0];
this.latency = arr[1];
return this;
""";
WITH `project.dataset.table` AS (
SELECT 1 exampleCol, '10:100' stringCol UNION ALL
SELECT 2, '20:200' UNION ALL
SELECT 3, '30:456'
)
SELECT exampleCol, exampleFunction(stringCol).*
FROM `project.dataset.table`
-- ORDER BY exampleCol
с результатом
Row exampleCol index latency
1 1 10 100
2 2 20 200
3 3 30 456
Примечание: если вы хотите, чтобы столбцы связывались с First, Second - вы можете либо заменить index
и latency
с соответственно first
, second
как в примере ниже
#standardSQL
CREATE TEMP FUNCTION exampleFunction(exampleString STRING)
RETURNS STRUCT<first INT64, second INT64>
LANGUAGE js AS
"""
arr = exampleString.split(':');
this.first = arr[0];
this.second = arr[1];
return this;
""";
SELECT exampleCol, exampleFunction(stringCol).*
FROM `project.dataset.table`
или вы можете использовать подход ниже
#standardSQL
CREATE TEMP FUNCTION exampleFunction(exampleString STRING)
RETURNS STRUCT<index INT64, latency INT64>
LANGUAGE js AS
"""
arr = exampleString.split(':');
this.index = arr[0];
this.latency = arr[1];
return this;
""";
SELECT exampleCol, index AS first, latency AS second
FROM (
SELECT exampleCol, exampleFunction(stringCol).*
FROM `project.dataset.table`
)
с результатом ниже в обоих случаях
Row exampleCol first second
1 1 10 100
2 2 20 200
3 3 30 456