BigQuery: вставить таблицу в существующую аналитику Google с сегментированной таблицей - PullRequest
0 голосов
/ 05 мая 2020

У меня есть существующий набор данных (A) в bigquery с ga_sessions_YYYYMMDD (сегментирован по дате), который заполняется каждый день через Google Analytics. Я хотел вставить данные из другого набора данных (B) с той же схемой. Так, например, у меня есть ga_sessions_20200120 и далее, и я хотел бы вставить данные с датами ga_sessions_20191201, 20191202 из набора данных (B). Как мне этого добиться? Поскольку таблица ga_sessions_20191201 не существует в моем наборе данных (A)?

Спасибо

1 Ответ

1 голос
/ 05 мая 2020

Если вы хотите скопировать только некоторые таблицы с указанными датами из dataset_b в dataset_a, вы можете использовать команду bq внутри Bash скрипта, как показано ниже

d="20170708"
until [[ $d > 20170720 ]];
    do bq cp <dataset_b>.ga_sessions_$d <dataset_a>.ga_sessions_$s;
    d=$(date +'%Y%m%d' -d "$d + 1 day")
done

Этот скрипт будет повторять даты, начиная с даты, указанной вами в переменной d, до даты, указанной вами в предложении until. На каждой итерации команда bq копирует таблицу ga_sessions для этой даты из одного набора данных в другой.

UPDATE:

Если вы хотите скопировать свои таблицы на основе условий, связанных с его полями, вы можно использовать bq query, задав целевую таблицу для результатов вашего запроса:

date="20170708"
until [[ $date > 20170720 ]];
    do
    sql="SELECT "*" FROM <dataset_b>.ga_$date WHERE <your_condition>"
    dest="<dataset_a>.ga_sessions_${date}"
    bq query --destination_table $dest -n=0 --use_legacy_sql=false "$sql";
    date=$(date +'%Y%m%d' -d "$date + 1 day")
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...