Я хочу начать отвечать на ваш вопрос в том виде, в котором вы его представили.
Нет, вы не можете фильтровать по новому сгенерированному псевдониму столбца, который вы просто создаете в операторе select, и я объясню, почему позже.
С другой стороны, вы правильно используете CLE (деталь, которая начинается с WITH) для фильтрации данных в последующем SELECT. Проблема в том, что вы ссылаетесь не на ту вещь.
В первой части вы только что создали новую таблицу с именем "my_data" , и эта таблица содержит два столбца: my_timestamp и my_customer . Впоследствии вы можете запросить эту таблицу и отфильтровать по отметке времени, единственное, что вы не можете использовать псевдоним, который вы создали в операторе SELECT в предложении WHERE. Это связано с тем, что существует определенный порядок, в котором выполняются операторы SQL.
В этом случае вы используете псевдоним "my_date" в предложении where но WHERE обрабатывается перед предложением SELECT , поэтому предложение WHERE не знает, что такое "my_date" , и для этого причина, по которой вы получаете эту ошибку, касающуюся «my_date».
Я не уверен в синтаксическом анализе в BigQuery, никогда не используйте его раньше, но при условии, что ваш анализ с датами правильный. Единственное изменение, которое потребуется вашему запросу, это изменить "my-date" в предложении where на DATE (my_timestamp)
WITH
my_data AS(
SELECT
TIMESTAMP("2020-02-11 13:15:00 UTC") AS my_timestamp,
50 AS my_customers)
SELECT
DATE(my_timestamp) AS my_date,
my_customers
FROM
my_data
WHERE
DATE(my_timestamp) = "2020-02-11"
Найдите ниже SQL Порядок работы, о котором я упоминал ранее. Всегда важно учитывать это при разработке запросов.
- ОТ
- ГДЕ
- GROUP BY
- HAVING
- SELECT
- ЗАКАЗАТЬ ПО
Надеюсь, эта помощь.