` timeseries是一组django应用程序工具,旨在帮助整理和维护timeseries数据。

django-timeseries的Python项目详细描述


Build Status

Coverage Status

timeseries是一组django应用程序工具,旨在简化 时间序列数据的整理和维护。

要求

在postgresql上运行的项目支持django版本1.8+。

安装

pip install django-timeseries

用法

fromdatetimeimporttimedeltafromdjango.dbimportmodelsfromtimeseries.utilsimportTimeSeriesModel,TimeSeriesManagerclassAd(models.Model):objects=TimeSeriesManager()classRawAdData(TimeSeriesModel):TIMESERIES_INTERVAL=timedelta(days=1)# update daily N.B integers in seconds also workNOT_AVAILABLE=-1ad=models.ForeignKey(Ad,related_name='rawdata')views=models.BigIntegerField(default=NOT_AVAILABLE)clicks=models.BigIntegerField(default=NOT_AVAILABLE)classMonthlyAdReport(TimeSeriesModel):TIMESERIES_INTERVAL=timedelta(days=28)ad=models.ForeignKey(Ad,related_name='monthlyreports')avg_view_growth=models.FloatField()avg_click_growth=models.FloatField()defad_data_collector(queryset):"""
        should return an iterable that yields dictionaries of data
        needed to successfully create a RawAdData instance
    """return...defreport_data_collector(queryset):"""
        should return an iterable that yields dictionaries of data
        needed to successfully create a MonthlyAdReport instance
    """return...# in a shell>>>Ad.objects.update_timeseries('rawdata',ad_data_collector)# this return the results of a bulk_create call from the RawAdData manager# for ads that hadn't been updated in the last day>>>Ad.objects.update_timeseries('monthlyreports',report_data_collector)# this return the results of a bulk_create call from the MonthlyAdReport# manager for ads that hadn't had a report generated in the last 28 days>>>ad=Ad.objects.prefetch_latest('rawdata','monthlyreports').first()>>>printad.latest_rawaddata,ad.latest_monthlyreports

TimeSeries QuerySet方法

timeseries.utils.TimeSeriesQuerySet

向django queryset api添加4个主要方法,这些方法可用于 更新和维护时间序列数据。这些方法包括:

  • 预取最新
  • 过滤器已过时
  • 上次更新
  • 更新时间序列

update_timeseries

输入:related_namecollector,可选的force

返回:已安装的相关模型列表。

更新QuerySet的相关模型表(由相关名称给出) 使用可调用的提供程序“收集器”。

“collector”必须将引用模型的queryset作为其唯一 争论。它还必须返回一个可以 用于构造和保存相关模型的实例。

注意:只有具有过时数据的实例才会被更新,除非 使用“force”关键字参数显式强制。

filter_outdated

输入:*related_names

返回:queryset

返回一个QuerySet,该QuerySet将生成具有 与反向相关模型相关联的“过时”数据,如 指定的相关名称。

last_updated

输入:*related_names

返回:queryset

按照给定的方式注释最新相关实例的创建时间戳 通过反向关系的相关名称。

用法:

ad=Ad.objects.last_updated('rawdata').first()# assuming there's data related to adprintad.rawdata_last_updated# this will print the timestamp of when the associated data was# last updated

prefetch_latest

输入:*related_names

返回:queryset

公开最新关联的反向关系。

用法:

ad=Ad.objects.prefetch_latest('rawdata','monthlyreports').first()printad.latest_rawaddata,ad.latest_monthlyreports# this will print the reprs of the latest associated data# instances

其他实用程序

LatestQ

timeseries.utils

输入:related_name**kwargs

返回:django.db.models.q instance

构造一个django.db.models.q实例,该实例允许查询 根据最新关联的反向关系执行。

注意:此方法设计用于与 timeseries.utils.timeseriesqueryset.last_已更新。

用法:

Ad.objects.last_updated('rawdata').filter(LatestQ('rawdata',views__gt=1000))

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

推荐PyPI第三方库


热门话题
IntelliJ IDEA Java代码样式:注释和枚举之间的空间   java车辆路径问题或工具教程未在eclipse上运行   从HTML表单发布时,java非英语UTF 8字符会发生变化   使用MultiResourceItemReader时,java Spring批处理在CustomLineMapper中获取文件名   java配置JAXB解组器来处理同时具有acessor方法和字段的类   java在JpaRepository findAll()方法中返回对象的浅拷贝   java如何对docx文件进行碎片整理,以便与ApachePOI3.8一起使用?   java如何将一维数组分解成行?   java为什么这个图形对象不是绘画?(我做错了什么?)   如何在Java代码中将Java函数应用于Scala选项   使用IntelliJ REST客户端测试Spring MVC POST导致415   weka java代码kmeans群集   java中为什么Sin(30)=0.98803116240928618   java创建Android警报通知   数组可能是Java For循环问题