2017-10-09 6 views
0

シンプルなsalesforceにリスト内のすべてのフィールド名を渡す方法を見つけようとしていました。私は、SQLでSelect *と同じことをするsoqlクエリを作成したいと思います。オブジェクト内のOBJのためのQ:シンプルセールスフォースで動的なsoqlクエリを作成

:。

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

関連する問題