精华内容
下载资源
问答
  • 目前,AnalysisQl 数据视图的元数据(维度、指标、指标计算器)需要通过代码(API)或资源文件的形式硬编码,应用启动时,按照声明的顺序依次注册。这种模式下,数据视图是 静态 的,任何一项变更都需要重新升级发布...

    前言

    目前,AnalysisQl 数据视图的元数据(维度、指标、指标计算器)需要通过代码(API)或资源文件的形式硬编码,应用启动时,按照声明的顺序依次注册。这种模式下,数据视图是 静态 的,任何一项变更都需要重新升级发布应用服务,不利于服务快速迭代。

    考虑到这种情况,AnalysisQl 在保留原有 静态 视图的前提下,扩展出 动态 视图方案,基于数据库实现元数据的存储,通过更新相应的数据库记录,即可 实时动态 地更新数据视图。

     
    AnalysisQl 项目主页:https://github.com/weibodip/analysisql。

    元数据

    数据视图元数据有 7 类:

    • 数据视图信息
    • 数据视图维度
    • 数据视图维度值
    • 数据视图指标
    • 数据表信息
    • 数据表维度
    • 数据表指标计算器

    每一类元数据对应着数据库的一张数据表,我们分别介绍。

    :数据库以 MySQL 为例进行介绍。

    数据视图信息

    数据视图信息表(aql_view_info),用于存储多个数据视图(即:主题)信息,包括:名称、别名、描述及状态信息。

    字段名称 字段类型 字段含义
    id INT 主键ID
    avi_topic VARCHAR 视图名称,通常使用英文表示。
    avi_alias VARCHAR 视图别名,通常使用中文表示,与 avi_topic(英文名称)相对应。
    avi_desc VARCHAR 视图描述,通常用于说明主题附加信息。
    avi_state INT 视图状态,数值 0 表示视图处于 禁用 状态;数值 1 表示视图处于 启用 状态,其余数值无效。

    :视图名称(avi_topic)全局唯一。

    数据视图维度

    数据视图维度表(aql_view_dimension),用于存储数据视图支持的维度(多个)信息,包括:名称、别名、描述。

    字段名称 字段类型 字段含义
    id INT 主键ID
    avd_topic VARCHAR 视图名称。
    avd_name VARCHAR 视图维度名称,通常使用英文表示。
    avd_alias VARCHAR 视图维度别名,通常使用中文表示,与 avd_name(英文名称)相对应。
    avd_desc VARCHAR 视图维度描述,通常用于说明维度附加信息。

    :视图名称(avd_topic)与视图维度名称(avd_name)组合全局唯一。

    数据视图维度值

    数据视图维度值表(aql_view_dimension_value),用于存储数据视图中各个维度对应的维度值(多个)。每一个维度的维度值支持多个版本(版本使用时间戳表示),通常使用最新版本(即时间戳最大)的维度值数据。

    字段名称 字段类型 字段含义
    id INT 主键ID
    topic VARCHAR 视图名称。
    dimension VARCHAR 视图维度名称。
    dtime TIMESTAMP 视图维度值时间戳,默认当前时间(CURRENT_TIMESTAMP)。
    dvalue VARCHAR 视图维度值。

    写入维度值

    数据视图维度值表中的维度值数据需要借助外部应用程序写入,可以使用定时或不定时的方式。注意,写入指定视图维度的维度值时,这些维度值的时间戳(dtime)需要保持一致,表示这些维度值归属于同一个版本。

    读取维度值

    读取指定视图维度的维度值时,需要经过以下2个步骤:

    1. 根据视图名称、视图维度名称计算视图维度值的最大时间戳(最新版本);
    SELECT MAX(dtime) FROM %s WHERE topic = '%s' AND dimension = '%s'
    
    1. 根据视图名称、视图维度名称及视图维度值的最大时间戳检索维度值;
    SELECT DISTINCT(dvalue) FROM %s WHERE topic = '%s' AND dimension = '%s' AND dtime = '%s'
    

    :视图名称(topic)、视图维度名称(dimension)与视图维度值时间戳(dtime)组成联合索引。

    数据视图指标

    数据视图指标表(aql_view_metric),用于存储数据视图支持的指标(多个)信息,包括:名称、别名、描述。

    字段名称 字段类型 字段含义
    id INT 主键ID
    avm_topic VARCHAR 视图名称。
    avm_name VARCHAR 视图指标名称,通常使用英文表示。
    avm_alias VARCHAR 视图指标别名,通常使用中文表示,与 avm_name(英文名称)相对应。
    avm_desc VARCHAR 视图指标描述,通常用于说明指标附加信息。

    :视图名称(avm_topic)与视图指标名称(avm_name)组合全局唯一。

    数据表信息

    数据表信息表(aql_view_table_info),用于存储数据视图支持的数据表(多个)信息,包括:名称、时间粒度大小、时间粒度单位、保存周期、时间延迟及状态信息。

    字段名称 字段类型 字段含义
    id INT 主键ID
    avti_topic VARCHAR 视图名称。
    avti_name VARCHAR 数据表名称,通常使用英文表示。
    avti_data INT 数据表数据时间粒度大小。
    avti_unit VARCHAR 数据表数据时间粒度单位,支持“s”(秒)、“m”(分钟)、“h”(小时)、“d”(天)、“w”(周)、“M”(月)、“q”(季度)、“y”(年)。
    avti_period INT 数据表数据保存周期,使用数据表时间粒度为计算单位,详情见后。
    avti_delay INT 数据表数据时间延迟,使用数据表时间粒度为计算单位,详情见后。
    avti_state INT 数据表状态,数值 0 表示数据表处于 禁用 状态;数值 1 表示数据表处于 启用 状态,其余数值无效。

    假设,时间粒度大小(avti_data)为 5,时间粒度单位(avti_unit)为 m,表示数据表数据时间粒度为 5分钟。
    假设,时间粒度为 5分钟,保存周期(avti_period)为 288,表示数据表数据保存周期为 1天。
    假设,时间粒度为 5分钟,时间延迟(avti_delay)为 12,表示数据表数据时间延迟为 1小时;

    :视图名称(avti_topic)、数据表名称(avti_name)全局唯一;

    数据表维度

    数据表维度表(aql_view_table_dimension),用于存储数据视图/数据表支持的维度(多个)。

    字段名称 字段类型 字段含义
    id INT 主键ID
    avtd_topic VARCHAR 视图名称。
    avtd_table VARCHAR 数据表名称。
    avtd_name VARCHAR 数据表维度名称。

    :视图名称(avtd_topic)、数据表名称(avtd_table)及数据表维度名称(avtd_name)组合全局唯一。

    数据表指标计算器

    数据表指标计算器表(aql_view_table_calculator),用于存储数据视图/数据表支持的指标计算信息,包括:名称、指标计算查询引擎(类型、链接、用户名、密码)、指标计算规则(SQL查询语句)。

    字段名称 字段类型 字段含义
    id INT 主键ID
    avtc_topic VARCHAR 视图名称。
    avtc_table VARCHAR 数据表名称。
    avtc_metric VARCHAR 数据表指标名称。
    avtc_type VARCHAR 数据表指标计算时使用的查询引擎类型,支持“clickhouse”、“mysql”、“presto”。
    avtc_url VARCHAR 数据表指标计算时连接查询引擎的JDBC URL。
    avtc_user VARCHAR 数据表指标计算时连接查询引擎的用户名。
    avtc_passwd VARCHAR 数据表指标计算时连接查询引擎的密码。
    avtc_sql VARCHAR 数据表指标计算时使用的SQL查询语句,不同的查询引擎需要使用不同的SQL查询语法。

    :视图名称(avtc_topic)、数据表名称(avtc_table)及数据表指标名称(avtc_metric)组合全局唯一。

    结语

    AnalysisQl 会定时扫描加载数据视图表中所有处于 启用 状态的视图,然后使用视图名称从其它几类元数据表中扫描加载视图相应的维度、指标、数据表等信息。如果需要更新数据视图,只需要增加或更新相应的元数据记录,下一次扫描完成之后即可生效。

    展开全文
  • 数据视图的别名,可以在数据视图设计界面中获取(支持跨应用操作数据, 格式为:“appid@表别名”; 支持套间应用操作数据, 格式为:“套间应用别名#表别名”) wheres:[字符型]: 查询条件 返回值 返回值:(整型) 返回...

    【百数后端讲解】:dataview.count:查询数据视图中的数据量

    功能函数原型

    dataview.count(formAlias,wheres="")
    

    参数
    formAlias:[字符型]:
    数据视图的别名,可以在数据视图设计界面中获取(支持跨应用操作数据, 格式为:“appid@表别名”; 支持套间应用操作数据, 格式为:“套间应用别名#表别名”)
    wheres:[字符型]:
    查询条件

    返回值
    返回值:(整型)
    返回符合where条件的数据数量,返回-1表示执行出错,可执行 getlasterror 函数获取具体详细信息

    备注
    可能出现的错误信息:

    不存在的表单
    不存在的字段
    不支持的函数
    连接数据库失败
    BETWEEN([<>/><])条件的边界值参数不正确,必须为数组,且数组元素不能少于两个
    IN条件的数组元素不能为空
    不存在的条件字段
    不支持的条件字段,不支持的字段类型有(子表单、附件、图片、成员多选、部门多选)
    条件字段不为数组
    跨应用取数据appid不存在
    跨应用取数据表单别名不存在
    非法的appid
    套间应用别名非法
    套间应用别名为空

    其他
    所有表单api调用频率限制为1000次/分钟

    示例

    def test():
        wheres = "$单行文本 in ('11','22')"
        ret = dataview.count("测试表单",wheres)
        print(ret)
    

    更多相关功能扩展:https://www.baishuyun.com/extension.html?id=2

    展开全文
  • QStandardItemModel :储自定义数据的通用模型 QTableView 模型 提供了一个表视图的默认模型/视图实现。 QListView 模型 提供了一个列表或图标视图。 QTreeView 模型 提供了树视图的默认模型/视图实现。 Widget.h #...

    学习自唐佐林老师的Qt


    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    QStandardItemModel :储自定义数据的通用模型
    QTableView 模型 提供了一个表视图的默认模型/视图实现。
    QListView 模型 提供了一个列表或图标视图。
    QTreeView 模型 提供了树视图的默认模型/视图实现。

    Widget.h

    #ifndef WIDGET_H
    #define WIDGET_H
    #include <QtGui/QWidget>
    #include <QTableView>
    #include <QListView>
    #include <QTreeView>
    #include <QStandardItemModel>
    class Widget : public QWidget
    {
        Q_OBJECT
        
        //模型对象,储自定义数据的通用模型
        QStandardItemModel m_model;
        //QTableView 类提供了一个表视图的默认模型
        QTableView m_tableView;
        //QListView 模型 提供了一个列表或图标视图。
        QListView m_listView;
        //QTreeView 模型 提供了树视图的默认模型
        QTreeView m_treeView;
        void initModel();
        void initView();
    public:
        Widget(QWidget *parent = 0);
        ~Widget();
    };
    #endif // WIDGET_H
    

    Widget.cpp

    #include "Widget.h"
    #include <QStandardItem>
    //Qt::WindowContextHelpButtonHint:窗口式样
    Widget::Widget(QWidget *parent)
        : QWidget(parent, Qt::WindowContextHelpButtonHint)
    {
        initModel();
        initView();
        //连接视图和模型  不同的视图显示同一个模型中的数据
        m_tableView.setModel(&m_model);
        m_listView.setModel(&m_model);
        m_treeView.setModel(&m_model);
    }
    //初始化模型
    void Widget::initModel()
    {
        //得到模型的虚拟根节点
        QStandardItem* root = m_model.invisibleRootItem();
        //从堆空间创建数据项目
        QStandardItem* itemA = new QStandardItem();
        QStandardItem* itemB = new QStandardItem();
        QStandardItem* itemC = new QStandardItem();
        QStandardItem* itemChild = new QStandardItem();
        //向数据项中添加数据
        /*
    Qt::DisplayRole,作为直接可见的提示信息
    Qt::ToolTipRole,悬浮框中补充型提示信息
    Qt::WhatsThisRole,在状态中显示的提示性信息
        */
        itemA->setData("A", Qt::DisplayRole);
        itemA->setData("Tip A", Qt::ToolTipRole);
        itemA->setData("Help A", Qt::WhatsThisRole);
        itemB->setData("B", Qt::DisplayRole);
        itemB->setData("Tip B", Qt::ToolTipRole);
        itemC->setData("C", Qt::DisplayRole);
        itemC->setData("Tip C", Qt::ToolTipRole);
        itemC->setData("Help C", Qt::WhatsThisRole);
        itemChild->setData("Child", Qt::DisplayRole);
        itemChild->setData("Tip Child", Qt::ToolTipRole);
        itemChild->setData("Help Child", Qt::WhatsThisRole);
        //将itemChild数据项 放到 itemC数据项下面 0 0 的位置
        itemC->setChild(0, 0, itemChild);
        //用模型管理数据项,即将数据项放置到模型中。以三元组的方式组织数据,即可以看出每个数据项的索引,如itemA: 0 0 root
        root->setChild(0, 0, itemA);
        root->setChild(0, 1, itemB);
        root->setChild(1, 0, itemC);
    }
    //初始化视图
    void Widget::initView()
    {
        m_tableView.setParent(this);
        m_tableView.move(10, 10);
        m_tableView.resize(300, 100);
        m_listView.setParent(this);
        m_listView.move(10, 120);
        m_listView.resize(300, 100);
        m_treeView.setParent(this);
        m_treeView.move(10, 230);
        m_treeView.resize(300, 100);
    }
    Widget::~Widget()
    {
        
    }
    

    main.cpp

    #include <QtGui/QApplication>
    #include "Widget.h"
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        Widget w;
        w.show();
        
        return a.exec();
    }
    

    在这里插入图片描述

    展开全文
  • 模型视图设计模式

    千次阅读 2017-08-25 00:00:48
    模型视图设计模式的核心思想: 模型(数据)与视图(显示)相分离 模型对外提供标准接口存取数据 视图自定义数据的显示方式 工作机制: 当数据发生改变时 模型发出信号通知视图 当用户与视图进行交互时 视图发出...

    模型视图设计模式的核心思想:

    • 模型(数据)与视图(显示)相分离
    • 模型对外提供标准接口存取数据
    • 视图自定义数据的显示方式

    工作机制:

    • 当数据发生改变时
      • 模型发出信号通知视图
    • 当用户与视图进行交互时
      • 视图发出信号提供交互信息

    在Qt中,不管模型以什么结构组织数据,都必须为每一个数据提供独立无二的索引;视图通过索引访问模型中的具体数据
    这里写图片描述

    这里写图片描述

    • 模型索引是数据与视图分离的重要机制
    • 模型中的数据使用唯一的索引来访问
    • QModelIndex是Qt中的模型索引类

    索引的意义:

    • 包含具体数据的访问途径
    • 包含一个指向模型的指针
      这里写图片描述

    这里写图片描述

    这里写图片描述

    • 索引是访问模型中具体数据的约定方式
    • 获取索引的通用形式为三元组(row, column, parent)
    • 索引在需要时由模型实时创建
    • 使用空索引作为父节点表示顶层数据元素

    数据角色

    • 模型中的数据在视图中的用途(显示方式)可能不同
    • 模型必须为数据设置特定数据角色(数据属性)
    • 数据角色用于提示视图数据的作用
      这里写图片描述

    这里写图片描述

    小结:

    • 模型中的数据有附加的角色属性
    • 数据角色定义了数据显示的标准方式
    • 数据角色用于提示视图数据的作用
    • 视图可以自由解析或者忽略数据的角色信息
    展开全文
  • 数据视图几乎给格式化数据提供了无限可能。向XLV Web部件一样,数据视图不含数据;它们指向存在其他位置的数据。当你请求页面时,SP向SQL Server内容数据库查询数据视图的属性,来发现数据的位置。然后数据抽取服务...
  • Qt--模式视图设计

    2019-09-18 06:51:51
    模型视图设计模式 A.模型视图设计模式1.模型与视图相分离2.模型对外提供标准接口存取数据(不关心数据如何显示)3.视图自定义数据的显示方式(不关系数据如何组织存储)模型视图模式的直观理解模型视图的工作机制1.当...
  • 文章目录1 初探Qt中的模型视图设计模式2 模型视图中的索引 1 初探Qt中的模型视图设计模式 模型视图设计模式的核心思想: 模型(数据)与视图(显示)相分离。 模型对外提供标准接口存取数据(不关心数据如何显示)...
  • 针对上述问题,基于多视图协同技术设计了一种新的可信数据动态交互可视化系统,对系统的硬件中的采集器、识别器、监控器进行设计,通过数据信息分析、可视化元素建模、动态分析完成软件设计。为验证系统的有效性,...
  • 视图设计包括列表视图、新建视图、查看视图、修改视图和删除视图设计等5个方面有关数据的增删查改的内容。 我们知道,视图上的数据存取不是直接与模型打交道,而是通过控制器来处理。在视图中对于控制器的请求,大多...
  • 模型视图设计模式的核心思想 -- 模型(数据)与视图(显示)相分离 -- 模型对外提供标准接口存取数据(不关心数据如何显示) -- 视图自定义数据的显示方式(不关心数据如何组织存储) 模型视图模式的工作机制 ...
  • tableView空数据问题 一般项目中tableView若数据为空时会有一个...设计视图协议 tableView设置空视图代理 每次重绘tableView时判断添加或移除空数据提示图 具体实现 空视图协议,遵守协议必须实现showEmtpy属性...
  • 模型视图设计模式 模型视图设计模式的核心思想 1、模型(数据)与视图(显示)相分离 2、模型对外提供标准接口存取数据(不关心数据如何显示) 3、视图自定义数据的显示方式(不关系数据如何组织、存储)   注:模型里面并不...
  • 如题,用access2010给数据表创建了分割窗体,但切换成设计视图后,为什么只有上半部分的窗体视图而没有下半部分的数据视图? 同样的,为方便多窗口统一管理,将此分割窗体加入到 “窗体”选项卡->“导航”->"水平...
  • 模型试图设计模式的核心思想:1、模型(数据)与视图(显示)相分离;2、模型对外提供标准接口存取数据(不关系数据如何显示);3、视图自定义数据的显示方式(不关系数据如何被组织和存储)。直观理解:其中Model指...
  • Django视图函数设计

    2019-01-06 17:07:55
    一般情况下,视图函数的功能是通过模型层对象处理数据,然后通过下面三种方式返回HTTP Response: 直接构造HTTP BODY 用数据渲染HTML模板文件 如果有逻辑错误就返回HTTP错误或者其他状态! 1.直接构造HTML页面 ...
  • 分析了POSC数据平台中数据操作的特点;从数据操作的角度提出了Epicentre视图概念;研究了Epicentre视图要解决的问题,达到的目标及建立Epicentre视图的技术关键和...该研究为进一步设计和实现Epicentre视图提供了依据。
  • 最近在做一个相对复杂的整站,某个页面有相对复杂的业务逻辑,出现了反复bug反复修改的情况,甚至是...之前对于视图的了解,仅仅是自己的总结:一段查询代码,将数据表根据需要查询出来,供查询使用;为了数据一致性,
  • Odoo将各种数据,如:权限数据、类数据视图数据等,按照模型分表存储,然后在查看时,按照索引从各个表格读取信息,组合成我们看到的内容。】 1:创建模型 模型属性:模型类可以使用一些属性来控制它们的一些...
  • 一般情况下,视图函数的功能是通过模型层对象处理数据,然后通过下面三种方式返回HTTP Response: 直接构造HTTP BODY 用数据渲染HTML模板文件 如果有逻辑错误就返回HTTP错误或者其他状态! 1.直接构造HTML页面 ...
  • 大家好,我最近遇到了一个问题,就是数据窗口设计画板的列规则视图找不到,并且column specification为灰色,我的那个数据源是一个存储过程来的。有谁遇到此情况吗,这到底是什么回事呢?
  • 你可以设计这些视图,因此,如果你的潜在数据表结构设计合理的话,查询优化器就可以知道从那个数据表得到查询需要的数据,从而加速运行。一个设计合理的分布式分区视图还可以实现更新、插入和删除。文中深入探讨它...
  • 在需求,设计稿和接口都已准备好的情况下你如何复现设计,对上接口。怎样去实现这个页面? 假设这个页面是一个基础页面(没有很复杂的功能或者特别酷炫的效果)...假设接口返回的数据是这样的 { "data": { "id":
  • 唯一不方便的是,使用跨列表查询时,我们不可以使用“表单”这一种数据视图,这意味着我们就不可以使用设计出的页面进行编辑的操作。但是对于不复杂的应用,跨列表的数据视图功能还是给了我们非常大的方便。结果的U
  • Designing Your Data Source and Delegate(设计你的数据源和代理) Every collection view must have a data source object. The data source object is the content that your app displays. It could be an ...
  • Odoo将各种数据,如:权限数据、类数据视图数据等,按照模型分表存储,然后在查看时,按照索引从各个表格读取信息,组合成我们看到的内容。】 1:创建模型 模型属性:模型类可以使用一些属性来控制它们的一些...
  • 场景分析: 在app开发中,我们为了保证用户体验往往需要在有ListView的地方添加...第一步:设计数据布局文件view_empty.xml <cn.xx.widget.EmptyView xmlns:android="http://schemas.android.com/apk/res/androi
  • 视图

    2020-09-26 21:15:23
    定义: 视图是从一个或多个表(或视图)导出的虚表。对于数据库用户来说,试图似乎是一个真实的表,它具有一组命名的数据... 数据库拥有者只允许用户通过视图查询数据,保护了底层基本表的设计结构。 提高性能 存储
  • 第8章 视图 上一页 下一页 返 回 * * * 第8章 索引 8.1 视图的类型和优点 8.2 创建视图 8.3 修改视图 8.4 通过视图查询数据 8.5 删除视图 8.6 通过视图修改数据 8.1 视图的类型 1视图的概念 视图是一个虚拟表其内容...
  • 实例化视图模式当数据不是查询的理想格式时,可以在一个或多个数据存储区中生成填充视图。用以支持高效的数据提取,并提高应用程序性能。问题背景在存储数据时,开发人员和数据管理员通常会关注数据的存储方式,而不是它...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,161
精华内容 5,264
关键字:

数据视图设计