-
Notifications
You must be signed in to change notification settings - Fork 25
rforcecom.query SOQL rbind.fill issue #23
Comments
@mtwright88 If dataset contains too many missing values, |
you could also try:
The fill = TRUE argument in combination with rbindlist should be much more efficient than rbind.fill as it is written entirely in C. |
@hiratake55 I don't think it will work for the bulk query option due to some of the restrictions that bulk queries have. I am using Relationship fields. It works when I use the dpyr function bind_rows or when I roll back the package to 0.7 though. @abeburnett I believe there is also rbind.all which is built in C as well. I think these are all depreciated versions of the new dplyr function bind_rows, not sure which one is the fastest though. |
@abeburnett @mtwright88 Thank you for your advice. I'll check |
@mtwright88 Would you mind sharing your SOQL and possibly a snippet of the returned XML from the curl command (de-identified if needed)? Salesforce returns different XML response formats depending on how the SOQL is written, so hard to identify root cause of your issue without more detail. Also, I'm trying to gather more examples to test a different parsing strategy to handle things like nested queries and foreign object relationships. That function is available here: https://github.com/ReportMort/RForcecom/blob/query-refactor/R/rforcecom.utils.R and you're free to install from my branch to test yourself. |
@ReportMort Sure thing. Here is the SOQL query: And here is one of the 5000+ records that are returned. I had to put a space after < because it wasn't showing up in the message otherwise. < records type="ContL__c" url="xxxxxxxxxxxxxxxxxxxxxxxxx"> Like I said the query.more will bind using other methods or the .7 version with rbind.fill of Rforcecom. Thanks a lot for looking at this :). |
I've got the same failure going on. The query returns successfully when I impose a row return limit, but fails when pulling the full query (40K lines). Using bulkQuery isn't a work around because of the limitations on those types of queries (traversing relationships etc.) For now the only workaround I've found is regressing to the 0.7 package which doesn't appear to have the same failure. |
replace line 65: xdf.iconv <- rbind.fill(xdf.iconv, nextRecords) with improved code: xdf.iconv <- rbindlist(xdf.iconv, nextRecords, fill = TRUE) from source: hiratake55#23
Also having this issue with version 0.8, had to revert to 0.7 to get it to work. The fill=TRUE did not help; when I copied the rforcecom.query code into a user-defined function I got an error: function forcecom.api.getSoqlEndpoint could not be found. |
I had same issue, which I didn't two months ago. I tried all suggested solutions here including reverting to v0.7, not working for me. FALSE, It worked, I just needed to restart R, install v0.7. I'll keep the comment above as is, so if anyone else like me didn't figure it out. |
@kng229 When you copied the function code and received the error |
@jnawras I wrote my own function that works for some more complex query structures (example queries listed below that work). I opened a pull request (#31), so that hopefully the author starts to consider using a new approach. Here is how to install my version of RForcecom with different query parser is you are interested:
Working Query Structures:
|
@ReportMort This is very helpful, thanks Steve! |
A query that was working last week is now producing an error of:
Error: All inputs to rbind.fill must be data.frames
It seems to throw this error when queriing over 2000 values, calling the rforcecom.queryMore, failing on the rbind.fill piece.
It looks like xdf.iconv is not a data frame inside of rforcecom.queryMore. Any reason why this would have just started to happen?
The text was updated successfully, but these errors were encountered: