Thank you, I wouldn't have caught that in million years. The feed may not 
include awards so that is my check to see if there are any. I can use size 
or some other test though.

Thanks again.

Brandon


On Tuesday, January 12, 2016 at 10:15:25 PM UTC-5, [email protected] wrote:
>
> IIUC isdefined(:awards) tests for a global variable called awards, so it 
> won't find a local variable called awards.  What are you trying to achieve 
> with this test?
>
> On Wednesday, January 13, 2016 at 12:48:50 PM UTC+10, Brandon Booth wrote:
>>
>> So this is the full function. Note lines 4 and 5 - even if I define the 
>> "awards" and "idvs" arrays in the function, it doesn't work. If I define 
>> them outside the function, it works fine.
>>
>> Thanks.
>>
>> Brandon
>>
>> function parsefeed(url,st,fin)
>>
>>   db = SQLite.DB("/home/brandon/Documents/FPDS/fpds.db")
>>   schema = Data.Schema(["piid","task","mod","obl_amt"], [ASCIIString, 
>> ASCIIString, ASCIIString, Float64],)
>>   sink = SQLite.Sink(schema,db,"feeds")
>>   awards = ETree[]       #this doesn't matter
>>   idvs = ETree[]            #this doesn't matter
>>
>>   for x in st:10:fin
>>     dfall = DataFrame([ASCIIString, ASCIIString, ASCIIString, Float64], 
>> [:piid, :task, :mod, :obl_amt], 0)
>>     df = DataFrame([ASCIIString, ASCIIString, ASCIIString, Float64], 
>> [:piid, :task, :mod, :obl_amt], 1)
>>
>>     pg = xp_parse(readall(get(string(url,"&start=",x))))
>>     awards = xpath(pg,"/feed/entry/content/ns1:award")
>>     idvs = xpath(pg,"/feed/entry/content/ns1:IDV")
>>
>>     if isdefined(:awards)
>>       for award in awards
>>         df[:piid] = 
>> string(LibExpat.find(award,"ns1:awardID/ns1:awardContractID/ns1:PIID#string"))
>>         df[:task] = string(LibExpat.find(award, 
>> "ns1:referencedIDVID/ns1:PIID#string"))
>>         df[:mod] = string(LibExpat.find(award, 
>> "ns1:awardID/ns1:awardContractID/ns1:modNumber#string"))
>>         df[:obl_amt] = 
>> float64(LibExpat.find(award,"ns1:dollarValues/ns1:obligatedAmount#string"))
>>         append!(dfall,df)
>>       end
>>     end
>>
>>     if isdefined(:idvs)
>>       for idv in idvs
>>         df[:piid] = string(LibExpat.find(idv, 
>> "ns1:awardID/ns1:awardContractID/ns1:PIID#string"))
>>         df[:task] = ""
>>         df[:mod] = string(LibExpat.find(idv, 
>> "ns1:awardID/ns1:awardContractID/ns1:modNumber#string"))
>>         df[:obl_amt] = 
>> float64(LibExpat.find(award,"ns1:dollarValues/ns1:obligatedAmount#string"))
>>         append!(dfall,df)
>>       end
>>     end
>>
>>     if size(dfall,1) > 0
>>       source = convertdf(dfall) #Data.Table(dfall) doesn't work, but I 
>> copied the function from DataStreams and called it convertdf and that 
>> solves the problem.
>>       Data.stream!(source,sink)
>>     end
>>   end
>> end
>>
>

Reply via email to