无法弄清楚Delayed :: DeserializationError(Can't figure out Delayed::DeserializationError)
我正在使用Rails 3.2.12运行delayed_job 3.0.5(delayed_job_active_record 0.4.1)。 由于“反序列化”,我的一些工作失败了。 以下是其中一个失败处理程序的一个非常简单的示例:
--- !ruby/struct:Delayed::PerformableMethod object: LOAD;Project;924951 method: :send_project_open_close_without_delay args: []
当我尝试调用这个工作时:
Delayed::DeserializationError: Job failed to load: undefined method `members' for nil:NilClass.
每个人似乎都认为这是由不再存在的AR对象引起的。 就我而言,我可以运行处理程序:
Project.find(924951).send_open_close_without_delay
还有什么可能导致错误?
I am running delayed_job 3.0.5 (delayed_job_active_record 0.4.1) with Rails 3.2.12. I am having problems with some of my jobs failing because of "Deserialization". Here is a really simple example of one of the failing handlers:
--- !ruby/struct:Delayed::PerformableMethod object: LOAD;Project;924951 method: :send_project_open_close_without_delay args: []
When I try to invoke this job:
Delayed::DeserializationError: Job failed to load: undefined method `members' for nil:NilClass.
Everyone seems to think this is caused by an AR object that no longer exists. In my case, I can run the handler just fine:
Project.find(924951).send_open_close_without_delay
What else could be causing the error?
原文:https://stackoverflow.com/questions/15892232
最满意答案
如果以下结果是您的要求,
tab1.col1 | tab1.col2 | tab1.col3 | tab2.col3 | tab2.col4 ================================================================== page1 image1 referer1 120 85 page2 image2 referer2 200 400
然后你可以使用下面的redshift sql查询来实现它
SELECT tab1.col1, tab1.col2, tab1.col3, tab2.col3, tab2.col4 FROM (SELECT col1, col2, col3 FROM table1 GROUP BY col1, col2, col3) AS tab1 JOIN (SELECT col1, col2, col3, col4 FROM (SELECT col1, col2, col3, col4, ROW_NUMBER() OVER(PARTITION BY col1, col2 ORDER BY col3 ASC, col4 ASC) row_num FROM table2) tab2 WHERE row_num = 1) tab2 ON tab1.col1 = tab2.col1 AND tab1.col2 = tab2.col2
上面的sql语句中的键是“ROW_NUMBER()OVER(PARTITION BY col1,col2 ORDER BY col3 ASC,col4 ASC)” 。 这会给你最小值tab2.col3和最小值tab2.col4 。 如果需要最大值 ,请将订单更改为DESC
希望这可以解决你的问题。
你也可以在这里检查我写的结果集
If below result is your requirement,
tab1.col1 | tab1.col2 | tab1.col3 | tab2.col3 | tab2.col4 ================================================================== page1 image1 referer1 120 85 page2 image2 referer2 200 400
then you can achieve it using below redshift sql query
SELECT tab1.col1, tab1.col2, tab1.col3, tab2.col3, tab2.col4 FROM (SELECT col1, col2, col3 FROM table1 GROUP BY col1, col2, col3) AS tab1 JOIN (SELECT col1, col2, col3, col4 FROM (SELECT col1, col2, col3, col4, ROW_NUMBER() OVER(PARTITION BY col1, col2 ORDER BY col3 ASC, col4 ASC) row_num FROM table2) tab2 WHERE row_num = 1) tab2 ON tab1.col1 = tab2.col1 AND tab1.col2 = tab2.col2
The key in the above sql statement is "ROW_NUMBER() OVER(PARTITION BY col1, col2 ORDER BY col3 ASC, col4 ASC)". This will give you min value of tab2.col3 and min value of tab2.col4. If you need max value, then change the order to DESC
Hope this should solve your question.
You can also check the result-set here which I have written
相关问答
更多-
这很简单。 “自然”输出是行。 您的问题中的代码是跨列旋转它。 SELECT YEAR(LogDate) AS Year, MONTH(LogDate) AS Month, MAX(value) AS MaxValue FROM RawData WHERE LogDate >= '2016-05-01' AND LogDate < '2016-08-01' GROUP BY YEAR(LogDate), MONTH(LogDate) This is very ...
-
最后两个列名称末尾有两个点,并且Species拼写错误: > names(Trees) [1] "Tree.Speices" "DBH" "Basal.Area" "Compartment" "Stand" [6] "Transect.." "Plot.." 尝试: aggregate(.~ Compartment + Stand + Transect.. + Plot.. + Tree.Speices, data = Trees, FUN = su ...
-
显示不在GROUP BY子句中的列而不对其应用聚合函数(Show columns not in GROUP BY clause without applying aggregate function on it)[2024-01-09]
您可以使用KEEP子句,它比运行窗口函数(如果您的数据集更大)明显更快,资源更少: WITH data (PK_DATA, EVENT_TYPE, "DATE") AS ( SELECT 123, 'D', DATE'2015-12-12' FROM DUAL UNION ALL SELECT 123, 'I', DATE'2015-12-11' FROM DUAL UNION ALL SELECT 123, 'U', DATE'2015-12-10' FROM DUAL UNION ALL ... -
在单元格F2尝试以下公式并将其复制: =SUMPRODUCT(--($E2=$A$2:$A$13),--(F$1=$C$2:$C$13),$B$2:$B$13) 结果($E2=$A$2:$A$13)是一个包含真实和谬误的数组,具体取决于E列中的ID是否等于A列中的ID。 (F$1=$C$2:$C$13)对于约会做了同样的事情。 通过添加--在这些数组的前面,我们将trues和falses分别转换为1和0。 第三个数组包含每个月的工作小时数。 然后将这三个数组相乘(并总结,以防一个月内有一个ID的几个条目) ...
-
使用聚合将多个函数应用于数据框中的每个列(Applying multiple functions to each column in a data frame using aggregate)[2021-11-19]
正如@akrun所说, dplyr非常适合这项任务。 library(dplyr) npk %>% group_by(N, P) %>% summarise_each(funs(foo1, foo2), yield, block) # Source: local data frame [4 x 6] # Groups: N # # N P yield_foo2 block_foo2 yield_foo1 block_foo1 # 1 0 0 2.432390 1 ... -
HSQLDB支持相关子查询,所以我认为这将有效: select a.* from accounts a where a.id = (select a2.id from accounts a2 where a2.account = a.account and a2.opendate = a.opendate order by baldate desc, id asc limit 1 ...
-
首先,您的查询可能缺少FROM Company ,但在撰写帖子时可能会以某种方式丢失。 您似乎是按公司汇总数据。 因此,您需要按公司分组。 您尝试分组失败的最可能原因可能是因为您将GROUP BY放在错误的位置。 我认为你把它放在WHERE之前,但事实上它应该追求它(在ORDER BY之前): SELECT c.coID, c.coName, a.ahFirstName + ' ' + a.ahLastName AS CSRName, COUNT(o.orID) AS numOrders, ...
-
像这样? ;WITH CTESample (GroupingId, Type, Date) AS ( SELECT 1, NULL, '1/1/11' UNION ALL SELECT 1, NULL, '2/2/22' UNION ALL SELECT 2, NULL, '1/1/11' UNION ALL SELECT 2, 'A', '2/2/22' UNION ALL SELECT 3, 'A', '1/1/11' UNION ...
-
如果以下结果是您的要求, tab1.col1 | tab1.col2 | tab1.col3 | tab2.col3 | tab2.col4 ================================================================== page1 image1 referer1 120 85 page2 image2 referer2 200 ...
-
按组应用功能(Applying functions on columns by group)[2023-02-22]
您可以使用spread来spread数据框,然后进行mutate以实现您的功能 library('tidyr') library('dplyr') df %>% spread(pet, karma, drop = FALSE) %>% mutate(karma = calc(dog, cat), pet = "both") %>% select(year, pet, karma) %>% rbind(df) You can use spread to make your data frame ...