让决策更智能
新一代智能数据分析平台

配置文件说明

观远产品部发表于:2021年03月18日 19:51:07更新于:2021年03月18日 20:29:48

在 Guandata_Workbench 根目录下,有一个配置文件: settings.json 文件, settings.json 可以存在于多个层级,每个层级的优先级有差异(离数据文件,或者sql文件越近的配置文件里的配置项优先级最高),一些配置项模块只能在某些层级使用,见下表所示:

settings.json配置项主要模块

Guandata_Workbench

数据类型文件夹,如mysql,csv等父文件夹数据集文件夹
登录信息guandataYYY
数据库连接信息mysqlYYY
定时更新配置schedule_cronY

SQL 参数input_parameterY

邮件配置emailY

数据集与字段table

Y

此外在不同settings.json中相同的配置项内容,优先级高的settings.json的配置项的优先级高于低优先级的settings.json的配置项,但是优先级高的settings.json的配置项只作用于当前目录下。

例如: 分别在Guandata_Workbench和CSV文件夹中的setting.json同时定义了定时调度配置项"schedule_cron",则CSV文件夹的定时调度计划则只会执行该文件夹下配置setting.json的"schedule_cron"(包括当前目录以及当前目录的所有子目录,除非子目录也配置"schedule_cron"),而不会执行Guandata_Workbench中的setting.json配置的"schedule_cron"。

下面将分章节来介绍配置项各个主要部分

{   
    "guandata": {     
        "homeUrl": "https://app.guandata.com",     
        "domain": "demo1",     
        "email": "change_to_your_guandata_email",     
        "password": "change_to_your_guandata_passwod"   
    },   
    "input_parameter": {       
         "today_date": "new org.joda.time.LocalDate().toString('yyyy-MM-dd')",       
         "yesterday_date": "new org.joda.time.LocalDate().minusDays(1).toString('yyyy-MM-dd')"   
    },   
    "schedule_cron": {       
        "daily": "0+0+5+++?"     
    },   
    "mysql": {       
        //Database Driver class, noramlly this is not changed       
        "driverClassName": "com.mysql.jdbc.Driver",       
        //url can also pass in some config parameters       
        "url":"jdbc:mysql://127.0.0.1:3306/your_db_name?verifyServerCertificate=false&useSSL=true",       
        "username": "change_to_your_db_user_name",     
        "password": "change_to_your_db_user_password",     //还可以继续添加数据库支持的其它配置property     
        "defaultFetchSize": "5000",     
        "useCursorFetch": "true"     
    },   
    "postgresql": {       
        "driverClassName": "org.postgresql.Driver",       
        "url": "jdbc:postgresql://127.0.0.1:5432/postgres",       
        "username": "change_to_your_db_user_name",       
        "password": "change_to_your_db_user_password"   
    },   
    "greenplum": {       
        "driverClassName": "org.postgresql.Driver",       
        "url": "jdbc:postgresql://127.0.0.1:5432/postgres",      
        "username": "change_to_your_db_user_name",       
        "password": "change_to_your_db_user_password"   
    } 
}

Note: 我们在JSON的基础上加入了 "注释"支持: 可以把注释写在 / / 中. 其它的应该都是标准JSON. 所以, 需要额外注意该配置文件写的是否合法JSON:

  • 当JSON中的参数是数组时, 注意最后一个元素后面不能有多余的逗号, 比如:

["a1", "a2", "a3",]

这里的a3 后面有多余的逗号。

  • 当JSON的参数是Object时, 最后一个元素后面也不能有多余的逗号, 比如:

{  "key1": "value1",  "key2": "value2",  "key3": "value3", }

这里的 value3 后面有多余的逗号。

1. guandata 部分

本部分是配置文件中的:

{   
    "guandata": {       
        "homeUrl": "https://app.guandata.com",       
        "domain": "demo1",       
        "email": "change_to_your_guandata_email",       
        "password": "change_to_your_guandata_passwod"     
    } 
}

主要是用户在观远平台的登陆信息:

  • homeUrl: 观远平台的服务地址, SaaS用户不需要修改,私有化部署用户需要改成自己的观远平台服务地址

  • domain: 观远平台上的"公司域名",私有化部署时域名经常会做缺省处理,如果您不知道,请联系您的观远顾问

  • email: 观数上登陆的email账号

  • password: 观数上该用户的密码 这里是基本信息, 比较重要的一点是: 输入的用户需要具有"管理员权限", 否则, 会导致无法创建data source

2. JDBC数据源部分

本部分是数据库相关部分. 目前主要支持3种数据库 (如果用户有其它jdbc数据库的需要, 我们可以快速添加):

  • mysql

  • postgresql

  • greenplum 每一个都对应于配置文件中的一小块, 比如: greenplum数据库:

    { 
        "greenplum": {     
            "driverClassName": "org.postgresql.Driver",     
            "url": "jdbc:postgresql://127.0.0.1:5432/postgres",     
            "username": "change_to_your_db_user_name",     
            "password": "change_to_your_db_user_password"   
        } 
    }

    其中:

  • driverClassName: jdbc driver中的java类名, 一般无需修改

  • url: 数据库的连接地址

  • username: 数据库的用户名

  • password: 数据库的密码

3. 定时调度

对于JDBC数据源, 我们一般都是配置为定时任务, 每天夜里导入前一天的数据. 那么需要我们自定义"定时任务". NOTE: 本程序中假设客户的机器上的时区已经设置为正确的本地时间, 比如: 对于中国的公司, 一般机器上都设置为了"北京时间", 以及的定时任务配置时, 就是采用的机器的本地时间 对应于配置文件中的"schedule_cron"部分

{   
    "schedule_cron": {     
        "daily": "0+0+5+++?"     
    } 
}

本例中只展示了 1个定时出发器, 其名字是"daily", 而其调度时间为: 0+0+5+++? 代表着: 每天凌晨5点触发一次. 其中"0+0+5+++?"的语法是类似于CRON任务的一种写法, 具体可以参考: http://camel.apache.org/quartz2.html 当然, 定时的需求很多, 用户可以再额外自定义自己的任务的触发时间, 比如:

{   
    "schedule_cron": {     
        "daily": "0+0+7+++?",     
        "daily_noon": "0+10+12+++?",     
        "hourly": "0+10+++*+?",     
        "weekly": "0+10+5+?+*+MON"     
    } 
}

则建了如下的时间触发器:

  • daily, 改为每天7点执行

  • daily_noon, 改为每天中午12:10执行

  • hourly, 每小时的10分钟时执行 (触发次数会比较多, 需要谨慎配置)

  • weekly, 每周一的早上5:10执行 具体的使用方法请参考下面的案例

4. SQL模板中需要的输入参数

对于JDBC数据源, 我们有了"定时调度", 但是有个问题, 每天的sql是跟时间有关的, 我们怎么才能配置每天导入的数据不一样呢? 这时, 需要我们的 "input_parameter"

{   
    "input_parameter": {     
        "today_date": "new org.joda.time.LocalDate().toString('yyyy-MM-dd')",     
        "yesterday_date": "new org.joda.time.LocalDate().minusDays(1).toString('yyyy-MM-dd')"   
    } 
}

这些参数也是自定义的. 比如: 本例子中, 我们定义了2个时间相关的模板参数:

  • today_date

  • yesterday_date 比如: 今天是 2017年3月13日, 那么这两个参数的值将会自动算为:

  • today_date 为: 2017-03-13

  • yesterday_date 为: 2017-03-12 这个时候, 在SQL文件中, 我们只需要配置为如下SQL

    select customer_id, max(customer_name), sum(sales) from sales_orders where order_date = '${yesterday_date}' group by customer_id

    在运行该sql时, ${yesterday_date} 将会被替换为 2017-03-12 当然, 日期的格式也可以定制: 比如, 公司的数据库中是用的类似于 "20170312"的格式来存储的日期, 那么我们可以配置为:

{     
    "input_parameter": {         
        "yesterday_date_short": "new org.joda.time.LocalDate().minusDays(1).toString('yyyyMMdd')"     
    } 
}

那么这个参数的格式就是 "20170312"这种格式了 (唯一修改的地方是: 把日期的格式化string由 'yyyy-MM-dd' 替换为 'yyyyMMdd'

    您需要登录后才可以回复