全方位报告定义

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 Spring启动启用HTTPS   actionscript 3 java中的这个[“var”+“name”]   java只匹配给定集合中一个字符的一个匹配项   java Hibernate:防止角色表中出现多个相同的条目   javajersey+Spring注入servlet请求   java HtmlEditor javafx失去焦点   java Apache Wicket AjaxRequestTarget ListView组件未刷新或更新   mysql java。无法将lang.String转换为java。sql。时间戳   java将巨大的整数文件(在一行中)拆分为具有内存限制的已排序块   安卓如何完全关闭proguard?   安装Eclipse和Android SDK后的java“无AVD可用”消息   java动态显示图像视图   java在Spring中还有哪些WebsocketClient实现?   java Glassfish需要很长时间才能重新启动   使用Java简单串行连接器将pc与arduino连接   java如何在camel文件组件配置中结合readLockCheckInterval和maxMessagesPerPoll?   单击Android时的java预览图像   java如何将字节数组转换为ByteArrayOutputStream