- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个看起来像这样的“供应商”表...
**company itemKey itemPriceA itemPriceB**
companyA, 203913, 20, 10
companyA, 203914, 20, 20
companyA, 203915, 25, 5
companyA, 203916, 10, 10
每个公司可能有数百万行,我想查询它以返回每个公司的 itemPriceA 和 itemPriceB 之间的代表性增量。我不在乎我带回哪个增量,只要它不为零/空(如第 2 行或第 4 行),所以我像这样使用 ANY_VALUE...
SELECT company
, ANY_VALUE(CASE WHEN (itemPriceA-itemPriceB)=0 THEN null ELSE (itemPriceA-itemPriceB) END)
FROM vendors
GROUP BY 1
它似乎有效,但我注意到 Google's documentation 中的 2 个句子似乎相互矛盾。 ...
"当组中所有行的表达式为 NULL 时,返回 NULL。ANY_VALUE 的行为就像指定了 RESPECT NULLS;考虑并选择表达式为 NULL 的行。"
如果 ANY_VALUE 返回 null “当组中 所有 行的表达式为 NULL 时”它不应该为 companyA 返回 null 对(因为 4 行中只有 2 行为 null)?但是第二句听起来确实会包含空行。
附:您可能想知道为什么我不简单地添加一个 WHERE 子句说“WHERE itemPriceA-itemPriceB>0”,但如果一家公司只有匹配的价格,我仍然希望在我的结果中返回该公司。
最佳答案
恐怕接受的答案必须显示与文档相矛盾的更有力的证据。
@Raul Saucedo 建议以下 BigQuery 文档引用 WHERE 子句:
rows for which expression is NULL are considered and may be selected
事实并非如此。 ANY_VALUE 文档中的任何地方都没有提到 WHERE 子句。 (the page 上无处。尝试 ctrl+f
。)而且文档很清楚,我会解释。
@d3wannabe 对此感到疑惑是正确的:
It seems to be working but I notice 2 sentences that seem contradictory from Google's documentation...
"Returns NULL when expression is NULL for all rows in the group. ANY_VALUE behaves as if RESPECT NULLS is specified; rows for which expression is NULL are considered and may be selected."
但文档并不矛盾。两句并存。
我们可以使用 ARRAY_AGG将一组值变成一个列表。此聚合函数可以选择 INGORE NULLS。然后我们在忽略空值后从列表中选择 1 项。
如果我们有一个包含 2 列的表:id
和 mixed_data
,其中 mixed_data
有一些带有空值的行:
SELECT
id,
ARRAY_AGG( -- turn the mixed_data values into a list
mixed_data -- we'll create an array of values from our mixed_data column
IGNORE NULLS -- there we go!
LIMIT 1 -- only fill the array with 1 thing
)[SAFE_OFFSET(0)] -- grab the first item in the array
AS any_mixed_data_without_nulls
FROM your_table
GROUP BY id
在此处查看类似的答案:
有证据表明文档可能与函数的实际行为不一致。见 Samuel's latest answer探索他的方法论。
但是,我们无法知道文档是否不正确并且 ANY_VALUE 的行为符合预期,或者 ANY_VALUE 是否存在错误并且文档表达了预期的行为。我们不知道 Google 在解决此问题时是否会更正文档或函数。
因此,我将继续使用 ARRAY_AGG 创建一个安全的 ANY_VALUE,它会忽略空值,直到我们看到 Google 的修复。
Please upvote the issue in Google's Issue Tracker看到这个问题得到解决。
关于google-bigquery - 在 BigQuery 中包含具有 ANY_VALUE 的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70915066/
我有一个包含数据的表,其中在 A 列中我有一组重复的数据(一个接一个)。 我只想根据 A 列中的值(没有其他条件)选择每个组的第一行。请注意,我还希望为提到的新发现的行选择所有相应的列(我不想排除它们
我有一个包含 340GB 数据的表,但我们只使用了最后一周的数据。因此,为了最小化将这些数据移动到分区表或分片表的成本计划。 我对分片表和分区做了一些实验。我创建了分区表并加载了两天的数据(两个分区)
我想安排将数据从 GCS 存储桶加载到 BigQuery 表。如果我使用 bigquery-transfer 与调度及时的 bigquery-loads 的核心区别是什么? 最佳答案 它们是相同的。
我想安排将数据从 GCS 存储桶加载到 BigQuery 表。如果我使用 bigquery-transfer 与调度及时的 bigquery-loads 的核心区别是什么? 最佳答案 它们是相同的。
我想编写一个 BigQuery 命令行命令来检索 BigQuery 表的最后修改时间。我怎样才能做到这一点? 仅当 BigQuery 表的最后修改日期时间大于某个日期时间时,我才会使用它。 最佳答案
我似乎无法将任何数据从 Socrata 上传到 BigQuery。我收到“加载操作中的 BigQuery 错误:无法连接 BigQuery 服务器。”最初我得到的是 0 错误错误的限制。现在我已将 C
我正在尝试弄清楚是否可以从大查询中导出 hyperloglog 草图并在外部合并它们以进行基数估计。是否有可用的开源库可以轻松解析大型查询草图? 如果不是,是否有任何关于 biq 查询的 hyperl
这是我用作https://cloud.google.com/bigquery/docs/managing-tables#bigquery-copy-table-python的引用的代码: source
构建管道时,源是 BigQueryIO.Read,您会得到一组 TableRow 对象以供使用。 我基本上想对那些 TableRow 对象进行一些小的更改,然后使用 BigQueryIO.Write
BigQuery API Client Libraries 之间有什么区别?和 BigQuery Storage API Client Libraries ? 在 BigQuery Storage R
据我所知,将数据流式传输到 BigQuery 会导致重复行,正如这里提到的 https://cloud.google.com/bigquery/streaming-data-into-bigquery
我在 BigQuery Jobs API 中注意到复制任务: https://developers.google.com/bigquery/docs/reference/v2/jobs#resourc
https://cloud.google.com/bigquery/docs/reference/datatransfer/rest/ 我正在寻找“bigquery 数据传输服务”的 php 客户端库
我正在从 GCS 中的 CSV 文件到 BQ 执行一些 ETL,一切正常,除了日期。我的表中的字段名称是 TEST_TIME,类型是 DATE,所以在 TableRow 中我尝试传递一个 java.u
我已经阅读了 BigQuery 连接器的文档(https://support.google.com/360suite/datastudio/answer/6370296?hl=en)。 我想将自定义查
当两个不同的billing account下有两个project,并且有跨两个project的授权view时,view的查询费用由哪个billing account来计费? 场景:项目 A 包含使用项
所以我有一张购买表: 用户编号 购买时间 数量 我有一张网站上的用户事件表: 用户编号 位置 浏览时间 如何在不超过 purchase_time 的情况下将 purchases 表与 activiti
我有一个 unix 时间戳列,在我的 csv 文件中以毫秒表示。现在,当我将这些数据插入到我的 bigQuery 表中并查询它时,我得到了这个错误 bigQuery not supporting mi
我目前正在将 BigQuery 表提取到 Google Cloud Storage 中的分片 .csv 中——是否有任何方法可以对提取的行进行洗牌/随机化? GCS .csv 将用作 GCMLE 模型
我需要从数据流更新和删除 BigQuery 中的记录。数据来自 Pubsub,并带有标识操作插入、更新、删除 (I、U、D) 的标志。插入不是问题。 有更新和删除的建议吗? 最佳答案 Dataflow
我是一名优秀的程序员,十分优秀!