全方位报告定义
omni-reports的Python项目详细描述
Omni报告
omnireports是一个请求、规范化和合并报表的客户端 从多个平台使用简单、声明性和简洁的请求结构。 在幕后,Omni Report Client将把报表定义转换为特定于平台的定义 报告请求。在
Omni Report Definition是基于Google Ads Report Definition的类json数据结构, 接受多个元素来查询和分割报表。在
安装
要安装Omni Reports,请使用pip
:
pip install git+https://github.com/paretogroup/omni-reports#egg=omni_reports
用法
创建一个ReportTypeResolver
来解析每个平台的报告类型(比如googleads)。
然后,创建一个ReportClient
并执行报表定义。在
另外,您可以将上下文传递给ReportClient
,这样就可以配置ReportTypeResolver
。在
fromomni_reports.clientimportReportClientfromomni_reports.google_reportsimportGoogleAdsReportTypeResolverclient=ReportClient(GoogleAdsReportTypeResolver,{'GOOGLE_ADS_CLIENT_ID':'MY_CLIENT_ID','GOOGLE_ADS_CLIENT_SECRET':'MY_CLIENT_SECRET',})# or via `execute_report`report_definition={...}client.execute_report(report_definition,{'GOOGLE_ADS_CUSTOMER_ID':'MY_CUSTOMER_ID',})
创建报表类型
在Omni Reports中创建ReportType
很简单。只需创建一个扩展ReportType
的新类,声明
报表类型的字段,并实现resolve方法。ReportClient
将验证
报告类型并调用解析程序。在
若要创建报表类型,必须声明报表的所有字段及其行为和元数据。有三种类型 行为:属性、度量和段。在
- 属性:属性字段必须始终反映数据的当前状态,忽略报表的时间跨度
- 度量:度量字段反映报表整个时间段内的数据
- 段:段字段包含用于分组度量的维度数据。在你的 报表定义可以将单行拆分为多行。度量字段的值反映时间跨度内的数据 报告的。在
在标识每个报表类型字段的行为之后,可以开始声明报表类型类:
fromomni_reports.clientimportReportClient,ReportTypeResolverBuilderfromomni_reports.client.typesimportReportTypefromomni_reports.client.fieldsimportAttributeReportField,MetricReportField,SegmentReportFieldclassMyAdReportType(ReportType):""" Example of ReportType to query perfomance of all accounts in platform """account_id=SegmentReportField()campaign_id=SegmentReportField()ad_group_id=SegmentReportField()ad_id=SegmentReportField()cost=MetricReportField()conversions=MetricReportField()cost_per_conversion=MetricReportField()campaign_status=AttributeReportField()ad_group_status=AttributeReportField()ad_status=AttributeReportField()defresolve(self,fields,predicates,report_definition,context,client):# logic to apply predicates and filter fieldsreturn[]resolver=ReportTypeResolverBuilder() \ .add_type("MY_AD_REPORT",MyAdReportType()) \ .build()client=ReportClient(resolver)client.execute_report({'report_type':'MY_AD_REPORT','report_name':'report_name_here','selector':{'fields':['ad_group_id','cost','conversions','cost_per_conversion'],'predicates':[{'field':'campaign_id','operator':'equals','values':['1234']}]}})
贡献
要提供帮助,请参阅CONTRIBUTING指南。在
许可证
- 项目
标签: