2017-02-11 5 views
0

Я пытаюсь выполнить простую операцию, такую ​​как sql HAVING с использованием Blaze. Когда я соединяюсь вместе с помощью операции фильтрации, Blaze неправильно соединяет две команды.Blaze генерирует недопустимый sql для простого sql запроса типа HAVING?

Используя эти данные в SQLite:

index customer item quantity 
0  0  Greg Apples  5.0 
1  1  Greg Soup  NaN 
2  2 Susan Pears  2.0 
3  3 Susan Apples  3.0 

Эти две операции приводят к недопустимой SQL

cnts = by(sqllitedf.customer,cnt=sqllitedf.quantity.count()) 
res = cnts[cnts.cnt > 1] 

Вот результирующий SQL. Обратите внимание, что эти две операции были неправильно связаны друг с другом. Вместо этого функция COUNT использовалась ненадлежащим образом.

print(compute(res)) 

SELECT df.customer, count(df.quantity) AS cnt 
FROM df 
WHERE count(df.quantity) > ? GROUP BY df.customer 

Reproduction in Jupyter Notebook.

ответ

0

Отвечая на мой собственный вопрос здесь: похоже, что это известная проблема с Blaze: https://github.com/blaze/blaze/issues/1457. Кроме того, Blaze, похоже, не имел большого развития с осени 2016 года, поэтому его вряд ли скоро исправят. Я буду избегать Blaze, пока и пока он не станет более активным снова.

Смежные вопросы