質問編集履歴
4
実現したい状態を追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,6 +3,25 @@
|
|
3
3
|
|
4
4
|
具体的なイメージで言うと、__記事名でアクセス数ランキングをだして、その補助データとして著者名を別カラムで出したい(著者名は同じレコードの中に別のキーで格納されている)__といったような用途です。
|
5
5
|
|
6
|
+
## 出力したいデータのイメージ
|
7
|
+
|
8
|
+
- article_name の閲覧数を集計して cnt を出し、降順に並べる
|
9
|
+
- どの著者が書いた記事かをわかりやすくするために、author_name カラムを横に出す
|
10
|
+
- article_name と author_name は同一レコードの同じカラムの中にネストされて入っていて、それを取り出したい
|
11
|
+
|
12
|
+
```
|
13
|
+
↓集計対象 ↓補助データ
|
14
|
+
+-----+--------------+-------------+-----+
|
15
|
+
| Row | article_name | author_name | cnt |
|
16
|
+
+-----+--------------+-------------+-----+
|
17
|
+
| 1 | My Article A | Author A | 20 |
|
18
|
+
| 2 | My Article D | Author A | 18 |
|
19
|
+
| 3 | My Article C | Author C | 11 |
|
20
|
+
| 4 | My Article B | Author B | 9 |
|
21
|
+
...
|
22
|
+
+-----+--------------+-------------+-----+
|
23
|
+
```
|
24
|
+
|
6
25
|
## 環境
|
7
26
|
Google Analytics 4
|
8
27
|
Google Tag Manager でイベントを設定
|
@@ -106,10 +125,10 @@
|
|
106
125
|
+-----+--------------+-------------+-----+
|
107
126
|
| Row | article_name | author_name | cnt |
|
108
127
|
+-----+--------------+-------------+-----+
|
109
|
-
| 1 | My Article A |null
|
128
|
+
| 1 | My Article A | null | 20 |
|
110
|
-
| 2 | My Article D |null
|
129
|
+
| 2 | My Article D | null | 18 |
|
111
|
-
| 3 | My Article C |null
|
130
|
+
| 3 | My Article C | null | 11 |
|
112
|
-
| 4 | My Article B |null
|
131
|
+
| 4 | My Article B | null | 9 |
|
113
132
|
...
|
114
133
|
+-----+--------------+-------------+-----+
|
115
134
|
```
|
3
追加で試したことを追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -43,6 +43,7 @@
|
|
43
43
|
UNNEST(event_params)
|
44
44
|
WHERE
|
45
45
|
key = 'article_name'
|
46
|
+
AND event_name = 'view_article'
|
46
47
|
)
|
47
48
|
|
48
49
|
SELECT
|
@@ -85,7 +86,7 @@
|
|
85
86
|
`my-new-project.analytics_000000000.events_*`,
|
86
87
|
UNNEST(event_params)
|
87
88
|
WHERE
|
88
|
-
|
89
|
+
event_name = 'view_article'
|
89
90
|
)
|
90
91
|
|
91
92
|
SELECT
|
@@ -113,4 +114,22 @@
|
|
113
114
|
+-----+--------------+-------------+-----+
|
114
115
|
```
|
115
116
|
|
116
|
-
追記:author_name で group by して降順にすると、著者名はちゃんと現れるのですが今度は article_name がすべて null になってしまいました。同じレコードに、article_name と author_name が両立して入っている状態を作れていないのでしょうか・・
|
117
|
+
追記:author_name で group by して降順にすると、著者名はちゃんと現れるのですが今度は article_name がすべて null になってしまいました。同じレコードに、article_name と author_name が両立して入っている状態を作れていないのでしょうか・・
|
118
|
+
|
119
|
+
---
|
120
|
+
追記2:各レコードのいずれかのカラムが null になってしまうのは UNNEST してしまってるからなと思い、このようなクエリでただカラムとキーを指定できるかなと試してみました。
|
121
|
+
|
122
|
+
```SQL
|
123
|
+
SELECT
|
124
|
+
CASE WHEN e.event_params.key = 'article_name' THEN e.event_params.value.string_value
|
125
|
+
END AS article_name,
|
126
|
+
CASE WHEN e.event_params.key = 'author_name' THEN e.event_params.value.string_value
|
127
|
+
END AS author_name
|
128
|
+
FROM
|
129
|
+
`my-new-project.analytics_000000000.events_*` as e
|
130
|
+
WHERE
|
131
|
+
event_name = 'view_article'
|
132
|
+
```
|
133
|
+
しかし、BigQuery でこのようなエラーになり、クエリを回せませんでした。
|
134
|
+
|
135
|
+
> Cannot access field key on a value with type ARRAY<STRUCT<key STRING, value STRUCT<string_value STRING, int_value INT64, float_value FLOAT64, ...>>> at [5:24]
|
2
テーブル例を追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -11,6 +11,23 @@
|
|
11
11
|
|
12
12
|

|
13
13
|
|
14
|
+
テーブルの中身はこのようになっています。
|
15
|
+
```
|
16
|
+
+-----+------------+-----------------+--------------+------------------+---------------------------------+
|
17
|
+
| Row | event_date | event_timestamp | event_name | event_params.key | event_params.value.string_value |
|
18
|
+
+-----+------------+-----------------+--------------+------------------+---------------------------------+
|
19
|
+
| 1 | 20201127 | 160394324324231 | view_article | article_name | My Article A |
|
20
|
+
| | | | | author_name | Author A |
|
21
|
+
| | | | | hogehoge key1 | hogehoge value1 |
|
22
|
+
| | | | | hogehoge key2 | hogehoge value2 |
|
23
|
+
| 2 | 20201127 | 160394324324112 | view_article | article_name | My Article B |
|
24
|
+
| | | | | author_name | Author B |
|
25
|
+
| | | | | hogehoge key1 | hogehoge value1 |
|
26
|
+
| | | | | hogehoge key2 | hogehoge value2 |
|
27
|
+
...
|
28
|
+
+-----+------------+-----------------+--------------+------------------+---------------------------------+
|
29
|
+
```
|
30
|
+
|
14
31
|
## 試したこと
|
15
32
|
|
16
33
|
記事名をもとにしたアクセス数ランキングは出すことができました。
|
1
試したことを追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -46,8 +46,8 @@
|
|
46
46
|
+-----+--------------+-----+
|
47
47
|
| 1 | My Article A | 20 |
|
48
48
|
| 2 | My Article D | 18 |
|
49
|
-
|
|
49
|
+
| 3 | My Article C | 11 |
|
50
|
-
|
|
50
|
+
| 4 | My Article B | 9 |
|
51
51
|
...
|
52
52
|
+-----+--------------+-----+
|
53
53
|
```
|
@@ -90,8 +90,10 @@
|
|
90
90
|
+-----+--------------+-------------+-----+
|
91
91
|
| 1 | My Article A |null | 20 |
|
92
92
|
| 2 | My Article D |null | 18 |
|
93
|
-
|
|
93
|
+
| 3 | My Article C |null | 11 |
|
94
|
-
|
|
94
|
+
| 4 | My Article B |null | 9 |
|
95
95
|
...
|
96
96
|
+-----+--------------+-------------+-----+
|
97
|
-
```
|
97
|
+
```
|
98
|
+
|
99
|
+
追記:author_name で group by して降順にすると、著者名はちゃんと現れるのですが今度は article_name がすべて null になってしまいました。同じレコードに、article_name と author_name が両立して入っている状態を作れていないのでしょうか・・
|