Hi Bobby, The AdWords API is the only API available, so there is nothing else to compare it with in regards to speed. You can try using the AdGroupCriterionService instead of the BulkMutateJobService, but I don't know if you'll see a dramatic speed difference.
Best, - Eric On Aug 9, 6:21 am, bobby <noriordan+apit...@cartrawler.com> wrote: > Thanks Eric, yes I understand that - but what I was really asking was > "what is the fastest > way to upload 300,000 keywords?". > > In other words - is the ADWORDS API the fastest way to do it, or is > there some other form > of transfer that I can use? > > Currently 300,000 keywords is taking me nearly 12 hours to upload - > which is not an acceptable > performance level for my customer. > > Our business want to operate in a much more dynamic way with ADWORDS, > and we were hoping the API > would be a way to accomplish that, but so far it's looking like - > while the flexibility and > the potential to automate is there - that we are prevented from > scaling up due to the performance. > > Any pointers you can provide would be like water to a dry duck at this > stage. > > Thanks, > Bobby > > On Aug 6, 10:12 pm, AdWords API Advisor <adwordsapiadvi...@google.com> > wrote: > > > > > Hi Bobby, > > > The BulkMutateJobService does not offer any speed benefits over the > > regular synchronous services. There is the possibility of concurrent > > processing of operations, but in general you shouldn't assume that > > operations will process any faster using the BMJS. The BMJS is > > designed for uploading large numbers of entities, such as keywords and > > ads, but it should not be used for time-sensitive changes. > > > Best, > > - Eric Koleda, AdWords API Team > > > On Aug 5, 8:43 am, bobby healy <robertjohnpatrickhe...@googlemail.com> > > wrote: > > > > OK, I've searched everywhere and there doesn't seem to be a single, > > > definitive answer to this question-: > > > > "How do I bulk upload about 300,000 keywords as quickly as possible ?" > > > > Currently this takes me about 24 hours using the following code. Is > > > there any faster way to do this ? > > > > AdGroupAd textAdGroupAd = new AdGroupAd(); > > > > textAdGroupAd.setAdGroupId(g.getAdGroupID()); > > > textAdGroupAd.setAd(textAd); > > > AdGroupAdOperation textAdGroupAdOperation = new > > > AdGroupAdOperation(); > > > textAdGroupAdOperation.setOperand(textAdGroupAd); > > > textAdGroupAdOperation.setOperator(Operator.ADD); > > > ... add some exemptions.... > > > l.adGroupAdOperations.add(textAdGroupAdOperation); > > > BulkMutateJobServiceInterface bulkMutateJobService = > > > user.getService( > > > > AdWordsService.V201003.BULK_MUTATE_JOB_SERVICE); > > > // Set scope of jobs. > > > EntityId scopingEntityId = new > > > EntityId(EntityIdType.CAMPAIGN_ID, c.getCampaignID()); > > > long jobId = createAndBeginJob(bulkMutateJobService, > > > scopingEntityId, e.getValue().adGroupAdOperations.toArray(new > > > AdGroupAdOperation[0])); > > > OperationResult[] operationResults = > > > retrieveResultsFromJob(bulkMutateJobService, jobId, null); > > > > private static OperationResult[] retrieveResultsFromJob( > > > BulkMutateJobServiceInterface bulkMutateJobService, long > > > jobId, ProgressDialog p) > > > throws InterruptedException, IOException { > > > List<OperationResult[]> operationResultsByPart = new > > > ArrayList<OperationResult[]>(); > > > BulkMutateJob job = null; > > > > // Create selector. > > > BulkMutateJobSelector selector = new BulkMutateJobSelector(); > > > selector.setJobIds(new long[]{jobId}); > > > > // Loop while waiting for the job to complete. > > > int percent = 1; > > > do { > > > BulkMutateJob[] jobs = bulkMutateJobService.get(selector); > > > job = jobs[0]; > > > > System.out.println("Bulk mutate job with id \"" + > > > job.getId() + "\" has status \"" + job.getStatus() + "\"."); > > > > if (job.getStatus().equals(BasicJobStatus.PENDING) || > > > job.getStatus().equals(BasicJobStatus.PROCESSING)) { > > > if (p != null) > > > p.setProgress(percent++); > > > Thread.sleep(10000); > > > } > > > } while (job.getStatus().equals(BasicJobStatus.PENDING) || > > > job.getStatus().equals(BasicJobStatus.PROCESSING)); > > > > ************* the above WHILE loop is where it spends all it's time - > > > PROCESSING for hours...**************** > > > > if (job.getStatus() == BasicJobStatus.FAILED) { > > > throw new ApiException("Job failed.", null, null); > > > } > > > > for (int i = 0; i < job.getNumRequestParts(); i++) { > > > // Set selector to retrieve results for part. > > > selector.setResultPartIndex(i); > > > BulkMutateJob jobWithResult = > > > bulkMutateJobService.get(selector)[0]; -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en