firebase - Firebase BigQuery 迁移 bash 错误
问题描述
我正在使用 Google 的标准工作流程来运行从旧数据集到新数据集的迁移(迁移步骤)。我估算了缺失值,例如属性 ID、BigQuery ID 等。当我运行 bash 脚本时出现以下错误?
Migrating mindfulness.com_mindfulness_ANDROID.app_events_20180515
--allow_large_results --append_table --batch --debug_mode --destination_table=analytics_171690789.events_20180515 --noflatten_results --nouse_legacy_sql --parameter=firebase_app_id::1:437512149764:android:0dfd4ab1e9926c7c --parameter=date::20180515 --parameter=platform::ANDROID#platform --project_id=mindfulness --use_gce_service_account
FATAL Flags positioning error: Flag '--project_id=mindfulness' appears after final command line argument. Please reposition the flag.
Run 'bq help' to get help.
在 stackoverflow 和谷歌上我找不到解决方案。有人知道如何解决这个问题吗?
我的 migration.sh 脚本(对 ID 稍作修改以保持匿名)
# Analytics Property ID for the Project. Find this in Analytics Settings in Firebase
PROPERTY_ID=171230123
# Bigquery Export Project
BQ_PROJECT_ID="mindfulness" #(e.g., "firebase-public-project")
# Firebase App ID for the app.
FIREBASE_APP_ID="1:123412149764:android:0dfd4ab1e1234c7c" #(e.g., "1:300830567303:ios:
# Dataset to import from.
BQ_DATASET="com_mindfulness_ANDROID" #(e.g., "com_firebase_demo_IOS")
# Platform
PLATFORM="ANDROID"#"platform of the app. ANDROID or IOS"
# Date range for which you want to run migration, [START_DATE,END_DATE]
START_DATE=20180515
END_DATE=20180517
# Do not modify the script below, unless you know what you are doing :)
startdate=$(date -d"$START_DATE" +%Y%m%d) || exit -1
enddate=$(date -d"$END_DATE" +%Y%m%d) || exit -1
# Iterate through the dates.
DATE="$startdate"
while [ "$DATE" -le "$enddate" ]; do
# BQ table constructed from above params.
BQ_TABLE="$BQ_PROJECT_ID.$BQ_DATASET.app_events_$DATE"
echo "Migrating $BQ_TABLE"
cat migration_script.sql | sed -e "s/SCRIPT_GENERATED_TABLE_NAME
$BQ_TABLE/g" | bq query \
--debug_mode \
--allow_large_results \
--noflatten_results \
--use_legacy_sql=False \
--destination_table analytics_$PROPERTY_ID.events_$DATE \
--batch \
--append_table \
--parameter=firebase_app_id::$FIREBASE_APP_ID \
--parameter=date::$DATE \
--parameter=platform::$PLATFORM \
--project_id=$BQ_PROJECT_ID
temp=$(date -I -d "$DATE + 1 day")
DATE=$(date -d "$temp" +%Y%m%d)
done
exit
# END OF SCRIPT
解决方案
如果您查看脚本的输出,它包含这段文本,就在出现故障的标志之前:
--parameter=platform::ANDROID#platform --project_id=mindfulness
我很确定您希望您的平台成为ANDROID
,而不是ANDROID#platform
。
我怀疑你可以通过在字符串末尾和内联注释之间放置一个空格来解决这个问题。所以你有这样的事情:
PLATFORM="ANDROID" #"platform of the app. ANDROID or IOS"
尽管为了安全起见,您可能希望完全删除每行末尾的注释。
推荐阅读
- google-maps - 为什么我在flutter_web中更新HtmlView时得到_state!= _PlatformViewState.disposed不是真正的异常?
- bash - 这个脚本中的“${psql[@]}”是什么意思?
- c# - 阅读嵌入在 PDF 中的文本?
- junit - junit5 并行执行不能通过 ConsoleLauncher 工作
- javascript - 为外观和感觉像地点的自定义标记添加标签
- javascript - 如何在具有特定 URL 的所有页面上进行更改
- vba - 如何使用用户窗体复选框更改 Word 文档中的控件内容复选框?
- html - 按键时如何更改网站背景?
- c# - dataGridView 搜索中的条件语句
- java - 我的任务是加载我的默认 chrome 配置文件,打开网站并单击扩展。但我有问题