SELECT DISTINCT 似乎不适用于大查询
SELECT DISTINCT doesn't appear to work with big query
我正在过滤到第二个创建的 table,它删除了重复项。但是我发现 DISTINCT 似乎不起作用,并且我最终得到具有相同 ids
的行。我只想 select 一个独特的 ID
并扔掉所有剩余的,但这不是正在发生的事情。换句话说,我不关心其他列名。
def de_dupe_affiliates(read_table, write_table):
query = """
CREATE OR REPLACE TABLE `{write_table}` AS
SELECT DISTINCT ID, BRAND, TITLE, SHORT_TITLE, PRICE, FROM `{read_table}`
""".format(read_table=read_table,write_table=write_table)
response = client.query(query).result()
我也试过了
SELECT DISTINCT(ID), BRAND
但这也是一样的。是否可以在一列上使用 DISTINCT 来执行此操作?
你的select条款
SELECT DISTINCT ID, BRAND, TITLE, SHORT_TITLE, PRICE FROM `{read_table}`
等同于
SELECT ID, BRAND, TITLE, SHORT_TITLE, PRICE FROM `{read_table}` GROUP BY ID, BRAND, TITLE, SHORT_TITLE, PRICE
表示这些字段中的任何差异 会在您的结果中创建新行。
只有当 ID、BRAND、TITLE、SHORT_TITLE、PRICE 字段是唯一的时,您的查询才有效。
如果没有,您可以使用 window 函数,例如 row_number()
或 rank()
到 select 每个 ID 一行。
考虑以下方法
SELECT AS VALUE ANY_VALUE(t) FROM (
SELECT ID, BRAND, TITLE, SHORT_TITLE, PRICE FROM read_table
) t
GROUP BY ID
我正在过滤到第二个创建的 table,它删除了重复项。但是我发现 DISTINCT 似乎不起作用,并且我最终得到具有相同 ids
的行。我只想 select 一个独特的 ID
并扔掉所有剩余的,但这不是正在发生的事情。换句话说,我不关心其他列名。
def de_dupe_affiliates(read_table, write_table):
query = """
CREATE OR REPLACE TABLE `{write_table}` AS
SELECT DISTINCT ID, BRAND, TITLE, SHORT_TITLE, PRICE, FROM `{read_table}`
""".format(read_table=read_table,write_table=write_table)
response = client.query(query).result()
我也试过了
SELECT DISTINCT(ID), BRAND
但这也是一样的。是否可以在一列上使用 DISTINCT 来执行此操作?
你的select条款
SELECT DISTINCT ID, BRAND, TITLE, SHORT_TITLE, PRICE FROM `{read_table}`
等同于
SELECT ID, BRAND, TITLE, SHORT_TITLE, PRICE FROM `{read_table}` GROUP BY ID, BRAND, TITLE, SHORT_TITLE, PRICE
表示这些字段中的任何差异 会在您的结果中创建新行。
只有当 ID、BRAND、TITLE、SHORT_TITLE、PRICE 字段是唯一的时,您的查询才有效。
如果没有,您可以使用 window 函数,例如 row_number()
或 rank()
到 select 每个 ID 一行。
考虑以下方法
SELECT AS VALUE ANY_VALUE(t) FROM (
SELECT ID, BRAND, TITLE, SHORT_TITLE, PRICE FROM read_table
) t
GROUP BY ID