2017-10-09 36 views
0

正試圖找出一種方法來讓簡單的salesforce只給我列表中的所有字段名稱。我想創建soql查詢,這幾乎和select *在sql中一樣。問:Simple-Salesforce製作了一個動態的soql查詢

的OBJ中的對象:

fields = [x["name"] for x in sf[obj].describe()["fields"]] 

感謝

+0

您確定您確實需要選擇所有字段嗎?這通常被認爲是一種不好的做法,可能會影響性能(對於Salesforce,它可能會導致達到極限)。 –

+0

我想爲每個Sobject選擇所有的字段,因爲我們想創建一個包含所有字段的數據湖。 – oharr

回答

0

此方法將返回一個查詢字符串中傳遞的對象的所有字段那麼所有的用戶可以訪問域。

public static string getFullObjectQuery(String sObjectName){ 
Schema.SObjectType convertType = Schema.getGlobalDescribe().get(sObjectName); 
Map<String,Schema.sObjectField> fieldMap = convertType.getDescribe().Fields.getMap(); 
Set<String> fields = fieldMap.keySet(); 
String Query = 'SELECT '; 
for(String field: fields){ 
    Schema.DescribeFieldResult dfr = fieldMap.get(field).getDescribe(); 
    if(dfr.isAccessible()){ 
    Query += field + ','; 
    } 
} 
Query = query.SubString(0,Query.length() - 1); 
Query += ' FROM ' + sObjectName; 

return Query; 
} 
+0

這看起來像Apex代碼,我相信OP想要一個Python代碼示例 – eyescream

+0

你是對的我的錯。 – Psymn