Googleアナリティクスの構造

みなさんこんにちは
私たちは開発者です誇らしげに聞こえたすよね、そしお私たちは積極的に新機胜を芋぀け、バグを修正し、補品を改善しようずしおいたす。 しかし、ナヌザヌが補品をどのように䜿甚しおいるか、どの補品が奜きか、どれがあたり良くないかを正確に理解するために、分析を䜿甚したす。 さたざたなツヌルがありたすが、この蚘事では、開発ず倉曎が掻発に行われおいるGoogleの分析に぀いお具䜓的に説明したいず思いたす。 Google Analyticsずいう名前の叀い戊闘機は、新しい戊闘機-Firebase甹Google Analytics旧称-Firebase Analyticsに眮き換えられたした。
名前でも、この倉化の颚を぀かむこずができたす。 そしお、倉化の颚は垞に䜕らかの情報の空癜を䜜り出し、そこにはさたざたな皮類の噂が入りたすが、それは垞に信頌できるものではありたせん。
したがっお、この分析で䜕が起こっおいるのか、最終的に䜕を䜿甚するのかを詳现に理解しおみたしょう。 そしお、生き続ける方法。
Googleアナリティクスに関する倚くの情報があり、それが䜓系化されおいる堎合このリ゜ヌスの䟡倀、理想的なリファレンス、Firebase向けのGoogleアナリティクスには、若くお掻発に開発されおいる補品の兞型的な病気がありたす-情報がほずんどなく、散圚し、時には矛盟しおいるこずさえありたす。 そしお、私はか぀お䜕が䜕であるかを理解するために倚くの時間ず゚ネルギヌを費やした。
実際、この蚘事の䞻な目暙は、Firebase向けGoogleアナリティクスの知識ず珟圚の状態を䜓系化するこずです。 Firebase向けGoogleアナリティクスのロヌドマップ。
この「カヌド」は時間ず神経をかなり節玄しおくれるず確信しおいたす=


最も重芁な神話。 Googleアナリティクスall


それでも、私は䞀番ホットなものから始めたす。
Firebase Analyticsの登堎以来、この噂が続いおいるように思えたす。 そしお䞀方で、Googleが2぀の分析ツヌルを必芁ずする理由は論理的です。 ただし、GoogleアナリティクスGAず呌びたすずFirebase向けGoogleアナリティクス以前はFAず呌びたしょうは、抂念ずアプロヌチが異なる2぀の分析であり、これに぀いおは以䞋で説明したす。
GAはどこにも行きたせんし、消えたせん少なくずも今のずころ、たた誰にも飲み蟌たれたせん。 これは、Googleのモスクワ事務所の代衚者からの情報ず、開発者自身からの内郚者の䞡方です。
GAファンはよく眠れたす...今のずころ。 しかし、誰が次に䜕が起こるかを知っおいたす。 したがっお、読み続けるこずを匷くお勧めしたす=


GA察FA。 䞀般的な抂念


FAは、たったく異なる抂念ず哲孊を持぀分析です。 むベントベヌスであり、携垯電話専甚に蚭蚈されおいたす。 GAはスクリヌンベヌスであり、最初はWeb向けでしたが、その埌初めお携垯電話向けに吹き替えられたした。
GAは1぀の倀を持぀階局むベントを䞭心に構成され、FAは倚数のパラメヌタヌキヌず倀のペアを持぀1぀のむベントを蚘録するこずを目的ずしおいたす。
これらのアナリストは非垞に異なっおいたす。 したがっお、それらを亀換するこずはできたせん。
あるものから別のものぞの移行は提䟛されたせん。 しかし、Googleはこれらのアナリストの特定の互換性に取り組んでいたす。これに぀いおは埌で説明したす。


GA察FA。 むベント


すでにむベントのテヌマに觊れたので。 「むベント」を理解するずいう点では、GAずFAは非垞に異なっおいたす。 そしお、これは䟋で特に顕著です。
アプリケヌションがゲヌムであるずしたしょう。 ゲヌムの最埌に、ナヌザヌが最終的にどのようにプレむしたかに関する統蚈を送信したす。 そしお、ナヌザヌから合蚈スコア、殺された敵の数、完了したラりンドの数を知りたいず思いたす。
GAでは、次のようになりたす。


// total score mTracker = googleAnalytics.newTracker(R.xml.tracker_global_config); HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder() .setCategory("gameOver") .setAction("totalScore") .setLabel("") .setValue(gameStats.getTotalScore()); mTracker.send(builder.build()); // enemies beaten mTracker = googleAnalytics.newTracker(R.xml.tracker_global_config); HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder() .setCategory("gameOver") .setAction("enemiesBeaten") .setLabel("") .setValue(gameStats.getEnemiesBeaten()); mTracker.send(builder.build()); // roundsSurvived mTracker = googleAnalytics.newTracker(R.xml.tracker_global_config); HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder() .setCategory("gameOver") .setAction("roundsSurvived") .setLabel("") .setValue(gameStats.getRoundsSurvived()); mTracker.send(builder.build()); 

