やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

SQLite3に登録済みのNewsApiデータから最新を取得する

 重複しないための手順1。

成果物

前提

 以下のような手順でテストデータを用意する。

  1. NewsApiを取得する(NewsApiでカテゴリ別にニュースを取得する
  2. SQLite3DBファイル作成する(NewsApiで得たニュースを保存するSQLite3テーブルを考える
  3. 3のJSONファイルをDBファイルに取り込む(NewsApiのJSONからSQLite3DBファイルへ挿入する

 この状態で、以下コードを実行し、最新1件分のデータが出力されることを確認する。

コード

 DB内にある最新ニュースを取得する。

get_latest.sql

.separator "\n" "\n"
with 
  newest(max_published) as (
    select max(published) max_published from news
  ),
  latest(max_id) as (
     select max(id) as max_id
     from news,newest 
     where news.published=newest.max_published
  )
select published,url,title 
from news,newest,latest 
where 
  news.published=newest.max_published and 
  news.id=latest.max_id
;

 たとえば以下のように。日付、URL、タイトルの順。これらがあればニュースを一意に特定できるだろう。

2019-09-15T23:54:00Z
https://jp.reuters.com/article/us-stocks-week-ahead-idJPKBN1W00WF
今週の米株、FRBのフォワードガイダンス次第で波乱も - ロイター (Reuters Japan)

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux