我正在将列解析为不同的表,并且我有一个不断重复的操作。有没有办法避免冗余,例如,定义一个变量? 这就是我的查询的样子:
SELECT
CAST(CONCAT('0x', composed) as INT64)>>1 AS FIRST_VALUE,
CAST(CONCAT('0x', composed) as INT64)>>2 AS SECOND_VALUE,
...
我希望有类似的东西:
SELECT
INTERMEDIATE_VALUE = CAST(CONCAT('0x', composed) as INT64)
INTERMEDIATE_VALUE>>1 AS FIRST_VALUE,
INTERMEDIATE_VALUE>>2 AS SECOND_VALUE,
...
这样,转换/连接操作每个值只发生一次而不是n次。
修改 我还想将INTERMEDIATE_VALUE与WHERE子句
一起使用答案 0 :(得分:3)
简单的解决方案:
{{1}}
答案 1 :(得分:1)
以下是我发现这种情况(BigQuery Standard SQL)最优/最干净的方法
@RestController
@RequestMapping("/api/domain2")
public class DomainTwoController {
@RequestMapping("/facade3path"),
@RequestMapping("/facade4path") ...
}
例如
#standardSQL
SELECT
INTERMEDIATE_VALUE>>1 AS FIRST_VALUE,
INTERMEDIATE_VALUE>>2 AS SECOND_VALUE,
...
FROM `project.dataset.your_table`,
UNNEST([CAST(CONCAT('0x', composed) AS INT64)]) INTERMEDIATE_VALUE
WHERE INTERMEDIATE_VALUE > <some_value>
将结果显示为
#standardSQL
WITH `project.dataset.your_table` AS (
SELECT '1' composed UNION ALL
SELECT 'FF'
)
SELECT
composed,
INTERMEDIATE_VALUE,
INTERMEDIATE_VALUE>>1 AS FIRST_VALUE,
INTERMEDIATE_VALUE>>2 AS SECOND_VALUE
FROM `project.dataset.your_table`,
UNNEST([CAST(CONCAT('0x', composed) AS INT64)]) INTERMEDIATE_VALUE
WHERE INTERMEDIATE_VALUE > 10