手术后为什么不让睡觉| 惊蛰是什么季节| 补气吃什么| 消症是什么意思| 病毒是什么| 血小板减少有什么症状| 血亏什么意思| 吃生葵花籽有什么好处和坏处吗| 续弦是什么意思| 灰指甲是什么样的图片| 减肥的原理是什么| 枫树的叶子像什么| 重丧是什么意思| 孕妇适合喝什么汤| 黄精有什么作用和功效| model是什么牌子| 坐落是什么意思| 太阳穴痛是什么原因| 心脏为什么会突然刺痛| 一库一库雅蠛蝶是什么意思| 钢镚是什么意思| 咳嗽喝什么茶| 肺大泡是什么病严重吗| 相安无事什么意思| 胃反酸吃什么药最好| 对方忙线中什么意思| 巴宝莉是什么品牌| 咳嗽雾化用什么药| 立秋日有什么禁忌| 做放疗的人吃什么好| 鸟飞进家里是什么预兆| 暮光是什么意思| nicu是什么意思| 做梦梦见蜘蛛是什么意思| 空囊是什么原因造成的| 大腿粗是什么原因导致的| 乳房是什么意思| ms是什么意思| 盐酸是什么| 风热感冒是什么意思| 悦五行属性是什么| 扁桃体炎吃什么药| 中国最好的大学是什么大学| 三界牌是什么| 红细胞阳性是什么意思| 庸人自扰什么意思| 呲牙是什么意思| o型血不能和什么血型的人生孩子| 为什么会感染幽门螺杆菌| 胆管结石用什么药能把它除掉| 静脉采血检查什么| 左克是什么药| 七夕节的含义是什么| 褥疮用什么药最好| 屁多又臭是什么原因| 疙瘩疤痕有什么方法可以去除| prc是什么意思| 双鱼座是什么星象| 蜻蜓为什么点水| 血压低什么症状| 上善若水什么意思| 送表的寓意是什么| 此言念什么| 人为什么打哈欠| 煞笔是什么意思| 总流鼻血是什么原因| 卧底归来大结局是什么| 梦见大火是什么意思| 莲花和荷花有什么区别| 附件是什么部位| 眼震是什么症状| 南通有什么特产| 毛血旺是什么| 较真的人是什么性格| 正常人为什么会低血糖| 人为什么要穿衣服| kpa是什么意思| 胃出血吃什么药好| 酒石酸美托洛尔片治什么病| 尿道结石有什么症状| 什么是爱国| 三个七念什么| 外地车进北京有什么限制| 牛皮癣是什么样的| 大姨妈是什么意思| 爸爸的奶奶叫什么| 梦见自己升职了是什么预兆| 当局是什么意思| 尿蛋白十一是什么意思| 较真的人是什么性格| 三点水加个真念什么| 营救是什么意思| 31岁属什么生肖| 艺高人胆大什么意思| 三角梅什么时候换盆| 小苏打有什么作用| 白带多是什么原因| 胩是什么意思| 头疼耳鸣是什么原因引起的| 痤疮吃什么药| 腿抽筋缺什么| qy是什么意思| 芒果可以做什么美食| 落叶像什么飘落下来| 新生儿什么时候吃ad| 天干指的是什么| 羊肉炖什么好吃又营养| 什么的窟窿| 川军为什么那么出名| 饮鸩止渴是什么意思| 戒指戴左手中指是什么意思| 空腹血糖17已经严重到什么时候| 肩膜炎的症状是什么| 12月16号是什么星座| 人爱出汗是什么原因| 膝关节疼痛吃什么药好| 广东有什么特色美食| 什么是象形字| 积是什么意思| 什么成荫| 沙门氏菌用什么药| 酒精过敏是什么症状| 什么是黄体期| 25是什么生肖| 梦见自己的车丢了是什么意思| 蚕豆病是什么病| 欧莱雅属于什么档次| 盆浴是什么意思| 医生为什么穿白大褂| 男生属鸡和什么属相配| 磷偏低是什么原因| 依巴斯汀片是什么药| 舌头尖有小红点这是什么症状| 权志龙为什么叫gd| 97年属什么生肖| 老年性脑改变是什么意思| 亩产是什么意思| 狮子座是什么时候| 冰晶是什么东西| 心衰是什么意思| 腰疼挂什么科室| 地级市副市长是什么级别| 恋是什么意思| 什么的荷叶| 县团级是什么级别| 力不到不为财是什么意思| 2.26是什么星座| 诸事不宜是什么意思| 手麻吃什么药| 嘴唇颜色深是什么原因| 得失是什么意思| 切忌什么意思| 胆碱是什么| uma是什么意思| 章鱼吃什么| 鼠分念什么| 3月20日什么星座| 有什么有什么| 咽喉有异物感吃什么药| 龙眼是什么| 素描是什么意思| 下肢水肿吃什么药| 尿比重偏低是什么原因| 西洋参可以和什么一起泡水喝| 肝肾两虚吃什么中成药| 经常失眠是什么原因| 嫦娥是什么生肖| elaine是什么意思| 吃什么推迟月经| 喜用神是什么| 痱子用什么药| phr是什么词性| 白内障什么原因造成的| 为什么叫白俄罗斯| c肽测定是什么意思| 尿次数多是什么原因| 运动喝什么水补充能量| 主动脉硬化吃什么药好| 大好河山是什么生肖| 精液发红是什么原因| 打马虎眼是什么意思| fmp是什么意思| 青团是用什么做的| 一眼万年是什么意思| 世界上最大的海洋是什么| 94年是什么年| 手掌发麻是什么原因| 老人爱睡觉是什么原因| 稷是什么作物| 35岁属什么| 小虾吃什么食物| movefree是什么药| 三七粉不适合什么人吃| 没有什么过不去| bridge什么意思| 脓血症是什么病严重吗| 乳腺癌吃什么好| 什么是妊娠| 下午三点多是什么时辰| 南什么北什么| 尿检是检查什么的| 薄荷脑是什么| 提手旁的字有什么| 八六年属什么生肖| 来褐色分泌物是什么原因| 金针菇不能和什么一起吃| 颈椎病吃什么药效果好| 消化不良吃什么中药| 什么是邮箱地址应该怎么填写| 菀字五行属什么| 睡莲为什么叫睡莲| 轻度脂肪肝有什么症状| 唇炎用什么药| 锦衣夜行什么意思| 一什么天空| 91年出生的属什么| 皮肤发红发烫是什么原因| 得过且过什么意思| 一直耳鸣是什么原因引起的| 鳞状上皮增生什么意思| 吃了安宫牛黄丸要禁忌什么不能吃| 什么笑脸| 马上风为什么拔不出来| 卵巢保养最好的方法是什么| 熟地是什么| 什么是衰老| 阴性什么意思| 脚后跟干裂起硬皮用什么药| 吃什么补维生素b6| kp是什么| 为什么气血不足| 什么是感觉| 子午是什么时间| 软组织损伤用什么药| 小产后可以吃什么水果| 肚脐的左边疼是什么原因| 孕妇吃花胶对胎儿有什么好处| 白天尿少晚上尿多什么原因| 胆囊息肉有什么症状| 文献是什么| 便秘吃什么食物| 乙肝235阳性是什么意思| 吃什么提高免疫力最好最快| 灵芝长什么样子图片| 嗓子中间的那块小肉叫什么| 复古是什么意思| 什么样的水果| 儿童流鼻血什么原因引起的| 辰砂是什么| 怀孕查雌二醇什么作用| 胃胀气打嗝是什么原因| 右耳烫代表什么预兆| 什么样的人死后还会出现| 议员在中国相当于什么| 味美思是什么酒| 痰湿体质吃什么食物好| 白色车里放什么摆件好| 卵巢早衰吃什么可以补回来| 皮肤脱皮是什么原因| 咳出血是什么原因| 心理学属于什么学科| 什么食物高蛋白含量高| 12月4日是什么日子| 米粉是用什么做出来的| 百度

那些你不知道的iPhone耳机隐藏功能 太强大了!

Overview

百度 郑向东说,要全面深刻领会把握习近平总书记重要讲话的丰富内涵和精神实质。

Analytics Tags (aka ‘aTags’) are a log mechanism provided by PBS-core to allow modules to inform analytics adapters about what happened in the request. Use of the Analytics Tag structure is completely optional. It’s meant to be used when there are application or reporting reasons for sharing module results. See the Prebid Server module overview for background information.

This document defines a convention aimed at allowing module developers to create consistent aTags that can be easily read by analytics adapters.

Prebid Server aTags

  1. Modules may return a data structure containing aTags to PBS-Core.
  2. PBS-Core adds any aTags to the ‘invocation context’ data structure.
  3. Analytics modules have access to the invocation context.

Analytics Tag Conventions

The general idea is that aTags are a list of module-specific “activities” that have these attributes:

  • activity name: should be unique within the context of this module. e.g. ‘enrich-request’
  • an overall status
  • an array of specific results within the activity
  • within the results:
    • status of each result
    • scope of the result
    • module-specific values for the result

Here’s an example from the ORTB2 Blocking module:

[{
   // scenario: response from bidderA blocked on badv for imp=1
   activities: [{
    name: "enforce-blocking",
    status: "success", // no errors from the module
    results: [{
        status: "success-block",
        values: { // these are module-specific details about the result
                  "attributes": ["badv"],
                  "adomain": ["bad.com"]
        },
        appliedto: {
          "bidder": "bidderA",
           impids: ["1"]
        }
    },{
        status: "success-allow",
        // no details needed when the response isn't blocked
        appliedto: {
          "bidder": "bidderA",
          "impids": ["2","3","4"]
        }
    }]
 }]

The following table contains the field conventions.

aTag Attr Required? Description Type
activities yes One or more activities carried out by the module. array of objects
activities .name yes Name of the activity. Must be documented and unique within the module. string
activities .status yes Did the module operate successfully? Values are “error” or “success”. string
activities. results no Service-dependent details for what the service actually did. array of objects
activities. results. status no Detailed status for this specific action. Values: “error”, “success-allow”, “success-block”, “success-modify” string
activities. results. values no service-specific details object
activities. results .appliedto no Which object(s) the service examined or modified. object
activities. results. appliedto. impids no The service examined these specific impression objects or bid responses corresponding to imp objects array of strings
activities. results. appliedto. bidders no The service examined these specific bidders within the request or response. array of strings
activities. results. appliedto. bidder no The service examined this specific bidder (singular) within the request or response. string
activities. results. appliedto. request no The service examined the entire openrtb request object. This is in case the module updated something not adunit-specific. boolean
activities. results. appliedto. response no The service examined the entire openrtb response object. This is in case the module updated something not adunit-specific. boolean

Designing Analytics Tags

aTags are for reporting. Start by considering what the module’s doing that consumers might want to display. Each processing stage the module operates in may be reported as a separate activity, or perhaps everything the module does is lumped as one activity.

Once the activities are defined, determine what reportable metric would be useful. Examples:

  • percentage of impressions enriched
  • percentage of imps where a specific bidder was removed due to optimization
  • A/B testing data
  • percentage and value of bid responses that were rejected due to creative validations

Case study: for the ORTB2 Blocking module, the requirement was to be able to report on what percentage of responses from each bidder were being thrown away due to blocking rules. This could have been done by defining a separate ‘activity’ for each of the 4 types of enforcement, but it was decided to just have one kind of activity (‘enforce-blocking’) and get the specific details as part of the ‘value’. There was no requirement to report on the outbound part of what the module does, so no aTags are created for that part of the functionality.

Once you know what reports are desired, figure out which activity ‘results’ are needed to generate those numbers.

For the ORTB2 Blocking module, the numbers needed are how often a given bidder has a response compared to how often their responses are rejected. So overall the block rate is: successBlock divided by (successBlock + successAllow).

Document the Analytics Tags Produced

Be sure to detail the results in your module documentation so that analytics adapters are aware of what they can look for.

Let them know:

  • which activities your module supports
  • what kind of results to expect
  • whether the results objects have module-specific values

Parsing the Invocation Context

If you’re an analytics adapter, you will be given the entire PBS ‘invocation context’, which contains a wealth of information about the auction.

In short, to get analytics tags, you’ll need to parse this data structure:

  • Loop through stages[]
    • If the stage has relevant info, loop through outcomes[]
      • Outcomes.entity is a label describing the contents
      • Loop through groups[]
        • Loop through invocationresults[]
          • if hookid.modulecode is relevant for your analytics, grab analyticstags

Here’s an example of the data structured as JSON, though the details of the actual object will differ in PBS-Java and PBS-Go.

          "stages": [
            {
              "stage": "raw-auction-request",
              "outcomes": [
                {
                  "entity": "bidrequest",
                  "executiontimemillis": 246,
                  "groups": [
                    {
                      "executiontimemillis": 190,
                      "invocationresults": [
                        {
                          "hookid": {
                            "modulecode": "MODULE1",
                            "hookimplcode": "HOOK_A"
                          },
                          "executiontimemillis": 123,
                          "status": "success",
                          "action": "update",
                          "debugmessages": [
                            "debug message"
                          ],
                         "analyticstags": {
                            "activities": [
                              {
                                "name": "device-id",
                                "status": "success",
                                "results": [
                                  {
                                    "status": "success",
                                    "values": {
                                      "some-field": "some-value"
                                    },
                                    "appliedto": {
                                      "impids": [ "impId1" ]
                                    }
                                  }
                                ]
                              }
                            ]
                          }
                        },
                        {
                          "hookid": {
                            "modulecode": "MODULE1",
                            "hookimplcode": "HOOK_B"
                          },
                          "status": "success",
                          "message": "inventory has no value",
                          "action": "reject"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "stage": "bidder-request",
              "outcomes": [
                {
                  "entity": "pubmatic", // entity is biddercode for some stages
                  "executiontimemillis": 246,
                  "groups": [
                    "invocationresults": {
                      "hookid": { ... }
                      "analyticstags": [{
            ...
                      ]
                    }
                  ]
                },
                {
                  "entity": "adform",
                  "executiontimemillis": 246,
                  "groups": [...]
                }
              ]
            }
          ]

See the implementation guide for your platform for specific syntax.

Sending aTags to the client-side

PBS-Java only

The use cases for server-side and client-side analytics are different:

  • Server-side analytics are the only game in town when it comes to App, AMP, DOOH, etc.
  • However, when Prebid.js is in use and bidders are split between client-side and server-side, it would be far better if auctions were only logged once.

This feature allows all relevant data passed to the client from Prebid Server so that client-side analytics can be the one to log the results. To allow the sharing of these details, there are two conditions:

  1. Server-side account configuration must allow sharing of these details by setting analytics.allow-client-details: true
  2. The ORTB request must contain ext.prebid.analytics.options.enableclientdetails: true

If both are true, then any and all PBS analytics tags will be copied to the response field ext.prebid.analytics.tags.

Client aTag example

The “pb-ortb-blocking” module at the “processed auction” stage adds the following Analytics Tags (from the ORTB2 blocking module)

[{
  "activities": [{
    "name": "enforce-blocking",
    "status": "success",
    "results": [{
        "status": "success-block",
        "values": {
                  "attributes": ["badv"],
                  "adomain": ["bad.com"]
        },
        "appliedto": {
          "bidder": "bidderA",
           "impids": ["1"]
        }
    },{
        "status": "success-allow",
        "appliedto": {
          "bidder": "bidderA",
          "impids": ["2","3","4"]
        }
    }]
 }]

Also, the "vendorA-brand-safety" module at the "all processed bid responses" stage adds these aTags:

```json
[{
   "activities": [{
    "name": "brand-safety",
    "status": "success",
    "results": [{
        "status": "success-allow",
        "appliedto": {
          "bidder": "bidderA",
          "impids": ["1,","2","3","4"]
        }
    }]
 }]

The resulting response with the request ext.prebid.analytics.options.enableclientdetails: true and config analytics.options.enableclientdetails:true would be:

// this is actually a nested object - but aggregated for readablility
"ext.prebid.analytics.tags": [{
  "stage": "processed-auction-request",
  "module": "pb-ortb-blocking",
  "analyticstags": [{
     "activities": [{
      "name": "enforce-blocking",
      "status": "success",
      "results": [{
        "status": "success-block",
        "values": {
                  "attributes": ["badv"],
                  "adomain": ["bad.com"]
        },
        "appliedto": {
          "bidder": "bidderA",
           "impids": ["1"]
        }
    },{
        "status": "success-allow",
        "appliedto": {
          "bidder": "bidderA",
          "impids": ["2","3","4"]
        }
    }]
 }]
},{
  "stage": "all-processed-bid-responses",
  "module": "vendorA-brand-safety",
  "analyticstags": [{
   "activities": [{
    "name": "brand-safety",
    "status": "success",
    "results": [{
        "status": "success-allow",
        "appliedto": {
          "bidder": "bidderA",
          "impids": ["1,","2","3","4"]
        }
    }]
}]

It’s up to the client-side analytics adapters to be able to parse the module-specific contents of the aTags.

Further Reading

彪子是什么意思 什么叫npc mpv是什么意思 糖尿病人喝什么茶最好 鸡蛋炒什么菜好吃
蛋白粉有什么营养 绿豆长什么样 鼻渊是什么意思 为什么冰箱冷藏室会结冰 舌苔白厚腻吃什么药见效快
用什么梳子梳头发最好 军士长是什么军衔 经常呕吐是什么原因 冠心病需要做什么检查 争辩的近义词是什么
johnson是什么品牌 血糖高适合吃什么主食 金针菇为什么不能消化 疤痕增生是什么原因 什么症状是怀孕了
蛛网膜囊肿挂什么科tiangongnft.com 怀孕生化了是什么原因hebeidezhi.com 办低保需要什么条件dayuxmw.com 合流是什么意思hcv8jop0ns3r.cn 刷牙出血是什么原因hcv7jop4ns5r.cn
骨质疏松检查什么项目hcv9jop3ns7r.cn 还记得年少时的梦吗是什么歌hcv9jop6ns9r.cn 专政是什么意思qingzhougame.com 阑尾炎是什么引起的hcv7jop5ns5r.cn zara属于什么档次hcv8jop3ns6r.cn
跑单是什么意思啊hcv8jop6ns5r.cn 潴留性囊肿是什么意思sanhestory.com 正常舌头是什么颜色hcv8jop7ns0r.cn 红色玫瑰花代表什么意思hcv8jop4ns0r.cn 直接胆红素偏高是什么原因hcv8jop2ns1r.cn
老是头疼是什么原因hcv9jop8ns2r.cn 做完胃肠镜后可以吃什么hcv8jop3ns7r.cn 做梦梦见被蛇咬是什么意思hcv8jop5ns1r.cn 雨花斋靠什么盈利hcv9jop6ns7r.cn 女生打呼噜是什么原因hcv9jop5ns9r.cn
百度