2011-06-13 54 views
1

我曾經使用YQL來檢索幾個RSS源(通道)的,使用下面的查詢:限制和處理錯誤的YQL RSS feednormalizer

SELECT * FROM feednormalizer 
WHERE output="rss_2.0" 
AND url in ("http://rss.cnn.com/rss/edition.rss", 
      "http://bad.url.com/nothing", 
      "http://rss.cnn.com/rss/edition_space.rss") 

所以其實我有2個問題:

  1. 我怎樣才能限制每個飼料的一定量的項目? (例如,我想要獲得每個頻道的前3項)
  2. 請注意,第2個網址無效(不是真正的RSS的網址)。在這種情況下,YQL結果會返回2個有效通道並附加一個錯誤,但沒有指示哪些URL有效,哪個URL失敗。換句話說,對於每個結果饋送,沒有指示它來自哪個URL。
    有關如何識別每個頻道的任何想法?

感謝

回答

1

1號問題:

浮現在腦海的第一個念頭是使用query.multi

SELECT rss.channel.item FROM query.multi WHERE queries=" 
    SELECT channel.item FROM feednormalizer WHERE output='rss_2.0' AND url = 'http://rss.cnn.com/rss/edition.rss' LIMIT 3; 
    SELECT channel.item FROM feednormalizer WHERE output='rss_2.0' AND url = 'http://rss.cnn.com/rss/edition_space.rss' LIMIT 3;" 

不是最優雅的方式,但它的工作原理。

第二個問題:

我不認爲這是可能的。由於YQL的WHERE x IN()...語法並不是一個真正的SQL連接,因此無法在投影中選擇內部子查詢的某些部分,您將需要哪些內容。

會很高興,如果有人將坡口我錯了這一個,因爲我需要一個自己始終幾次不得不解決它編程:)

+0

感謝。第一個答案有幫助。但結果的格式有點雜亂,你需要分別請求頻道的數據。但它給了我一個關於第二個問題的想法:你可以使用多重查詢,並且如果單個提要無效 - 你可以通過它的索引來知道它是哪一個。也不是最優雅 - 但至少它的作品:)無論如何 - 再次感謝您的幫助! – 2011-06-13 17:06:46