Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
20
Help us understand the problem. What are the problem?
@damassima

テーブル内データのdiff

2020-04-24追記
2021-08-23URL修正
より深く考察されている記事を見つけました。
BigQuery テーブル同士の一致判定 | Queuery


集合演算可能な2つのテーブル(カラムの数と型が同じテーブル)の差異を取得する。

例えば、対象テーブル(foo)の、ある時点のデータを別テーブル(foo_backup)として保存しておき、その内容の差異を取得する。

方法1

(
    select * foo
    union all
    select * foo_backup
)
except all
(
    select * foo
    intersect all
    select * foo_backup
)

方法2

(
    select * foo
    except all
    select * foo_backup
)
union all
(
    select * foo_backup
    except all
    select * foo
)
  • 方法2の方が対称的で覚えやすいかも
  • allを忘れると重複行が1行になってしまうので注意

ベン図を描かないと理解しにくい、、、。

2020.7.14追記

BigQueryでは EXCEPT ALL が使えないので、代わりに EXCEPT DISTINCT を使う。
ただし当然、2つのテーブル間で同値行の行数が異なる場合でも、1行として扱われてしまうので差異がないことになってしまう。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
20
Help us understand the problem. What are the problem?