I have a related table I'm querying based on a date field but I want to include the attributes from the feature it is related to. Any ideas?
I would suggest reading the tables into a couple of dictionaries, using a process similar to what is described in Richard Fairhurst's blog: Turbo Charging Data Manipulation with Python Cursors and Dictionaries.
One way would be:
<SPAN class="keyword token">import</SPAN> arcpy relatedTbl <SPAN class="operator token">=</SPAN> r<SPAN class="string token">"C:\Path\to\file.gdb\InspectionHistory"</SPAN> relatedFields <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">'OBJECTID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'IDENTIFIER'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ESTABLISHMENTNAME'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'CITY'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'INSPDATE'</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="comment token"># IDENTIFIER is the key field and second in field list</SPAN> relatedWhere <SPAN class="operator token">=</SPAN> <SPAN class="string token">"INSPDATE BETWEEN DATE '2017-09-01' AND DATE'2017-10-01'"</SPAN> <SPAN class="comment token"># dictionary in format {'ITEMID': ('IDENTIFIER', 'ITEM1', 'ITEM2', ...), ...}</SPAN> relatedDict <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN>r<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">(</SPAN>r<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> r <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN>relatedTbl<SPAN class="punctuation token">,</SPAN> relatedFields<SPAN class="punctuation token">,</SPAN> where_clause<SPAN class="operator token">=</SPAN>relatedWhere<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">}</SPAN> <SPAN class="comment token"># print relatedDict</SPAN> <SPAN class="comment token"># get a list of keys for parent where clause: v[0] = IDENTIFIER</SPAN> keyList <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">for</SPAN> k<SPAN class="punctuation token">,</SPAN> v <SPAN class="keyword token">in</SPAN> relatedDict<SPAN class="punctuation token">.</SPAN>iteritems<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="comment token"># print k, v[0]</SPAN> keyList<SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN>v<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> parentFC <SPAN class="operator token">=</SPAN> r<SPAN class="string token">"C:\Path\to\file.gdb\RestaurantInspections"</SPAN> parentFields <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">'IDENTIFIER'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'OBJECTID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ESTABLISHMENTNAME'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'CITY'</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="comment token"># IDENTIFIER is the key field and is first in field list</SPAN> parentWhere <SPAN class="operator token">=</SPAN> <SPAN class="string token">"IDENTIFIER IN ('{}')"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"','"</SPAN><SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>set<SPAN class="punctuation token">(</SPAN>keyList<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># assuming IDENTIFIER is string, using ' -- omit for numeric key</SPAN> <SPAN class="keyword token">print</SPAN> parentWhere <SPAN class="comment token"># dictionary in format {'IDENTIFIER': ('ITEM1', 'ITEM2', ...), ...}</SPAN> parentDict <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN>r<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">(</SPAN>r<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> r <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN>parentFC<SPAN class="punctuation token">,</SPAN> parentFields<SPAN class="punctuation token">,</SPAN> where_clause<SPAN class="operator token">=</SPAN>parentWhere<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">}</SPAN> <SPAN class="comment token"># print combined results</SPAN> <SPAN class="keyword token">for</SPAN> k<SPAN class="punctuation token">,</SPAN> v <SPAN class="keyword token">in</SPAN> relatedDict<SPAN class="punctuation token">.</SPAN>iteritems<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN> k<SPAN class="punctuation token">,</SPAN> v<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> v<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> v<SPAN class="punctuation token">[</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> v<SPAN class="punctuation token">[</SPAN><SPAN class="number token">3</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> parentDict<SPAN class="punctuation token">[</SPAN>v<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> parentDict<SPAN class="punctuation token">[</SPAN>v<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> parentDict<SPAN class="punctuation token">[</SPAN>v<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registriere ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.