先日からBigQueryのパイプライン使って複数のGA4のデータセットを一つのデータセットに統合を試みているのだが、なかなかうまくいかない。なぜか毎朝3時に自動でBQが動くように設定してるのにずっとエラーで稼働してない。。

 

失敗の理由は、

Not found: Table XXXXXX:dataform.analytics_●●●●●●●●● was not found in location asia-northeast1 at [24:13]

と表示される。

 

つまり、

Dataform(パイプライン)が「analytics_●●●●●●●●●というテーブルが dataform データセットの中にあるはずだぞー!」と思い込んで探しに行くんだけど、「そんなものはないぞー」と激怒している状態。

 

なんでこんなに怒ってるのか考えてみた。

 

もしかすると、

今回統合しようとしてる3つのデータセットのうち、エラーを起こした「analytics_●●●●●●●●●」は、4月分(先月分)のデータしかない。5月分のデータがない。だから怒ってエラーを起こしてるのかもしれない。

 

と最初は思ったのだが、そうじゃなかった。

よく考えたら前回の統合は初回の統合。その時は過去のデータを一気に統合する必要があったので、パイプラインに3つのデータセット(宣言)からデータをすべて取ってくるよう指示を出した。そのときのデータセット3つがパイプライン上に残っており、過去に統合したはずのデータを何度も読みに行ってエラーになっていた模様。

 

もう少し深堀って解説するなら、

 

▼やりたいこと:

以下3つのデータセットを統合し一つのデータセットとして毎日バックアップ保存したい

①analytics_●●●●●●●●●

②analytics_□□□□□□□□□

③analytics_△△△△△△△△△

 

▼前回やったこと:

初回統合だったので、毎日前日のデータを取ってくるという設定では過去データをすべて統合できないため、前回のみ、3つのデータセットすべての過去データをバックアップ統合する。というクエリを実行した。そのためパイプラインの画面も3つのデータセットと、統合したデータセットが表示されていた。

 

▼発生したこと:

初回のこの実行のあと、この状態を解除しないと次回も永遠とすでに統合したデータを参照してしまう。

しかも、①analytics_●●●●●●●●● は4/13 までのログデータしかない。

そうなるとDataformは「参照すべきデータが最新ではない(欠落している)」と判断してしまう。

その結果、SQLを実行する手前で、「不完全なデータを作るわけにはいかない」と処理を強制終了さたものと思われる。

 

▼原因は?

つまり、「宣言」を残したままにしていたのが原因だった。

よって、3つの宣言を削除することで正常に実行完了し、昨日の直近までのデータを統合保存することができた。

 

 

私のようにド素人がBQを触るとなにが原因かわからないことが多い。

AIも使いながら勉強中だが、やはり多少は自分である程度操作して、そこから原因を予測し調べたり、ボタンや機能、仕様などをきちんと理解した上で操作するほうが、何倍も理解の幅と深度が深まると感じた事象だった。

 

クエリももっと書けるように慣れるようこれからも精進していくぞ。