Help us understand the problem. What is going on with this article?

テーブル内データのdiff

2020-04-24追記
より深く考察されている記事を見つけました。
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行として扱われてしまうので差異がないことになってしまう。

https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#set_operators

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした