选择 BigQuery 中没有记录的记录

rmg*_*rmg 3 google-bigquery

我在 BigQuery 中的 Google Vision API 调用结果位于一个表中,其架构如下所示:

image STRING NULLABLE
...
labelAnnotations    RECORD  REPEATED    
labelAnnotations.description    STRING  NULLABLE    
...
Run Code Online (Sandbox Code Playgroud)

我能够通过如下查询获取具有一个或多个标签的所有图像:

  SELECT image,
      count(labelAnnotations.description) as n_labels
  FROM datasetid.tableid,
  UNNEST(labelAnnotations) as labelAnnotations
  GROUP BY 1
Run Code Online (Sandbox Code Playgroud)

image当特定图像没有 labelAnnotations 记录时,如何获取该值?IE。API 返回空的 labelAnnotations 记录,或者根本没有记录。

我希望这是显而易见的,但尝试使用WHERE labelAnnotations IS NULL失败了。

Mik*_*ant 8

当特定图像没有 labelAnnotations 记录时,如何获取图像值?

以下是 BigQuery 标准 SQL

#standardSQL
SELECT image
FROM `datasetit.tableid`
WHERE ARRAY_LENGTH(labelAnnotations) = 0   
Run Code Online (Sandbox Code Playgroud)

您可以使用下面的虚拟数据来测试/玩上面的内容

#standardSQL
WITH `datasetit.tableid` AS (
  SELECT 'image1' image, [STRUCT<description STRING>('label1'), STRUCT('label2')] labelAnnotations UNION ALL
  SELECT 'image2', [] UNION ALL
  SELECT 'image3', [STRUCT<description STRING>('label3')] 
)
SELECT image
FROM `datasetit.tableid`
WHERE ARRAY_LENGTH(labelAnnotations) = 0
Run Code Online (Sandbox Code Playgroud)