全方位报告定义

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并执行报表定义。在

^{pr2}$

另外,您可以将上下文传递给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指南。在

许可证

MIT

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像