BigQuery - 无法加入重复字段

BigQuery - Cannot join on repeated field

我正在尝试创建一个 table,它有 1 列,每行都是 2 个不同日期之间的新日期。在我添加一个包含子查询的 where 子句之前,查询工作正常。不在(SELECT ....)。如果我做类似 NOT IN (TIMESTAMP('xyz')) 的事情,它就可以正常工作。

我一直收到一条错误消息 "Cannot join on repeated field t2.f0__group.SomeDate"

我不知道为什么会这样。我对 BQ 还很陌生,所以如果有更简单的方法,请告诉我。谢谢

SELECT SomeDate FROM
(
  SELECT DATE_ADD(Day, i, "DAY") SomeDate
  FROM
  (
    SELECT '2020-01-03' Day
  ) T1
  CROSS JOIN
  (
    SELECT
     POSITION(
       SPLIT(
         RPAD('', DATEDIFF('2020-01-30','2020-01-03') * 2, 'a,'))) i 
    FROM
    (
      SELECT NULL
    )
  ) T2
)
WHERE SomeDate NOT IN (SELECT OtherDate FROM 
  (
    SELECT TIMESTAMP('2020-01-04 00:00:00 UTC') AS OtherDate
  ),
  (
    SELECT TIMESTAMP('2020-01-06 00:00:00 UTC') AS OtherDate
  ),
  (
    SELECT TIMESTAMP('2020-01-08 00:00:00 UTC') AS OtherDate
  )
)

我建议使用以下示例从头开始
我认为它确实可以通过可能的微小调整实现您想要实现的目标

SELECT SomeDate
FROM (
  SELECT 
    DATE(DATE_ADD(TIMESTAMP('2020-01-03'), pos - 1, "DAY")) AS SomeDate
  FROM (
     SELECT ROW_NUMBER() OVER() AS pos, *
     FROM (FLATTEN((
       SELECT SPLIT(RPAD('', 1 + DATEDIFF(TIMESTAMP('2020-01-30'), TIMESTAMP('2020-01-03')), '.'),'') AS h
       FROM (SELECT NULL)),h
    ))
  )
) a
LEFT JOIN (
SELECT OtherDate FROM
    (SELECT '2020-01-04' AS OtherDate),
    (SELECT '2020-01-06' AS OtherDate),
    (SELECT '2020-01-08' AS OtherDate)
) b
ON b.OtherDate = a.SomeDate
WHERE b.OtherDate IS NULL