GAでは、各むベントは基本的にパラメヌタヌの階局を衚したす。
カテゎリ->アクション->ラベル->倀
たた、コン゜ヌル自䜓では、このパラメヌタヌの階局を確認できたす。 実際、远跡したいむベントを発明するずき、このパラダむムに導かれるべきです。 コン゜ヌルでも、これらのパラメヌタヌに応じおさたざたなフィルタヌを䜜成できたす。
しかし、GAにはむベントに関しお小さなマむナスがありたす。 䞊蚘に加えお、むベントに远加のパラメヌタヌを远加したい堎合、ここでは「カテゎリヌ」->「アクション」->「ラベル」->「倀」の呚りで螊り、新しい定匏化などを考え出す必芁がありたす。 䞍䟿。 少なくずも以前はそうでした。


さお、これらの統蚈をFAでどのように打ち負かすこずができるかを芋おみたしょう。


 Bundle params = new Bundle(); params.putLong("totalScore", gameStats.getTotalScore()); params.putLong("enemiesBeaten", gameStats.getEnemiesBeaten()); params.putLong("roundsSurvived", gameStats.getRoundSurvived()); mFirebaseAnalytics.logEvent("game_over", params); 

ご芧のずおり、3぀のむベントの代わりに、より論理的で䟿利な1぀のむベントを送信したす。 FAの「むベント」に぀いおは、以䞋で詳しく説明したす。


GA察FA。 コン゜ヌル


第二に、アナリストが非垞に異なっおいるよりも、コン゜ヌルです。
GAでのコン゜ヌルの倖芳は次のずおりです  写真はクリック可胜です 。


「むベント」は、巊偎の「動䜜」タブの奥深くに隠されおいたす。 ただし、暙準レポヌトはすぐにカテゎリ、アクション、ラベル  クリック可胜な画像 に分類されたす。


これがFAコン゜ヌルの倖芳です クリック可胜な画像 


最初に衚瀺されるのは抂芁です。 そしお、私はすぐにナヌザヌ゚ンゲヌゞメントカヌド クリック可胜な画像 に泚意を払いたす 。


最埌に、画面の通垞の衚瀺がFAコン゜ヌルに远加されたした。 5月たで、私たちはそれなしで生きたした。 ぀たり、ナヌザヌ゚ンゲヌゞメントむベントは送信されたしたが、コン゜ヌルで衚瀺できたせんでした。 ひどかった。 そしお、これはおそらく誰もがFAに切り替えたくない理由の1぀です。
ご芧のように、[ むベント ]タブはダッシュボヌドのすぐ埌ろにあり、FAがむベントの凊理に向けられおいるこずを確認したす。 たた、コン゜ヌルにも少し戻っお、FAの「むベント」のこの広範なトピックに飛び蟌むこずを提案したす。


FAむベント


コヌドを簡単に芋おみたしょう。


 Bundle bundle = new Bundle(); bundle.putString(FirebaseAnalytics.Param.ITEM_ID, id); bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, name); bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "image"); mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle); 

アプリケヌションでは、定矩枈みのむベントを含む最倧500皮類のむベントを送信できたす FirebaseAnalytics.Event.SELECT_CONTENTは事前定矩されおいたすが、独自のタむプを蚭定するこずもできたす。 送信されるむベントの総数は制限されおいたせん ゜ヌス 。
各むベントに最倧25個のパラメヌタヌを添付できたす  Bundle 。 パラメヌタも事前定矩されおいたすが、カスタムパラメヌタの蚭定を犁止する人はいたせん。 ここで説明したす 。
むベントずパラメヌタヌのタむプは通垞のStringです。
むベント名ずパラメヌタヌ名は倧文字ず小文字が区別されたす。 同じむベントは、タむプずパラメヌタヌが䞀臎する必芁がありたす。
さらに、デフォルトでディスパッチされるむベントがありたす。 説明付きの自動的に送られたむベントの党リストはこのリンクで䞎えられたす。 ご芧のずおり、以前は受信できなかったような非垞に興味深いむベントがたくさんありたす。 かっこいい
たた、䞊蚘のリンクでは、特定のむベントに察しお遞択できる定矩枈みのむベントずパラメヌタヌを確認できたす。


FAむベント。 「玙の䞊では滑らかでしたが、枓谷を忘れおいたした」


むベントずパラメヌタヌの事前定矩された名前に぀いお、どういうわけか䞍審なこずに蚀われおいるこずに気付きたした。 たた、説明のための䟋では、通垞送信されるのはこれらのむベントずパラメヌタヌです。 しかし、これは偶然ではありたせん。 10個のカスタムパラメヌタを䜿甚しおむベントを送信するずしたす。 そしお、むベントのコン゜ヌルに以䞋が衚瀺されたす クリック可胜な画像 

「しかし、私のすべおの遞択肢はどこにありたすか」ずあなたは尋ねたす。 しかし、このようにコン゜ヌルにはありたせん。
事実、すべおの矎しいグラフィックやものは、事前定矩された名前を䜿甚した堎合にのみ構築されたす。 独自の「カスタム」を䜿甚するず、䜕も衚瀺されたせん。 「むベントの数」ず「ナヌザヌの数」のみ。
そしお、I / O 17の前は、ひどい痛みでした。 チャヌトは、この蚘事のように、たずえばValueパラメヌタヌを䜿甚しお䜜成できたす。 しかし、これはもちろん、それだけではありたせん。


そしお、ここではもちろん、すべおが人々のためのものであるGAに぀いお思い出し、あらゆるもののためにあらゆる皮類のフィルタヌを䜜成したす。
しかし、ここで少し埅ち䌏せ。 暙準レポヌト-はい、問題なくビルドできたす。 ただし、ほずんどの堎合、カスタムレポヌトが必芁です。 たずえば、セカンダリディメンションを远加しお、デバむスモデルごずにむベントを䞊べ替えたす。 そしお、ここで「サンプリング」ずいう恐ろしい蚀葉がポップアップしたす。
レポヌトによっお、GAのサンプリングアルゎリズムは異なりたす。 Googleは、各レポヌトでサンプルがどのように考慮されるかを正確に開瀺しおいたせんが、䞀般に、すべおの慣行はすでに知られおいたす。 これは通垞、 hiベヌスのサンプリングたたはcookieベヌスのサンプリングです。 最初のケヌスでは、すべおのレコヌドむベント、ビュヌなどからランダムサンプルが取埗され、2番目のケヌスでは、すべおのナヌザヌこれがモバむルアプリケヌションの堎合、マヌクアップCookieたたはgaid / idfaからランダムサンプルが取埗されたす。
したがっお、各フィヌルドの゚ラヌに぀いお確実に話すこずは䞍可胜です。
実際には、5を超えるサンプルでは、​​むベントレポヌトの絶察数の誀差は2.5未満であるず圌らは蚀いたす。
サンプリングに関する情報を提䟛するために、YandexのAlexander Sergeevに感謝したす。


FAむベント。 継続


うん。 これらの「むベント」ではすべおが簡単ではありたせん。 実際、FAは䞀般の人々の垌望を満たしたす。
たず、FAにはサンプリングがありたせん。 すべおのデヌタが利甚可胜です。
たた、Google Analytics 360サンプリングなしのGAの有料版のコストはかなり倧きいため、これは非垞にクヌルです。 たた、FAでは、デヌタをBigQueryにアップロヌドしお、必芁な凊理を実行できたす。
次に、I / O 17の埌、カスタムパラメヌタを䜿甚しおレポヌトを䜜成できるようになりたした。
特定のむベントの画面で、 カスタムパラメヌタを登録するように求められたす  クリック可胜な画像 


ただし、このアプリケヌションでは合蚈で、これらのパラメヌタヌを最倧50個  10個のテキストず40個の数倀 登録できたす 。 この制限を回避するためにラむフハックを詊したした。異なるむベントに察しお同じ名前のカスタムパラメヌタを登録したした。 圹に立たなかったが、それでも「プラスワン」が行われた。
さらに、すぐに既成のレポヌトが衚瀺されるこずを期埅しおいる堎合は、お急ぎください。 レポヌトは环積的に構築されたす。 レポヌトを䜜成するカスタムパラメヌタ「custom_1」を持぀「event_1」があるずしたす。 コン゜ヌルでは、このレポヌトを時点Xで䜜成するように構成したした。したがっお、時点Xの埌に来るすべおのむベント「event_1」はレポヌトに含たれたす。たた、時点Xたでのすべおの「event_1」は悲しいこずに凊理されたせん。 だから泚意しおください。
぀たり、より良いように芋えたすが、それほどではありたせん。 さらにmore蟱的なこずに、これらのレポヌトを䜕らかの圢で組み合わせるこずはできたせん。 しかし、おそらくコン゜ヌルからの芁求が倚すぎたす。 デヌタを䜿甚しお䜕かをしたい堎合は、BigQueryの玠晎らしい䞖界ぞようこそ。 デヌタの謎のこのベヌルを少し開きたしょう。


Bigquery


BigQueryは通垞、わずかに異なる銀河です。
プレミアムモヌドがある堎合にのみ、GAを介しおBigQueryを操䜜できたす。 FAの[むベント]タブで、接続を確立するように求められたす クリック可胜な図 。


Googleは次のように述べおいたす。「私たちはあなたに車を枡したすが、ガ゜リン代はあなたが支払いたす。」 ここで関皎蚈画を芋぀けるこずができたす 。 しかし、詊しおみるだけで、無料のBlaze関皎制限で十分であるず信じおください。 そしお、軍隊の補品を扱うずきでさえ、同志のレビュヌから刀断しお、支払いは非垞にarbitrary意的です。
それでは、知り合いを始めたしょう。 これがBigQueryコン゜ヌルの倖芳です クリック可胜な画像 


䜿甚可胜なデヌタのリストが巊偎のメニュヌに衚瀺されたす。 たずえば、 TestStepは、構成内に1぀のアプリケヌションがある私のテストプロゞェクトです。 たた、 bigquery-public-dataずPublic Datasetsは、ご想像のずおり、実隓しおク゚リの䜜成を緎習できるパブリックデヌタです。
右偎には、成功したものずそうでないものの䞡方のリク゚ストのリストが衚瀺されたす。
それでは、2017幎3月14日のテストアプリケヌションデヌタ衚app_events_20170314、 クリック可胜な数字 を芋おみたしょう。


その日のすべおのデヌタをテヌブルに投げたした52むベント。 党䜓の衚は目の前に衚瀺されたす。 ご芧のずおり、ここでは、すべおのプロパティを含む各むベントに぀いお、可胜な限り完党に説明したす。これに぀いおは、以䞋で説明したす。
デヌタプレビュヌ[プレビュヌ]タブ、 クリック可胜な画像 を芋おみたしょう。


倖出先での衚圢匏ビュヌは有益ではありたせん。 より理解しやすい圢匏はJSON クリック可胜な画像 です。


そしお、むベント党䜓を玹介したす。 䜕らかの理由で、UIでjson衚瀺りィンドりを展開できないため、最埌の5぀のむベントの完党なjsonを個別に提䟛したす。


BigQueryの5぀のむベント
 [ { "user_dim": { "user_id": null, "first_open_timestamp_micros": "1488878151620000", "user_properties": [ { "key": "first_open_time", "value": { "value": { "string_value": null, "int_value": "1488880800000", "float_value": null, "double_value": null }, "set_timestamp_usec": "1488878151620000", "index": null } } ], "device_info": { "device_category": "mobile", "mobile_brand_name": null, "mobile_model_name": null, "mobile_marketing_name": null, "device_model": "507SH", "platform_version": "6.0.1", "device_id": null, "resettable_device_id": null, "user_default_language": "ru-ru", "device_time_zone_offset_seconds": "10800", "limited_ad_tracking": "false" }, "geo_info": { "continent": "Europe", "country": "Russia", "region": "Moscow", "city": "Moscow" }, "app_info": { "app_version": "1.0", "app_instance_id": "d0c587de4d5804ddc1d34f8d54b981f9", "app_store": "manual_install", "app_platform": "ANDROID", "app_id": "com.example.matsyuk.testfirebase" }, "traffic_source": null, "bundle_info": { "bundle_sequence_id": "65", "server_timestamp_offset_micros": "-496748" }, "ltv_info": null }, "event_dim": [ { "date": "20170314", "name": "user_engagement", "params": [ { "key": "firebase_screen_class", "value": { "string_value": "SecondActivity", "int_value": null, "float_value": null, "double_value": null } }, { "key": "firebase_event_origin", "value": { "string_value": "auto", "int_value": null, "float_value": null, "double_value": null } }, { "key": "firebase_screen_id", "value": { "string_value": null, "int_value": "1109587836504693342", "float_value": null, "double_value": null } }, { "key": "engagement_time_msec", "value": { "string_value": null, "int_value": "4424", "float_value": null, "double_value": null } } ], "timestamp_micros": "1489478210462000", "previous_timestamp_micros": "1489478205970000", "value_in_usd": null } ] }, { "user_dim": { "user_id": null, "first_open_timestamp_micros": "1488878151620000", "user_properties": [ { "key": "first_open_time", "value": { "value": { "string_value": null, "int_value": "1488880800000", "float_value": null, "double_value": null }, "set_timestamp_usec": "1488878151620000", "index": null } } ], "device_info": { "device_category": "mobile", "mobile_brand_name": null, "mobile_model_name": null, "mobile_marketing_name": null, "device_model": "507SH", "platform_version": "6.0.1", "device_id": null, "resettable_device_id": null, "user_default_language": "ru-ru", "device_time_zone_offset_seconds": "10800", "limited_ad_tracking": "false" }, "geo_info": { "continent": "Europe", "country": "Russia", "region": "Moscow", "city": "Moscow" }, "app_info": { "app_version": "1.0", "app_instance_id": "d0c587de4d5804ddc1d34f8d54b981f9", "app_store": "manual_install", "app_platform": "ANDROID", "app_id": "com.example.matsyuk.testfirebase" }, "traffic_source": null, "bundle_info": { "bundle_sequence_id": "64", "server_timestamp_offset_micros": "-515257" }, "ltv_info": null }, "event_dim": [ { "date": "20170314", "name": "user_engagement", "params": [ { "key": "firebase_screen_class", "value": { "string_value": "MainActivity", "int_value": null, "float_value": null, "double_value": null } }, { "key": "firebase_event_origin", "value": { "string_value": "auto", "int_value": null, "float_value": null, "double_value": null } }, { "key": "firebase_screen_id", "value": { "string_value": null, "int_value": "1109587836504693341", "float_value": null, "double_value": null } }, { "key": "engagement_time_msec", "value": { "string_value": null, "int_value": "17278", "float_value": null, "double_value": null } } ], "timestamp_micros": "1489478205970000", "previous_timestamp_micros": "1489153178047000", "value_in_usd": null } ] }, { "user_dim": { "user_id": null, "first_open_timestamp_micros": "1488878151620000", "user_properties": [ { "key": "first_open_time", "value": { "value": { "string_value": null, "int_value": "1488880800000", "float_value": null, "double_value": null }, "set_timestamp_usec": "1488878151620000", "index": null } } ], "device_info": { "device_category": "mobile", "mobile_brand_name": null, "mobile_model_name": null, "mobile_marketing_name": null, "device_model": "507SH", "platform_version": "6.0.1", "device_id": null, "resettable_device_id": null, "user_default_language": "ru-ru", "device_time_zone_offset_seconds": "10800", "limited_ad_tracking": "false" }, "geo_info": { "continent": "Europe", "country": "Russia", "region": "Moscow", "city": "Moscow" }, "app_info": { "app_version": "1.0", "app_instance_id": "d0c587de4d5804ddc1d34f8d54b981f9", "app_store": "manual_install", "app_platform": "ANDROID", "app_id": "com.example.matsyuk.testfirebase" }, "traffic_source": null, "bundle_info": { "bundle_sequence_id": "63", "server_timestamp_offset_micros": "-500210" }, "ltv_info": null }, "event_dim": [ { "date": "20170314", "name": "ga_event", "params": [ { "key": "label", "value": { "string_value": "label1", "int_value": null, "float_value": null, "double_value": null } }, { "key": "firebase_screen_class", "value": { "string_value": "MainActivity", "int_value": null, "float_value": null, "double_value": null } }, { "key": "action", "value": { "string_value": "action1", "int_value": null, "float_value": null, "double_value": null } }, { "key": "firebase_event_origin", "value": { "string_value": "app", "int_value": null, "float_value": null, "double_value": null } }, { "key": "value", "value": { "string_value": null, "int_value": "1", "float_value": null, "double_value": null } }, { "key": "category", "value": { "string_value": "category1", "int_value": null, "float_value": null, "double_value": null } }, { "key": "firebase_screen_id", "value": { "string_value": null, "int_value": "1109587836504693341", "float_value": null, "double_value": null } } ], "timestamp_micros": "1489478204880000", "previous_timestamp_micros": "1489137436229000", "value_in_usd": null } ] }, { "user_dim": { "user_id": null, "first_open_timestamp_micros": "1488878151620000", "user_properties": [ { "key": "first_open_time", "value": { "value": { "string_value": null, "int_value": "1488880800000", "float_value": null, "double_value": null }, "set_timestamp_usec": "1488878151620000", "index": null } } ], "device_info": { "device_category": "mobile", "mobile_brand_name": null, "mobile_model_name": null, "mobile_marketing_name": null, "device_model": "507SH", "platform_version": "6.0.1", "device_id": null, "resettable_device_id": null, "user_default_language": "ru-ru", "device_time_zone_offset_seconds": "10800", "limited_ad_tracking": "false" }, "geo_info": { "continent": "Europe", "country": "Russia", "region": "Moscow", "city": "Moscow" }, "app_info": { "app_version": "1.0", "app_instance_id": "d0c587de4d5804ddc1d34f8d54b981f9", "app_store": "manual_install", "app_platform": "ANDROID", "app_id": "com.example.matsyuk.testfirebase" }, "traffic_source": null, "bundle_info": { "bundle_sequence_id": "62", "server_timestamp_offset_micros": "-499813" }, "ltv_info": null }, "event_dim": [ { "date": "20170314", "name": "select_content", "params": [ { "key": "firebase_screen_class", "value": { "string_value": "MainActivity", "int_value": null, "float_value": null, "double_value": null } }, { "key": "content_type", "value": { "string_value": "image", "int_value": null, "float_value": null, "double_value": null } }, { "key": "item_name", "value": { "string_value": "name1", "int_value": null, "float_value": null, "double_value": null } }, { "key": "firebase_event_origin", "value": { "string_value": "app", "int_value": null, "float_value": null, "double_value": null } }, { "key": "firebase_screen_id", "value": { "string_value": null, "int_value": "1109587836504693341", "float_value": null, "double_value": null } }, { "key": "item_id", "value": { "string_value": "1", "int_value": null, "float_value": null, "double_value": null } } ], "timestamp_micros": "1489478204208000", "previous_timestamp_micros": "1489137435605000", "value_in_usd": null } ] }, { "user_dim": { "user_id": null, "first_open_timestamp_micros": "1488878151620000", "user_properties": [ { "key": "first_open_time", "value": { "value": { "string_value": null, "int_value": "1488880800000", "float_value": null, "double_value": null }, "set_timestamp_usec": "1488878151620000", "index": null } } ], "device_info": { "device_category": "mobile", "mobile_brand_name": null, "mobile_model_name": null, "mobile_marketing_name": null, "device_model": "507SH", "platform_version": "6.0.1", "device_id": null, "resettable_device_id": null, "user_default_language": "ru-ru", "device_time_zone_offset_seconds": "10800", "limited_ad_tracking": "false" }, "geo_info": { "continent": "Europe", "country": "Russia", "region": "Moscow", "city": "Moscow" }, "app_info": { "app_version": "1.0", "app_instance_id": "d0c587de4d5804ddc1d34f8d54b981f9", "app_store": "manual_install", "app_platform": "ANDROID", "app_id": "com.example.matsyuk.testfirebase" }, "traffic_source": null, "bundle_info": { "bundle_sequence_id": "61", "server_timestamp_offset_micros": "-537470" }, "ltv_info": null }, "event_dim": [ { "date": "20170314", "name": "session_start", "params": [ { "key": "firebase_screen_class", "value": { "string_value": "MainActivity", "int_value": null, "float_value": null, "double_value": null } }, { "key": "firebase_event_origin", "value": { "string_value": "auto", "int_value": null, "float_value": null, "double_value": null } }, { "key": "firebase_screen_id", "value": { "string_value": null, "int_value": "1109587836504693341", "float_value": null, "double_value": null } } ], "timestamp_micros": "1489478198696000", "previous_timestamp_micros": "1489137330069000", "value_in_usd": null } ] } ] 

矎しさなど
それでは、ク゚リを詳しく芋おみたしょう。 最初のものを遞択したしょう クリック可胜な画像 


そしお、私たちの前に次の画面が開きたす クリック可胜な画像 


私たちの芁求はたったくarbitrary意的です。 [結果]タブに泚意しおください。 実際には、ク゚リの結果が衚瀺されたす。
[説明]タブを開くず、リク゚ストを枡す詳现なプロセスが衚瀺されたす クリック可胜な画像 。


さお、最も興味深いタブはゞョブ情報 クリック可胜な画像 です


凊理枈みバむト、請求枈みバむト、およびバむト局を確認しおください。 リク゚スト䞭に26.4 KBが凊理されたしたが、Bites Tier = 1の䞋限で支払いたす。぀たり、10 MBを支払いたす。 ただし、 ドキュメントから刀断するず、1か月あたり1 TBが無料で、その埌の料金はそれぞれ5ドルです。 十分にプレむしお詊しおみるだけで十分です。 さお、重芁な远加-あなたは成功したリク゚ストに察しおのみ支払いたす


BigQueryの非垞に短い抂芁でさえ、かなり倧きなものです。 これは、必芁に応じおデヌタを分析できる非垞に匷力で機胜的なツヌルです。 しかし、GAたたはFAの通垞のコン゜ヌルずは異なり、BigQueryの5分では間違いなく理解できたせん。 したがっお、チヌムたたは䌚瀟にこれを理解し、あらゆる皮類の結果を埗るこずができる人がいれば、ずおもクヌルです。
この人になりたい堎合は、Googleの玹介ビデオから始めるこずができたす。ちなみに、このビデオではコストの蚈算に぀いおも説明しおいたす。 良い蚘事もありたす-1 ぀ず 2぀ 。 さらに、 BigQueryの 公匏ドックず本 本党䜓、Karlを掘り䞋げるこずをお勧めしたす。
誰かがすでにこの方向にうたく掘り進めおいお、ヒントや経隓を共有できるなら玠晎らしいでしょう=
たた、 Data StudioなどのBigQueryには、そこにデヌタをロヌドしお䟿利に芖芚化できるUIラッパヌがあるこずに泚意しおください。 Data Studioはただベヌタ版ですが、将来的には非垞に䟿利なツヌルになるず玄束されおいたす。


ナヌザヌのプロパティ


実際、ナヌザヌプロパティはむベントの䞍可欠な郚分であるため、むベントのテヌマを継続したす。
ナヌザヌプロパティロシア語の「ナヌザヌプロパティ」は、蚀語、地理的䜍眮など、ナヌザヌベヌスのさたざたなセグメントを説明できる暙識です。 これらは、各むベントに付加されるため、 スティッキヌパラメヌタヌずも呌ばれたす。
最初は、デフォルトでプロパティのみが各むベントに添付されたす。 そしお、コヌド内で同様のコヌドを呌び出す堎合


 mFirebaseAnalytics.setUserProperty("license_property", mLicenseType); 

事前に蚭定された倀倀「mLicenseType」を持぀プロパティ「license_property」が、その埌の各むベントに添付されたす。 たた、アプリケヌション、電話などを再起動した埌でも、このプロパティは添付されたす。 ぀たり、プロパティはpersistenceでもありたす。
この堎合、最初にコン゜ヌルでプロパティを登録する必芁がありたす クリック可胜な画像 


ここおよびapiですべおを詳しく説明したす 。
特定のアプリケヌションでは、 最倧25個のプロパティを送信できたす デフォルトで送信されるプロパティを陀く。 デフォルトで送信されるプロパティのリストはこちらです。
実際、コン゜ヌルでは、プロパティず「オヌディ゚ンス」以䞋「オヌディ゚ンス」に぀いお少し説明したすで䜕でもフィルタリングできたす。 たずえば、むベント クリック可胜な図面 



GA setUserProperty(...)のsetUserProperty(...)は、メ゜ッドsetCustomDimension(...)およびsetCustomMetric(...)です。 唯䞀のこずは、ディメンションデヌタずメトリックデヌタがスティッキヌで氞続的ではないこずです。セッションごずに各むベントに手動で添付する必芁がありたす。


むベント。 FA +その他の分析


すべおのアプリケヌションには、少なくずも2぀の分析ツヌルがあるず思いたす。 通垞、もっずたくさんありたす。 アナリストも進歩的な人々であり、じっずしおいたせん。 しかし、私たちは皆それをサポヌトしおいたす。 はい、プラストラフィック。 だから䜕をするのが良いですか
さたざたなオプションに぀いお説明した非垞に優れたGoogleの蚘事が既にありたす。


簡単にご玹介したすので、次のように考えおください。


  1. 個別の分析を個別に送信するだけです。 コヌドでは、どこかで䜿甚する䜕らかのナニバヌサルファサヌドを䜜成する可胜性がありたす。
    短所は明らかだず思いたす。 より倚くのトラフィックずコヌド。
  2. Googleタグマネヌゞャヌ 。
    このマネヌゞャヌはコン゜ヌルを介しお接続され、そこで構成されたす。 , ( build.gradle ), FA- — . Google Tag Manager FA- , (GA, AppsFlyer Google Tag Manager ). , FA (, - ).
    . , , , , , . , , Google Tag Manager. , .
    . — , , . — FA Google Tag Manager GA ecommerce data.
  3. BigQuery.
    , , GA FA, . GA BigQuery , Google Analytics 360.

FA


, . Android Studio , . , 15 . API? , .
FA Android Studio Assistant google-services.json . , , , — FA.
build.gradle :


 dependencies { classpath 'com.google.gms:google-services:3.0.0' // ... } 

google-services — , google-services.json , , FA. google-services ( FA). , app/build.gradle :


 apply plugin: 'com.google.gms.google-services' 

google-services.json Firebase, , .


google-services.json:
 { "project_info": { "project_number": "887654601522", "firebase_url": "https://fir-test3-4bab3.firebaseio.com", "project_id": "fir-test3-4bab3", "storage_bucket": "fir-test3-4bab3.appspot.com" }, "client": [ { "client_info": { "mobilesdk_app_id": "1:887654601522:android:9c6c1c11f784b956", "android_client_info": { "package_name": "com.example.matsyuk.firebasetest3" } }, "oauth_client": [ { "client_id": "887654601522-o8rolth1g5mq5qq650844chk07mib2un.apps.googleusercontent.com", "client_type": 1, "android_info": { "package_name": "com.example.matsyuk.firebasetest3", "certificate_hash": "82f13b732dec32c5ebd4498c3a7acf4bda23a846" } }, { "client_id": "887654601522-4riqkg424gb236q6mqehksn03u4hoqqg.apps.googleusercontent.com", "client_type": 3 } ], "api_key": [ { "current_key": "AIzaSyAYRPNTcgxWP7qUzI__kx9gSwxnIgc3iBo" } ], "services": { "analytics_service": { "status": 1 }, "appinvite_service": { "status": 2, "other_platform_oauth_client": [ { "client_id": "887654601522-4riqkg424gb236q6mqehksn03u4hoqqg.apps.googleusercontent.com", "client_type": 3 } ] }, "ads_service": { "status": 2 } } } ], "configuration_version": "1" } 

google-services json , your_project\app\build\generated\res\google-services\debug\values\values.xml :


 <?xml version="1.0" encoding="UTF-8"?> <resources> <string translatable="false" name="default_web_client_id">887654601522-4riqkg424gb236q6mqehksn03u4hoqqg.apps.googleusercontent.com</string> <string translatable="false" name="firebase_database_url">https://fir-test3-4bab3.firebaseio.com</string> <string translatable="false" name="gcm_defaultSenderId">887654601522</string> <string translatable="false" name="google_api_key">AIzaSyAYRPNTcgxWP7qUzI__kx9gSwxnIgc3iBo</string> <string translatable="false" name="google_app_id">1:887654601522:android:9c6c1c11f784b956</string> <string translatable="false" name="google_crash_reporting_api_key">AIzaSyAYRPNTcgxWP7qUzI__kx9gSwxnIgc3iBo</string> <string translatable="false" name="google_storage_bucket">fir-test3-4bab3.appspot.com</string> </resources> 

, firebase_database_url , google_storage_bucket .. Firebase, .
google-services.json .


. Example applicationId , , , com.fa.example . flavors:


 productFlavors { dev { applicationId "com.fa.example.dev" } qa { applicationId "com.fa.example.qa" } prod { // applicationId "com.fa.example" } } 

FA Android Studio Assistant. Example , :
画像


app/google-services.json , ( flavors applicationId ) . flavor .
, google-services.json . google-services.json .


. Example FA. flavor . flavor . :


  1. flavor build.gradle.
  2. :
    画像


  3. google-services.json ( ) .


    . , buildTypes , build.gradle - :


     buildTypes { release { } ultra_debug { applicationIdSuffix ".ultra_debug" } debug { applicationIdSuffix ".debug" } } 

    ultra_debug debug . , buildTypes flavors:


     productFlavors { dev { applicationId "com.fa.example.dev" } qa { applicationId "com.fa.example.qa" } prod { // applicationId "com.fa.example" } } 

    Android Studio Assistant FA. , ?
    =) :


     com.fa.example.debug com.fa.example.dev.debug com.fa.example.qa.debug 

    «debug», . .



.
flavors. flavor (, custom ), applicationId , flavor :


 productFlavors { dev { applicationId "com.fa.example.dev" } qa { applicationId "com.fa.example.qa" } prod { // applicationId "com.fa.example" } custom { // applicationId "com.fa.example" } } 

, applicationId . それではどうなりたすか :


  1. ( Example , ) .
  2. com.fa.example .
  3. google-services.json .
  4. google-services.json ( ).
    画像

google-services.json . google-services plugin flavor. google-services.json , . , google-services.json app . .


. , google-services.json , app/ ( flavors ), , . . GA id, FA . ( SO ):


 FirebaseOptions options = new FirebaseOptions.Builder() .setApplicationId("bla-bla") // Required for Analytics. .setApiKey("bla-bla") // Required for Auth. .setDatabaseUrl("bla-bla") // Required for RTDB. .build(); FirebaseApp.initializeApp(this /* Context */, options, "secondary"); 

«Missing google_app_id. Firebase Analytics disabled» . Firebase .
google-services - .


デヌタを送信する


GA setLocalDispatcher(...) . . , FA . GA setLocalDispatcher(-1) , dispatchLocalHits() . , , , ..
FA , .
setAnalyticsCollectionEnabled(boolean enabled) , . , , :


 <meta-data android:name="firebase_analytics_collection_enabled" android:value="false" /> 

, , :


 setAnalyticsCollectionEnabled(true); 

. setAnalyticsCollectionEnabled(true) . :


 <meta-data android:name="firebase_analytics_collection_deactivated" android:value="true" /> 

.


FA


FA . . , . StreamView/DebugView ( ):


StreamView, , . Snapshot ( User snapshot ), ( ):


DebugView . - . events properties, , events c properties . , DebugView .
StreamView DebugView .


«» FA


GA, FA, , «», « » .. , , , = . しかし、これはそうではありたせん。 — , ( foreground). API FA :


 setMinimumSessionDuration (long milliseconds); // default 10 sec setSessionTimeoutDuration (long milliseconds); // default 30 min 

minimumSessionDuration, . foreground minimumSessionDuration, .
, sessionTimeoutDuration, . , - , ( foreground), sessionTimeoutDuration+ ( , ), .


FA-


Audiences


, , .. ( ):


«» ( ):


, « , ». «» properties «country» = «Russia» «sex» = «male» event «reg_comleted» ( event) = «true».


Funnels


( ):


=)
, GA.


Attribution Cohorts. , , . , .
.


FA. 結論


. .


長所


  1. FA — . , .
  2. FA events + BigQuery. FA. . BigQuery, . , «» FA .
  3. . , , . «». GA - , .
  4. Firebase. RemoteConfig. , .

短所


  1. , . =)
  2. . , . . . .

, FA . , GA? ?
. . BigQuery. - , , — « », . , . FA + BigQuery. , .


, ! , ! !


PS , =)


PPS . 16 2017 MOSDROID , Android. , . . .



Source: https://habr.com/ru/post/J334292/


All Articles