文章 Michael Lei · 一月 10, 2022 5m read

正如德勤最近的一份报告所强调的,数字孪生的设计和部署是为了实现虚拟协作,吸收和处理大数据,以及协助我们以更有效和安全的方式管理物理世界。

有几个行业在使用数字孪生能力方面取得了重大进展,如汽车、飞机、能源、城市规划和医疗保健等,仅举几例。疫情的影响和对全球经济造成的破坏只会加速全球数字孪生的发展速度和采用。因此,预计到2026年,全球数字孪生市场将达到482亿美元,年复合增长率为58%。虽然目前北美市场拥有最大的份额,但预计亚太市场将在未来几年经历最快的增长。

按照Gartner的说法,数字孪生是现实世界实体或系统的数字代表。数字孪生体的实现是一个封装的软件对象或模型,它反映了一个独特的物理对象、过程、组织、人或其他抽象概念。

数字孪生的设计和部署是复杂的,与其他数字技术密切相关,如云计算、人工智能、物联网、5G网络、区块链和虚拟、增强或混合现实。预计所有这些技术的采用率将对数字孪生产业产生深远影响。迄今为止,系统数字孪生体已经在所有行业中占主导地位,但专家们一致认为,产品和流程数字孪生体类型将在未来几年内上升。

0
0 237
文章 姚 鑫 · 一月 10, 2022 1m read

第二十章 SQL函数 ATAN

一个标量数值函数,返回角的正切的弧切值(以弧度为单位)。

大纲

{fn ATAN(numeric-expression)}

参数

  • numeric-expression - 一个数值表达式。 这是这个角的正切。

ATAN返回NUMERIC或数据类型。 如果数值表达式是数据类型, 返回; 否则,返回。

描述

接受任何数值,并以浮点数返回角度正切的反(弧)值。 如果传递一个值,ATAN将返回。 将非数字字符串(包括空字符串())视为数字值。

返回一个精度为、刻度为18的值。

只能用作标量函数(使用花括号语法)。

可以使用函数将弧度转换为角度。 可以使用函数来转换角度到弧度。

示例

下面的例子展示了ATAN的效果:

SELECT {fn ATAN(0.52)} AS ArcTangent 

0.479519291992596165
0
0 110
公告 Michael Lei · 一月 10, 2022
嗨,开发者们,新年好!
不要错过2021年的《ISC 应用市场Open Exchange应用文摘》。让我们认识一下最受欢迎的应用程序和它们的开发者,欢迎免费下载。. 
2021概览:
183 新应用
6,899 次下载 
654 位开发者
566 应用累计
15,897 次下载累计
1,457 位开发者累计
0
0 184
文章 姚 鑫 · 一月 9, 2022 1m read

第十九章 SQL函数 ASIN

一个标量数值函数,返回角的正弦的反正弦(以弧度为单位)。

大纲

{fn ASIN(numeric-expression)}

参数

  • numeric-expression - 数值在-1到1之间的数值表达式。 这是这个角的正弦值。

ASIN返回NUMERIC或数据类型。 如果数值表达式是数据类型, 返回; 否则,返回。

描述

以浮点数的形式返回角度正弦的反(弧)值。 的值必须是有符号的十进制数,取值范围为1 ~ -1(含1)。 超出此范围的数字将导致运行时错误,生成(发生致命错误)。 如果传递一个值,将返回。 将非数字字符串(包括空字符串())视为数字值。

返回一个精度为、刻度为18的值。

只能用作标量函数(使用花括号语法)。

可以使用函数将弧度转换为角度。 可以使用函数来转换角度到弧度。

示例

下面的例子展示了ASIN对两个正弦的影响。

SELECT {fn ASIN(0.52)} AS ArcSine 

0.54685095069594411
SELECT {fn ASIN(-1.00)} AS ArcSine 

-1.570796326794896619
0
0 165
公告 Michael Lei · 一月 9, 2022
嘿,社区。 
这里是2021年度开发社区问题摘要。 让我们来看看InterSystems开发人员提出的最受欢迎的问题。
统计
 2021年提出了980 个问题
 社区总共提出了5,699 问题
最多浏览问题
0
0 219
文章 姚 鑫 · 一月 8, 2022 1m read

第十八章 SQL函数 ASCII

一个字符串函数,返回字符串表达式的第一个(最左边)字符的整型ASCII码值。

大纲

ASCII(string-expression)

{fn ASCII(string-expression)}

参数

  • string-expression - 字符串表达式,它可以是列的名称、字符串字面值或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(如CHARVARCHAR)。 或类型的字符串表达式。

描述

如果传入一个NULL或空字符串值,将返回NULL。 空字符串返回与一致。

SELECT ASCII('Z') AS AsciiCode

90
SELECT {fn ASCII('ZEBRA')} AS AsciiCode 

90

在执行转换之前,SQL将数字转换为规范形式。 下面的例子返回55,它是数字7的值:

如果数字以字符串的形式表示,则不执行此数字解析。 下面的例子返回43,它是加()字符的ASCII值:

0
0 159
文章 姚 鑫 · 一月 7, 2022 1m read

第十七章 SQL函数 ACOS

一个标量数值函数,返回给定余弦的弧余弦(以弧度为单位)。

大纲

{fn ACOS(numeric-expression)}

参数

  • numeric-expression - 数值在-1到1之间的数值表达式。 这是这个角的余弦值。

ACOS返回NUMERIC或数据类型。 如果数值表达式是数据类型, 返回; 否则,返回。

描述

接受一个数值并以浮点数的形式返回余弦的反(弧)值。 的值必须是有符号的十进制数,取值范围为1 ~ -1(含1)。 超出此范围的数字将导致运行时错误,生成(发生致命错误)。 如果传入值,将返回。 将非数字字符串(包括空字符串())视为数字值0。

返回一个精度为、刻度为18的值。

只能用作标量函数(使用花括号语法)。

可以使用函数将弧度转换为角度。 可以使用函数来转换角度到弧度。

示例

下面的例子展示了ACOS对两个余弦的影响:

SELECT {fn ACOS(0.52)} AS ArcCosine 

1.02394537609895251
SELECT {fn ACOS(-1)} AS ArcCosine

3.141592653589793238
0
0 101
文章 Michael Lei · 一月 6, 2022 1m read

医疗数据集应用(这个应用主要目的是获得医疗数据样本来进行自动化机器学习和其他应用)现在有了6个真实世界的医疗数据集(更多数据集在路上,敬请期待!)

  • 糖尿病数据集: 预测糖尿病诊断
  • 心脏病数据集: 预测心脏病
  • 肾病数据集: 预测肾病
  • 乳腺癌数据集: 预测乳腺癌
  • 孕产妇风险数据集 (新): 预测孕产妇风险等级
  • 医院死亡率数据集 (新): 预测医院死亡率

赶快来下载吧: https://openexchange.intersystems.com/package/Health-Dataset

0
0 1426
文章 姚 鑫 · 一月 6, 2022 1m read

第十六章 SQL函数 ABS

返回数值表达式的绝对值的数值函数。

大纲

ABS(numeric-expression)

{fn ABS(numeric-expression)}

参数

  • numeric-expression - 要返回其绝对值的数字。

ABS返回与数字表达式相同的数据类型。

描述

ABS返回绝对值,它总是或正数。 如果数值表达式不是一个数字(例如,字符串'abc',或空字符串),返回。 当传递值时,返回。

请注意,可以用作标量函数(带有花括号语法),也可以用作通用函数。

这个函数也可以通过调用方法从ObjectScript中调用:

  WRITE $SYSTEM.SQL.Functions.ABS(-0099)

示例

下面的例子展示了的两种形式:

SELECT ABS(-99) AS AbsGen,{fn ABS(-99)} AS AbsODBC

下面的例子展示了如何处理其他一些数字。 在调用之前, SQL将数字表达式转换为规范形式,删除前导和末尾的零,并计算指数。

SELECT ABS(007) AS AbsoluteValue

7
0
0 101
文章 姚 鑫 · 一月 5, 2022 3m read

第十五章 SQL窗口函数概述(二)

ROW子句

ROW子句可以与FIRST_VALUE(字段)和SUM(字段)窗口函数一起使用。 可以为其他函数指定它,但不执行任何操作(有或没有子句的结果相同)。

子句有两种语法形式:

ROWS framestart
ROWS BETWEEN framestart AND frameend

Framestart和有五个可能的值:

UNBOUNDED PRECEDING                    /* 从当前分区的开头开始 */
offset PRECEDING   /* 开始偏移当前行之前的行数 */
CURRENT ROW                                      /* 从当前行开始 */
offset FOLLOWING  /* 继续偏移当前行后面的行数 */
UNBOUNDED FOLLOWING                  /* 继续到当前分区的末尾 */

子句语法可以在两个方向上指定一个范围。 例如,在无界前面和1后面之间的行以及在1后面和无界前面之间的行是完全相等的。

框架的开始语法默认为作为范围的第二个未指定的边界。 因此,以下是等价的:

   
0
0 162
文章 Frank Ma · 一月 5, 2022 2m read

本文译自 https://community.intersystems.com/post/using-sql-apache-hive-hadoop-bi…

大家好,

在使用SparkHadoop时,InterSystems IRIS有一个很好的连接器。但市场上也提供了大数据Hadoop访问的其他优秀替代方案-Aparche Hive。请看区别:

HIVE

SPARK

Hive是一个数据库,用类似于RDBMS数据库的表格形式存储数据。

Spark不是一个数据库,它是一个数据分析框架,可以在内存中对大至PB字节的大容量数据进行复杂的数据分析。

使用称作HiveQL的自己的SQL引擎,数据可以从Hive中抽取出来。只能使用SQLs来抽取数据。

Spark既能使用复杂SQLsComplex SQLs)也能使用MapReduce机制进行数据分析。它支持Java, Scala Python写的分析框架。

HiveHadoop之上运行。

Spark没有自己专用的存储。实际上,它是从外部的分布式数据存储如运行在HadoopMongoDB上的HiveHBase中抽取数据。

0
0 208
文章 姚 鑫 · 一月 4, 2022 6m read

第十四章 SQL窗口函数概述(一)

指定用于计算聚合和排名的每行“窗口框架”的函数。

窗口函数和聚合函数

在应用WHEREGROUP byHAVING子句之后,窗口函数对查询选择的行进行操作。

窗口函数将一组行中的一个(或多个)字段的值组合在一起,并在结果集中为生成的列中的每一行返回一个值。

虽然窗口函数与聚合函数类似,因为它们将多行结果组合在一起,但它们与聚合函数的不同之处在于,它们本身并不组合行。

窗函数的语法

窗口函数被指定为查询中的选择项。 窗口函数也可以在查询的子句中指定。

窗口函数执行与由子句、子句和ROWS子句指定的逐行窗口相关的任务,并为每一行返回一个值。 这三个子句都是可选的,但是如果指定了,必须按照以下语法中的顺序指定:

window-function() OVER (
                      [ PARTITION BY partfield ]
                      [ ORDER BY orderfield ]
                      [ ROWS framestart ] | [ ROWS BETWEEN framestart AND frameend ]
                      )
0
0 1571
公告 Claire Zheng · 一月 4, 2022

亲爱的社区开发者们,大家好!

欢迎积极参与新一轮InterSystems开发者竞赛!

随着 InterSystems IRIS 2021.2 预览版 的发布和全新的 LOAD DATA 功能,我们希望将其与最新的竞赛(数据集)结合起来! 

🏆 InterSystems 数据集竞赛🏆

竞赛时间: 2021年12月27日-2022年1月16日

奖金总额: $9,450


0
0 460
文章 姚 鑫 · 一月 3, 2022 4m read

第十三章 SQL聚合函数 XMLAGG

一个聚合函数,它创建一个串接的值字符串。

大纲

XMLAGG([ALL | DISTINCT [BY(col-list)]] string-expr [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定XMLAGG返回string-expr的所有值的连接字符串。 如果没有指定关键字,这是默认值。
  • - 可选-一个子句,指定XMLAGG返回一个只包含唯一值的连接字符串。 可以指定子句,其中可以是单个字段,也可以是用逗号分隔的字段列表。
  • - 计算结果为字符串的SQL表达式。 通常,这是要从其中检索数据的列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

描述

聚合函数返回由中的所有值组成的串接字符串。 返回值的数据类型为,默认长度为。

  • 一个简单的(或)返回一个字符串,该字符串包含一个由所选行中的所有值组成的连接字符串。 为的行将被忽略。

以下两个示例都返回相同的单个值,即表的Home_State列中列出的所有值的串联字符串。

SELECT XMLAGG(ALL Home_State) AS ALL_State_Values
FROM Sample.Person

请注意,此连接字符串包含重复值。

0
0 322
文章 姚 鑫 · 一月 3, 2022 4m read

第十二章 SQL聚合函数 VARIANCE, VAR_SAMP, VAR_POP

返回数据集统计方差的聚合函数。

大纲

VARIANCE([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

VAR_SAMP([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

VAR_POP([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定统计方差函数返回表达式中所有值的方差。 如果没有指定关键字,这是默认值。
  • DISTINCT - 可选- DISTINCT子句,指定统计方差函数返回不同(唯一)表达式值的方差。 DISTINCT可以指定子句,其中可以是单个字段,也可以是用逗号分隔的字段列表。
  • - 任何有效的表达式。 通常是包含要分析方差的数据值的列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

这些函数返回

0
0 387
文章 姚 鑫 · 十二月 31, 2021 4m read

第十一章 SQL聚合函数 SUM

返回指定列值之和的聚合函数。

大纲

SUM([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定SUM返回表达式中所有值的和。 如果没有指定关键字,这是默认值。
  • DISTINCT - 可选-一子句,指定SUM返回表达式中不同(唯一)值的和。 可以指定子句,其中可以是单个字段,也可以是用逗号分隔的字段列表。
  • - 任何有效的表达式。 通常是包含要求和的数据值的列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

返回与相同的数据类型,但有如下异常:、和返回的数据类型都是。

注意:可以指定为聚合函数,也可以指定为窗口函数。 本参考页面描述了作为聚合函数的使用。 SUM作为一个窗口函数在窗口函数概述中描述。

描述

聚合函数返回表达式值的和。 通常,表达式是查询返回的多行中字段的名称(或包含一个或多个字段名称的表达式)。

可以在引用表或视图的SELECT查询或子查询中使用。 可以在列表或子句中与普通字段值一起出现。

不能在子句中使用。 不能在的子句中使用,除非是子查询。

和所有聚合函数一样,可以接受一个可选的子句。 SUM(DISTINCT col1)

0
0 70
文章 Michael Lei · 十二月 30, 2021 1m read

对于那些在某种程度上需要测试ECP的水平可扩展性(计算能力和/或用户和进程的并发性),但又懒得建立环境、配置服务器节点等的人来说,我刚刚在Open Exchange上发布了OPNEx-ECP部署的应用/示例。 

0
0 193
文章 姚 鑫 · 十二月 30, 2021 3m read

第十章 SQL聚合函数 STDDEV, STDDEV_SAMP, STDDEV_POP

返回数据集的统计标准差的聚合函数。

大纲

STDDEV([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

STDDEV_SAMP([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

STDDEV_POP([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定标准偏差函数返回表达式的所有值的标准偏差。如果未指定关键字,则这是默认值。
  • DISTINCT - 可选-指定标准偏差函数返回不同(唯一)表达式值的标准偏差的DISTINCT子句。DISTINCT可以指定子句,其中可以是单个字段,也可以是逗号分隔的字段列表。
  • - 任何有效的表达式。通常是包含要分析标准偏差的数据值的列的名称。
  • - 可选-列名或逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用HAVING子句中的条件。

除非表达式的数据类型为

0
0 353
文章 Jingwei Wang · 十二月 30, 2021 7m read

可以使用内嵌REST API用描述文件生成REST服务

请求消息如下:

POST: http://[YourServer]/api/mgmnt/v2/INTEROP/cmAPI

Body: API 描述文件,例如下面的Json文件
Basic Authorization Username: 用户名

Basic Authorization Password: 密码

Content-Type Header: application/json

** 注意**:调用接口前,需要创建相应命名空间,本示例为INTEROP

API 描述文件:

{
 "swagger": "2.0",
 "info": {
   "description": "An API for coffee sales using InterSystems IRIS",
   "version": "1.0.0",
   "title": "Coffee Maker API",
   "license": {
     "name": "Apache 2.0",
     "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
  }
},
 "schemes": [
   "https"
],
 "paths": {
   "/coffeemakers": {
     "post": {
       "description": "Returns all coffeemakers\n",
       "operationId": "QueryAll",
       "produces": [
         "application/json"
      ],
       "parameters": [],
       "responses": {
         "200": {
           "description": "Success"
        },
         "500": {
           "description": "Server error"
        }
      }
    }
  },
   "/newcoffeemaker": {
     "post": {
       "description": "Add a new coffeemaker to the store. ID is autogenerated. Other info must be provided in the request body. Name and brand are required fields. Returns new coffeemaker\n",
       "operationId": "NewMaker",
       "produces": [
         "application/json"
      ],
       "parameters": [
        {
           "in": "body",
           "name": "body",
           "required": true,
           "schema": {
             "$ref": "#/definitions/CoffeeMaker"
          }
        }
      ],
       "responses": {
         "200": {
           "description": "Success"
        },
         "400": {
           "description": "Invalid message body"
        },
         "500": {
           "description": "Server error"
        }
      }
    }
  },
   "/coffeemaker": {
     "post": {
       "description": "Retrieve existing coffeemaker given ID and data. Returns coffeemaker\n",
       "operationId": "QueryMaker",
       "produces": [
         "application/json"
      ],
       "parameters": [
        {
           "name": "id",
           "in": "query",
           "description": "CoffeemakerID",
           "required": true,
           "type": "integer"
        },
        {
           "name": "prod",
           "in": "query",
           "required": false,
           "type": "boolean"
        }
      ],
       "responses": {
         "200": {
           "description": "Success"
        },
         "404": {
           "description": "Coffeemaker not found"
        },
         "500": {
           "description": "Server error"
        }
      }
    },
     "put": {
       "description": "Update existing coffeemaker given ID and data. Returns updated coffeemaker\n",
       "operationId": "EditMaker",
       "produces": [
         "application/json"
      ],
       "parameters": [
        {
           "name": "id",
           "in": "query",
           "description": "CoffeemakerID",
           "required": true,
           "type": "integer"
        },
        {
           "in": "body",
           "name": "body",
           "description": "coffeemaker info",
           "required": true,
           "schema": {
             "$ref": "#/definitions/CoffeeMaker"
          }
        },
        {
           "name": "prod",
           "in": "query",
           "required": false,
           "type": "boolean"
        }
      ],
       "responses": {
         "200": {
           "description": "Success"
        },
         "400": {
           "description": "Invalid message body"
        },
         "404": {
           "description": "Coffeemaker not found"
        },
         "500": {
           "description": "Server error"
        }
      }
    },
     "delete": {
       "description": "Delete existing cofffeemaker given ID. Returns deleted coffeemaker\n",
       "operationId": "RemoveMaker",
       "produces": [
         "application/json"
      ],
       "parameters": [
        {
           "name": "id",
           "in": "query",
           "description": "CoffeemakerID",
           "required": true,
           "type": "integer"
        },
        {
           "name": "prod",
           "in": "query",
           "required": false,
           "type": "boolean"
        }
      ],
       "responses": {
         "200": {
           "description": "Success"
        },
         "404": {
           "description": "Coffeemaker not found"
        }
      }
    }
  }
},
 "definitions": {
   "CoffeeMaker": {
     "type": "object",
     "properties": {
       "Name": {
         "type": "string"
      },
       "Brand": {
         "type": "string"
      },
       "Price": {
         "type": "number"
      },
       "NumCups": {
         "type": "integer"
      },
       "Color": {
         "type": "string"
      },
       "Img": {
         "type": "string"
      }
    }
  }
}
}
0
0 304
文章 姚 鑫 · 十二月 29, 2021 3m read

[toc]

第九章 SQL聚合函数 MIN

返回指定列中的最小数据值的聚合函数。

大纲

MIN([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-将聚合函数应用于所有值。ALLMIN返回的值没有影响。提供它是为了与兼容。
  • - 可选-指定考虑每个唯一值。对MIN返回的值没有影响。它是为兼容性提供的。
  • - 任何有效的表达式。通常是包含要从中返回最小值的值的列的名称。
  • - 可选-列名或逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用HAVING子句中的条件。

返回与表达式相同的数据类型。

描述

聚合函数返回表达式的最小值(最小值)。通常,表达式是查询返回的多行中的字段名称(或包含一个或多个字段名称的表达式)。

可以在引用表或视图的SELECT查询或子查询中使用。MIN可以出现在选择列表或子句中,与普通字段值一起出现。

不能在子句中使用。除非是子查询,否则不能在联接的子句中使用。

与大多数其他聚合函数一样,不能应用于流字段。尝试这样做会生成错误。

与大多数其他聚合函数不同,ALL和关键字(包括在MIN中不执行任何操作。它们是为了与SQL-92兼容而提供的。

数据值

使用的指定字段可以是数字或非数字。对于数字数据类型字段,最小值定义为数值中的最低值;因此

0
0 304
文章 Jingwei Wang · 十二月 29, 2021 5m read

$HOROLOG($H)

表示当前的本地日期和时间,是由两个整数值组成的字符串,这些整数是计数器,是InterSystems IRIS存储格式,不是用户可读的日期和时间。

ddddd,sssss

代码示例:

w $H,!
 
北京时间2021年12月29日15:15:30时,输出结果为:
 
66107,54930

第一个整数,ddddd,是当前日期,表示为自1840年12月31日以来的天数,其中第1天是1841年1月1日。这个日期到达的最大年年限是9999年12月31日,所以这个整数的最大值是2980013。$HOROLOG不能直接用于表示1840年到9999年范围之外的日期

第二个整数,sssss,是当前的时间,表示为从当天午夜开始的秒数计数。系统将时间字段从0递增到86399秒。当午夜时分达到86399时,系统将时间字段重置为0,并将日期字段增加1。

你可以通过调用Horolog()方法获得相同的当前日期和时间信息,如下所示。

WRITE $SYSTEM.SYS.Horolog()

$NOW()

$NOW()返回当前进程的本地日期和时间,是InterSystems IRIS存储格式,不是用户可读的日期和时间。

ddddd,sssss.ffffff

代码示例:

$ZTIMESTAMP

0
0 299
文章 Jingwei Wang · 十二月 29, 2021 4m read

dformat :

描述
1 MM/DD/[YY]YY : 07/01/97 或 02/22/2018
2 DD Mmm [YY]YY : 01 Jul 97
3 YYYY-MM-DD :2018-02-22 (ODBC时间格式:默认值在下面的tformat部分有描述) 默认情况下,这种格式与当前的地区设置无关 如果要使用你当前的日期和时间的地区设置与这种格式,请将localeopt设置为0。
4 DD/MM/[YY]YY :01/07/97 或 22/02/2018
5 Mmm [D]D, YYYY :Jul 1, 1997
6 Mmm [D]D YYYY :Jul 1 1997
7 Mmm DD [YY]YY :Jul 01 1997
8 YYYYMMDD :19970701
9 Mmmmm [D]D, YYYY :July 1, 1997
10 W (2) :一个星期的日数,从0(星期日)到6(星期六)编号。
0
0 201
文章 姚 鑫 · 十二月 28, 2021 3m read

第八章 SQL聚合函数 MAX

返回指定列中最大数据值的聚合函数。

大纲

MAX([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-将聚合函数应用于所有值。 ALLMAX返回的值没有影响。 它提供了兼容性。
  • - 可选-一个子句,指定考虑每个惟一值。 DISTINCT对返回的值没有影响。 它提供了兼容性。
  • - 任何有效的表达式。 通常是包含要返回的最大值的值的列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

返回与表达式相同的数据类型。

描述

聚合函数返回表达式的最大值。 通常,表达式是查询返回的多行中字段的名称(或包含一个或多个字段名称的表达式)。

可以在引用表或视图的SELECT查询或子查询中使用。 MAX可以在列表或子句中与普通字段值一起出现。

不能在子句中使用。 不能在的子句中使用,除非是子查询。

与大多数其他聚合函数一样,不能应用于流字段。 尝试这样做会产生一个错误。

与大多数其他聚合函数不同,ALL和关键字,包括,在中不执行任何操作。 它们是为了的兼容性而提供的。

数据值

使用的指定字段可以是数字或非数字。 对于数字数据类型字段,

0
0 577
文章 姚 鑫 · 十二月 27, 2021 6m read

第七章 SQL聚合函数 LIST

创建逗号分隔值列表的聚合函数。

大纲

LIST([ALL | DISTINCT [BY(col-list)]] string-expr [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定LIST返回string-expr的所有值的列表。 如果没有指定关键字,这是默认值。
  • - 可选-一个子句,指定LIST返回一个仅包含唯一的值的列表。 可以指定子句,其中可以是单个字段,也可以是用逗号分隔的字段列表。
  • - 计算结果为字符串的SQL表达式。 通常是所选表中列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

描述

聚合函数返回指定列中以逗号分隔的值列表。

一个简单的(或)返回一个字符串,其中包含一个逗号分隔的列表,该列表由所选行中string-expr的所有值组成。 其中为空字符串()的行由逗号分隔列表中的占位符逗号表示。 为的行不包含在逗号分隔的列表中。 如果只有一个值,并且是空字符串(),返回空字符串。

返回一个字符串,该字符串包含一个逗号分隔的列表,该列表由所选行中的所有不同(唯一)值组成:LIST(DISTINCT col1)。 不包含在逗号分隔的列表中。 返回一个逗号分隔的列表,其中只包含那些

0
0 233
文章 Michael Lei · 十二月 27, 2021 5m read

freepik- freepik.com 首先,什么是数据匿名化?

根据维基百科 Wikipedia:

数据匿名化 是一类以隐私保护为目的的 信息清洁  . 是从数据集中去除可确定个人的信息  , 使得该数据描述的个人保持匿名.

换句话讲, 数据匿名化是保留数据但同时要确保数据源的匿名. 基于所采用的匿名技术,数据被编辑、屏蔽或替换。 这就是IRIS-Disguise的目的,提供一套匿名化工具。 您可以使用两种不同的方式,通过方法执行或在持久类定义本身内部指定匿名化策略。

当前版本的IRIS-Disguise提供了6种匿名化数据的策略

  • 销毁Destruction
  • 加扰Scramble
  • 洗牌Shuffling
  • 部分掩蔽Partial Masking
  • 随机化Randomization
  • 伪造Faking

让我解释每种策略,我将用一个例子展示一个方法执行,正如前面提到的,我还将展示如何在持久类定义中应用。

要以这种方式使用IRIS-Disguise,您需要“戴上伪装眼镜”

在持久类中,可以扩展dc.Disguise.Glasses 类,并根据您选择的策略更改数据类型的任何属性。

之后,在任何时候,只需调用类上的congoverProcess方法。将使用数据类型的策略替换所有值。

让我们开始吧。

###销毁 Destruction

此策略将用一个单词(默认为“机密”)替换整个列。

Do ##class(dc.Disguise.Strategy).Destruction("classname", "propertyname", "Word to replace")

0
2 409
文章 姚 鑫 · 十二月 26, 2021 6m read

第六章 SQL聚合函数 JSON_ARRAYAGG

创建JSON格式值数组的聚合函数。

注:IRIS可用,IRIS之前版本不可用。

大纲

JSON_ARRAYAGG([ALL | DISTINCT [BY(col-list)]] string-expr [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定JSON_ARRAYAGG返回一个JSON数组,其中包含的所有值。 如果没有指定关键字,这是默认值。
  • - 可选-一个子句,指定JSON_ARRAYAGG返回一个仅包含唯一字符串值的数组。 可以指定子句,其中可以是单个字段,也可以是用逗号分隔的字段列表。
  • - 计算结果为字符串的SQL表达式。 通常是所选表中列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

描述

聚合函数返回指定列中值的JSON格式数组。

一个简单的(或)返回一个数组,其中包含所选行中的所有值。 字符串为空字符串的行由数组中的()表示。 字符串为NULL的行不包含在数组中。 如果只有一个字符串值,并且是空字符串(),将返回数组。 如果所有的值为, 返回一个空的数组。

返回一个数组,由所选行中string-expr的所有不同(唯一)值组成:。 字符串不包含在数组中。 返回一个数组,该数组只包含记录中

0
0 431
文章 姚 鑫 · 十二月 25, 2021 5m read

第五章 SQL聚合函数 %DLIST

创建值列表的聚合函数。

大纲

%DLIST([ALL | DISTINCT [BY(col-list)]] string-expr [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定%DLIST返回string-expr的所有值的列表。如果未指定关键字,则这是默认值。
  • - 可选- 子句,指定%DLIST返回一个结构化的,其中只包含唯一的值。 可以指定子句,其中可以是单个字段,也可以是用逗号分隔的字段列表。
  • - 计算结果为字符串的SQL表达式。 通常是所选表中列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

描述

聚合函数返回一个ObjectScript 结构,其中包含指定列中的值作为列表元素。

一个简单的(或)返回列表,该列表由所选行中string-expr的所有非值组成。 为的行不会作为元素包含在列表结构中。

返回一个列表,由所选行中的所有不同(唯一)非null值组成:。 不作为元素包含在结构中。 返回一个元素的,其中只包含那些字段值在值不同(唯一)的记录中。 但是请注意,不同的值可能包含一个单独的NULL值。

%DLIST 和 %SelectMode

可以使用属性来指定

0
0 141
文章 姚 鑫 · 十二月 24, 2021 4m read

第四章 SQL聚合函数 COUNT(二)

权限

要使用COUNT(*),必须对指定的表具有表级别的SELECT权限。 要使用COUNT(column-name),必须对指定的列具有列级的权限,或者对指定的表具有表级的权限。 可以通过调用命令来确定当前用户是否具有权限。 可以通过调用方法来确定指定的用户是否具有表级权限。

性能

为了获得最优的性能,你应该按照以下方式定义索引:

  • 对于COUNT(*),如果需要,定义位图扩展索引。 这个索引可能是在创建表时自动定义的。
  • 对于COUNT(fieldname),为指定字段定义一个位片索引。 查询计划优化自动应用默认的排序规则到fieldname

未提交事务所做的更改

与所有聚合函数一样,COUNT总是返回数据的当前状态,包括未提交的更改,而不管当前事务的隔离级别如何,如下所示:

  • 插入和更新的记录的计数,即使这些更改尚未提交并可能回滚。
  • 不计算已删除的记录,即使这些删除还没有提交并且可以回滚。

示例

下面的示例返回中的总行数:

SELECT COUNT(*) AS TotalPersons
     FROM Sample.Person

下面的示例返回中的姓名、配偶和最喜欢的颜色的计数。这些计数不同,因为有些配偶和字段为;不计算:

SELECT COUNT(Name) AS People,
       COUNT(Spouse) AS PeopleWithSpouses,
       COUNT(FavoriteColors) AS PeopleWithColorPref
FROM Sample.Person
0
0 114
文章 姚 鑫 · 十二月 23, 2021 5m read

第三章 SQL聚合函数 COUNT(一)

返回表或指定列中的行数的聚合函数。

大纲

COUNT(*)

COUNT([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • * - 指定应计算所有行以返回指定表中的总行数。 COUNT(*)不接受其他参数,不能与ALL或关键字一起使用。 不接受表达式参数,也不使用任何特定列的信息。 返回指定表或视图中的行数,但不消除重复项。 它分别计数每一行,包括包含值的行。
  • - 可选-指定返回表达式中所有值的计数。 如果没有指定关键字,这是默认值。
  • DISTINCT - 可选-一个子句,指定COUNT返回表达式的不同(唯一)值的计数。 不能与流字段一起使用。 可以指定子句,其中可以是单个列名,也可以是用逗号分隔的列名列表。
  • - 任何有效的表达式。 通常是包含要计算的数据值的列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在子句中的条件。

返回数据类型。

描述

聚合函数有两种形式:

  • 以整数形式返回表达式中值的数目的计数。 通常,表达式是查询返回的多行中字段的名称(或包含一个或多个字段名称的表达式)。 不计算值。 它可以选择计数或不计数重复的字段值。 总是返回数据类型 长度为,精度为,刻度为。
0
0 669
文章 Jingwei Wang · 十二月 23, 2021 6m read

正如你在我的简介中看到的,我在一所大学教书,我想分享我对IRIS(或之前的Caché)教学的看法。

已经有一段时间了,但我还记得在今年早些时候看到YURI MARX GOMES关于 "用InterSystems对象和SQL开发 "一系列课程。他对第1天第2天第3天的课程内容进行了简要的描述,并附有讲师Joel Solon的评论。我心想,分享我自己的经验可能会有趣。

在我真正写下我教给学生的东西之前,先简单介绍一下我的经历。

在我毕业拿到硕士学位回到大学工作后,我们系决定更新我们的课程,在普通课程中增加几门新课程。其中一门是 "后关系型数据库"。它是为研究生第一年的学生讲授的。开始时,它包括72小时的讲座和72小时的实践。现在变为秋季学期72小时的讲座和36小时的实践。

由于我是一名新员工,而且是一名年轻有为的员工,我被赋予了讲授这门新学科的职责。我感到惊讶和惊恐是不言而喻的。首先,我根本没有任何教学方面的实践经验。其次,我只有夏天的三个月时间来学习一项对我来说完全陌生的技术并准备课程的讲授。幸运的是,我已经知道了应该教授哪个数据库。这个数据库就是InterSystems Caché。

总之,我或多或少地准备好了,然后我亲爱的学生们的问题开始了。例如,为什么他们必须学习这个数据库,他们在哪里以及如何使用这个数据库,等等。

1
0 381