【发布时间】:2026-01-09 05:55:02
【问题描述】:
我正在执行数据 QA 测试。
我有这个查询来确定源表和目标表之间的任何错误。
select
count(case when coalesce(x.col1,1) = coalesce(y.col1,1) then null else 1 end) as cnt_col1,
count(case when coalesce(x.col2,"1") = coalesce(y.col2,"1") then null else 1 end) as cnt_col2
from
`DatasetA.Table` x
OUTER JOIN
`DatasetB.Table` y
on x.col1 = y.col1
这个查询的输出是这样的:
col1, col2
null, null
null, null
1, null
null, 1
我需要在 200 个表上执行此测试,cols 的数量是动态的。上表只有两列,有的有50列。
我已经有了对表的查询,但我需要将所有测试的输出整合到一个输出中。我的计划是将每个查询整合到一个统一的输出中,并使用UNION ALL 将它们连接在一起。
输出集应该说:
COLUMN, COUNT_OF_ERRORS
cnt_col1, 1
cnt_col2, 1
...
cnt_col15, 0
我的问题是这样的。 如何反向旋转,以便实现我正在寻找的输出。
谢谢
【问题讨论】:
-
How do I reverse pivot this so I can achieve the output I'm looking for.- 可以通过在此处显示预期输出示例来可视化这一点! -
我做了...这是第三个代码块。
-
我现在明白了——我不清楚
-
您能否说明如何计算错误 - 根据您的示例,我会说 col1 有 1 个错误,col2 有 1 个错误,但在最终输出中,两者都显示为 0?
-
这意味着根据您的示例(块 2),在您的预期输出(块 3)中,cnt_col1 的计数应为 1,而 cnt_col2 的计数应为 1 - 即使您可能认为这对于你的问题 - 但它 - 重要 - 呈现所有清晰和干净。 :o) 所以我们可以有效地提供帮助
标签: google-bigquery