より単純なデータの例を参照すると簡単な質問を得ることができました。助けが要る。1行= 1のイベント(ネストされたデータ内のネストされたデータ)のテーブルへのFireQuestへのFirebaseのエクスポートを
BigQuery内でjsonスタイルのデータを照会するのが初めてで、FirebaseがBigQueryにダンプする解析(イベント)データに問題があります。 1行のデータのフォーマットは以下の通りです(いくつかの綿毛を整えます)。
{
"user_dim": {
"user_id": "some_identifier_here",
"user_properties": [
{
"key": "special_key1",
"val": {
"val": {
"str_val": "894",
"int_val": null
}
}
},
{
"key": "special_key2",
"val": {
"val": {
"str_val": "1",
"int_val": null
}
}
},
{
"key": "special_key3",
"val": {
"val": {
"str_val": "23",
"int_val": null
}
}
}
],
"device_info": {
"device_category": "mobile",
"mobile_brand_name": "Samsung",
"mobile_model_name": "model_phone"
},
"dt_a": "1470625311138000",
"dt_b": "1470620345566000"
},
"event_dim": [
{
"name": "user_engagement",
"params": [
{
"key": "firebase_event_origin",
"value": {
"string_value": "auto",
"int_value": null,
"float_value": null,
"double_value": null
}
},
{
"key": "engagement_time_msec",
"value": {
"string_value": null,
"int_value": "30006",
"float_value": null,
"double_value": null
}
}
],
"timestamp_micros": "1470675614434000",
"previous_timestamp_micros": "1470675551092000"
},
{
"name": "new_game",
"params": [
{
"key": "total_time",
"value": {
"string_value": "496048",
"int_value": null,
"float_value": null,
"double_value": null
}
},
{
"key": "armor",
"value": {
"string_value": "2",
"int_value": null,
"float_value": null,
"double_value": null
}
},
{
"key": "reason",
"value": {
"string_value": "power_up",
"int_value": null,
"float_value": null,
"double_value": null
}
}
],
"timestamp_micros": "1470675825988001",
"previous_timestamp_micros": "1470675282500001"
},
{
"name": "user_engagement",
"params": [
{
"key": "firebase_event_origin",
"value": {
"string_value": "auto",
"int_value": null,
"float_value": null,
"double_value": null
}
},
{
"key": "engagement_time_msec",
"value": {
"string_value": null,
"int_value": "318030",
"float_value": null,
"double_value": null
}
}
],
"timestamp_micros": "1470675972778002",
"previous_timestamp_micros": "1470675614434002"
},
{
"name": "won_game",
"params": [
{
"key": "total_time",
"value": {
"string_value": "497857",
"int_value": null,
"float_value": null,
"double_value": null
}
},
{
"key": "level",
"value": {
"string_value": null,
"int_value": "207",
"float_value": null,
"double_value": null
}
},
{
"key": "sword",
"value": {
"string_value": "iron",
"int_value": null,
"float_value": null,
"double_value": null
}
}
],
"timestamp_micros": "1470677171374007",
"previous_timestamp_micros": "1470671343784007"
}
]
}
私はオブジェクトuser_dim
の最初の部分でうまく動作することができました、私の元の質問への回答に基づいています。しかし、私がevent_dim
フィールドへの同様のアプローチを試みると(それをネストしない)、クエリは "エラー:複数の要素を生成したスカラーサブクエリ"というエラーメッセージで失敗します。私は疑問があります。これは、event_dim
が配列そのものであり、それらにも配列を持つ構造体を含んでいるという事実によるものです。
ここで私がエラーを出している基本的な質問ですが、BQのこのタイプのデータを扱う私の要素からかなり外れており、完全にコースから外れる可能性があります。
SELECT
(SELECT name FROM UNNEST(event_dim) WHERE name = 'user_engagement') AS event_name
FROM
my_table;
私はためつもりだ最終的な結果は、各オブジェクトevent_dim
配列内のイベントにつき1行を出力し、テーブルにオブジェクトのこれらのタイプの多くを含むテーブルを回すことができるクエリです。すなわち上記の例のオブジェクトの場合、最初の列のセットが同一であり、ちょうどuser_dim
のメタデータである4行を出力したいと考えています。次に、event_name, firebase_event_origin, engagement_time_msec, total_time, armor, reason, level, sword
のような可能なイベントごとに存在することがわかっているものに基づいて明示的に定義できる列を作成し、そのイベントパラメータの値を入力します。
「エラー:スカラーサブクエリが複数の要素を生成しました」というクエリを共有できますか? –
@FelipeHoffaが編集しました – KevinTydlacka