的時候我真的需要這樣做(創建報表)whithin的BigQuery中,我使用下面的方法(簡化的例子)
SELECT input, output FROM JS(
// input table
(
SELECT input FROM
(SELECT 123 AS input),
(SELECT 1234 AS input),
(SELECT 12345 AS input),
(SELECT 123456.1 AS input),
(SELECT 1234567.12 AS input),
(SELECT 12345678.123 AS input),
(SELECT 123456789.123 AS input)
),
// input columns
input,
// output schema
"[
{name: 'input', type: 'float'},
{name: 'output', type: 'string'}
]",
// function
"function(r, emit){
emit({
input: r.input,
output: r.input.toFixed(2).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
});
}"
)
順便說一下,在最近推出的標準SQL方言 - 您可以使用FORMAT()功能。
像下面的例子。
不要忘了取消Use Legacy SQL
下顯示選項複選框
SELECT
input,
FORMAT("%'d", input) AS output
FROM (
SELECT 123 AS input UNION ALL
SELECT 1234 AS input UNION ALL
SELECT 12345 AS input UNION ALL
SELECT 123456 AS input UNION ALL
SELECT 1234567 AS input UNION ALL
SELECT 12345678 AS input UNION ALL
SELECT 123456789 AS input
)
或浮動
SELECT
input,
CONCAT(FORMAT("%'d", CAST(input AS int64)),
SUBSTR(FORMAT("%.2f", CAST(input AS float64)), -3))
FROM (
SELECT 123 AS input UNION ALL
SELECT 1234 AS input UNION ALL
SELECT 12345 AS input UNION ALL
SELECT 123456.1 AS input UNION ALL
SELECT 1234567.12 AS input UNION ALL
SELECT 12345678.123 AS input UNION ALL
SELECT 123456789.1234 AS input
)
謝謝你,米哈伊爾。不幸的是'FORMAT'語法只能在傳統SQL模式下使用。這需要重寫現有報告和ETL作業才能使用此功能。雖然在這種模式下很好的瞭解這個功能。 –