Firebase BigQuery迁移bash错误

Firebase BigQuery迁移bash错误,firebase,google-bigquery,firebase-analytics,Firebase,Google Bigquery,Firebase Analytics,我正在使用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.eve

我正在使用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和Google上,我找不到解决方案。有人知道怎么解决这个问题吗

My migration.sh脚本(对ID进行小修改以保持匿名)


如果您查看脚本的输出,它包含这一位文本,就在顺序错误的标志之前:

--参数=平台::ANDROID#平台--项目id=专注力

我很确定你希望你的平台是
ANDROID
,而不是
ANDROID#平台

我想你可以通过在字符串的结尾和内联注释之间加一个空格来解决这个问题。所以你有这样的东西:

PLATFORM=“ANDROID”#“应用程序的平台。ANDROID或IOS”


尽管为了安全起见,您可能希望完全删除每行末尾的注释。

错误消息告诉您问题所在,对吗?您需要更早地移动
--project\u id
参数(在
query
命令之前)。正如Elliot所说,错误就在您面前:)“致命标志定位错误:标志'--project\u id=mindabless'出现在最后一个命令行参数之后。请重新定位标志。”脚本中的注释是“除非你知道你在做什么,否则不要修改下面的脚本:)”。我不确定我在做什么,请专家帮助;)。我试图按照你的解释和一些研究来修复错误。我尝试了两种解决方案:1.我将“-project_id=$BQ_project_id”移到“BQ”和“query”之间的行“。这是一个错误。2.我将同一行直接移到“query”之后,这会产生相同的错误(在下一个注释字段中)
# 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