WAWAWA_CHCHCH

業務中に出た「ちょっと困ったこと」をメモする場

【GA4×データポータル】URLの特定のディレクトリごとに集計したい

やりたいこと

データポータルにて、GA4のデータからURLのディレクトリごとにユーザー数・セッション数などを集計する。

今回の例:/blog/ の下のディレクトリで集計する

https://ドメイン/blog/{ここの部分}

やり方

ディメンション「ページ階層」にドメイン以下のURLがあるので、ここから正規表現で対象部分を抽出
→新しくディメンションを作成

①「フィールドを追加」をクリック

f:id:FiveRing0:20210220194850p:plain
「フィールドを追加」をクリック
②フィールド名に任意のものを入れ、計算式に以下のものを記入

REGEXP_EXTRACT(ページ階層, "^/blog/(\\w*)/.*$")

f:id:FiveRing0:20210220195011p:plain
フィールド追加の例
③グラフのディメンションに②で作成したものを入れ、指標に集計したいものを選択すると完成。

注意

ここで使える正規表現系の関数はGoogle RE2正規表現を使用しているので、ここにないものは使用できないので注意

↓のような先読み・後読みは反応しませんでした。

/(?<=/blog/).*?(?=/)/

【雑記】GA4で検索キーワードが確認できなくて困った話

ほぼなにも解決していない記事です。

背景

仕事で新しいWEBサービスを作ったのでGA4で確認できるようにしたが、
どこを探しても旧Googleアナリティクスにあった「検索キーワード」が確認できない・・・
SEO対策の検証もしたいのに結果を見れないのは困った・・・という状態になった。

いろいろと調べた結果

GA4のドキュメントをみても、どこから検索キーワードを確認できるのかわからず仕舞いだが、
とりあえず「GoogleSearchConsole」を使うのが一番手っ取り早そう。
ただし、GA4とGoogleSearchConsoleを連携させることはできなさそうなので、できる限り早く対応してくれることを祈るのみ・・・
(この辺りについて知っている人いたら教えてください〜)

【re:dash】PythonでGoogleSpreadSheetのデータを読み込んだら日本語の列名が認識されなかった問題

起こったこと

re:dashのPythonで、スプレッドシートの内容をexecute→カラム名を選択した際、カラム名が日本語のものだけ処理がうまくいなかった(同じ文字だと認識されていない?)

import pandas as pd

query_res = execute_query('GoogleSpreadSheet', '{スプレッドシート名}|{シート番号}')
ss_df = pd.DataFrame(query_res['rows'], columns=query_res['rows'][0].keys())

print(ss_df)
print(ss_df.filter(['id', 'col1', 'カラム1']))
col1 カラム1  id
0    a    あ   1
1    b    い   2
2    c    う   3
3    d    え   4
4    e    お   5

id col1
0   1    a
1   2    b
2   3    c
3   4    d
4   5    e

解決方法

エンコードを確認したところ、 スプレッドシートから読み込んだDF→ascii Pythonのエンコードutf-8 だった。

import chardet

print(chardet.detect(ss_df.columns.values[2]) )
print(chardet.detect('カラム1'))
{'confidence': 1.0, 'language': '', 'encoding': 'ascii'}
{'confidence': 0.87625, 'language': '', 'encoding': 'utf-8'}

列名のエンコードutf-8に修正したら解決した。

import pandas as pd

query_res = execute_query('GoogleSpreadSheet', '{スプレッドシート名}|{シート番号}')

# 列名のエンコードの変更
utf8_col= {}
for i in query_res['rows'][0].keys():
  utf8_col[i] = i.encode('utf-8')

ss_df = pd.DataFrame( query_res['rows'], columns=query_res['rows'][0].keys() ).\
    rename(columns = utf8_col)

print(ss_df.filter(['id', 'col1', 'カラム1']))
id col1 カラム1
0   1    a    あ
1   2    b    い
2   3    c    う
3   4    d    え
4   5    e    お

【R言語】re:dashのAPIが返す結果をhttrパッケージを使ってGETする

目的

業務にて、re:dashでいくつかの集計を管理しているのですが、時折「re:dashの結果をRでごにょごにょしたい」という時があります。
とはいえ毎回csvでダウンロードしてread.csvというのも面倒で、どうにかRでの操作だけで完結させたい。

解決方法

re:dash公式APIより、https://DOMAIN/api/queries/QUERY_ID/results.csv?api_key=API_KEY形式でGETすると、クエリの結果がそのままcsvが返ってきます。
これをhttrパッケージを使い、data.frameとして結果を取得します。

事前準備

re:dash管理画面のSettings > Accountより、API Keyを取得してください。

サンプルコード

## library
library(dplyr)
library(stringr)
library(httr)

## args
domain <- "xxxxx"
query_id <- "xx"
API_KEY <- "xxxxx"

## get data(csv形式)
url <- "https://DOMAIN/api/queries/QUERY_ID/results.csv?api_key=API_KEY" %>% 
  str_replace("DOMAIN", domain)
  str_replace("QUERY_ID", as.character(query_id)) %>% 
  str_replace("API_KEY", api_key )

response <- GET(url)
res_df <- content(response)

その他

「クエリの結果をGETした時刻」などの詳細データも欲しい場合は

url <- "https://DOMAIN/api/queries/QUERY_ID/results.csv?api_key=API_KEY" %>% 

.csv.jsonに変更すればOK
(ただしGETしてからの処理は若干変わります)