文章
· 四月 13, 2022 阅读大约需 1 分钟
第111章 SQL函数 PREDICT

第111章 SQL函数 PREDICT

IntegratedML 函数,它应用指定的训练模型来预测提供的每个输入行的结果。

大纲

PREDICT(model-name )

PREDICT(model-name USE trained-model-name )

PREDICT(model-name WITH feature-columns-clause )

PREDICT(model-name USE trained-model-name WITH feature-columns-clause )

描述

PREDICT 是一个 IntegratedML 函数,可用作 SELECT 选择项以返回将经过训练的机器学习模型应用于指定查询的结果。

0 0
0 48
文章
· 四月 13, 2022 阅读大约需 7 分钟
用Globals 作为图数据库来存储和抽取图结构数据

image

这篇文章是对我的  iris-globals-graphDB 应用的介绍。
在这篇文章中,我将演示如何在Python Flask Web 框架和PYVIS交互式网络可视化库的帮助下,将图形数据保存和抽取到InterSystems Globals中。

建议

 

第一步 : 通过使用Python 原生SDK建立与IRIS Globals的链接

 #create and establish connection
  if not self.iris_connection:
         self.iris_connection = irisnative.createConnection("localhost", 1972, "USER", "superuser", "SYS")
                                     
  # Create an iris object
  self.iris_native = irisnative.createIris(self.iris_connection)
  return self.iris_native

 

第二步 : 使用 iris_native.set( ) 功能把数据保存到Globals 里     

#import nodes data from csv file
isdefined = self.iris_native.isDefined("^g1nodes")
if isdefined == 0:
    with open("/opt/irisapp/misc/g1nodes.csv", newline='') as csvfile:

 reader = csv.DictReader(csvfile)
 for row in reader:
    self.iris_native.set(row["name"], "^g1nodes", row["id"])

 #import edges data from csv file
 isdefined = self.iris_native.isDefined("^g1edges")
 if isdefined == 0:
    with open("/opt/irisapp/misc/g1edges.csv", newline='') as csvfile:
 reader = csv.DictReader(csvfile)
 counter = 0                
 for row in reader:
    counter = counter + 1
    #Save data to globals
    self.iris_native.set(row["source"]+'-'+row["target"], "^g1edges", counter)  

 

第三步: 使用iris_native.get() 功能把节点和边缘数据从Globals传递给PYVIS

 #Get nodes data for basic graph    
  def get_g1nodes(self):
        iris = self.get_iris_native()
        leverl1_subscript_iter = iris.iterator("^g1nodes")
        result = []
        # Iterate over all nodes forwards
        for level1_subscript, level1_value in leverl1_subscript_iter:
            #Get data from globals
            val = iris.get("^g1nodes",level1_subscript)
            element = {"id": level1_subscript, "label": val, "shape":"circle"}
            result.append(element)            
        return result

    #Get edges data for basic graph  
    def get_g1edges(self):
        iris = self.get_iris_native()
        leverl1_subscript_iter = iris.iterator("^g1edges")
        result = []
        # Iterate over all nodes forwards
        for level1_subscript, level1_value in leverl1_subscript_iter:
            #Get data from globals
            val = iris.get("^g1edges",level1_subscript)
            element = {"from": int(val.rpartition('-')[0]), "to": int(val.rpartition('-')[2])}
            result.append(element)            
        return result

 

Step4: Use PYVIS Javascript to generate graph data

<script type="text/javascript">
    // initialize global variables.
    var edges;
    var nodes;
    var network;
    var container;
    var options, data;
  
    // This method is responsible for drawing the graph, returns the drawn network
    function drawGraph() {
        var container = document.getElementById('mynetwork');
        let node = JSON.parse('{{ nodes | tojson }}');
        let edge = JSON.parse('{{ edges | tojson }}');
     
        // parsing and collecting nodes and edges from the python
        nodes = new vis.DataSet(node);
        edges = new vis.DataSet(edge);

        // adding nodes and edges to the graph
        data = {nodes: nodes, edges: edges};

        var options = {
            "configure": {
                "enabled": true,
                "filter": [
                "physics","nodes"
            ]
            },
            "nodes": {
                "color": {
                  "border": "rgba(233,180,56,1)",
                  "background": "rgba(252,175,41,1)",
                  "highlight": {
                    "border": "rgba(38,137,233,1)",
                    "background": "rgba(40,138,255,1)"
                  },
                  "hover": {
                    "border": "rgba(42,127,233,1)",
                    "background": "rgba(42,126,255,1)"
                 }
                },

                "font": {
                  "color": "rgba(255,255,255,1)"
                }
              },
            "edges": {
                "color": {
                    "inherit": true
                },
                "smooth": {
                    "enabled": false,
                    "type": "continuous"
                }
            },
            "interaction": {
                "dragNodes": true,
                "hideEdgesOnDrag": false,
                "hideNodesOnDrag": false,
                "navigationButtons": true,
                "hover": true
            },

            "physics": {
                "barnesHut": {
                    "avoidOverlap": 0,
                    "centralGravity": 0.3,
                    "damping": 0.09,
                    "gravitationalConstant": -80000,
                    "springConstant": 0.001,
                    "springLength": 250
                },

                "enabled": true,
                "stabilization": {
                    "enabled": true,
                    "fit": true,
                    "iterations": 1000,
                    "onlyDynamicEdges": false,
                    "updateInterval": 50
                }
            }
        }
        // if this network requires displaying the configure window,
        // put it in its div
        options.configure["container"] = document.getElementById("config");
        network = new vis.Network(container, data, options);
        return network;
    }
    drawGraph();
</script>

 

第五步: 从app.py 主文件调用上面的代码

#Mian route. (index)
@app.route("/")
def index():
    #Establish connection and import data to globals
    irisglobal = IRISGLOBAL()
    irisglobal.import_g1_nodes_edges()
    irisglobal.import_g2_nodes_edges()

    #getting nodes data from globals
    nodes = irisglobal.get_g1nodes()
    #getting edges data from globals
    edges = irisglobal.get_g1edges()

    #To display graph with configuration
    pyvis = True
    return render_template('index.html', nodes = nodes,edges=edges,pyvis=pyvis)    

下面是关于此项目的 介绍视频:

0 0
0 158
文章
· 四月 12, 2022 阅读大约需 2 分钟
第110章 SQL函数 POWER

第110章 SQL函数 POWER

一个数值函数,它返回给定表达式的指定幂的值。

大纲

POWER(numeric-expression,power)

{fn POWER(numeric-expression,power)}

参数

  • numeric-expression - 基数。可以是正整数或负整数或小数。
  • power - 指数,它是数值表达式的幂。可以是正整数或负整数或小数。

POWER 返回 NUMERICDOUBLE 数据类型。如果 numeric-expression 是数据类型 DOUBLE,则 POWER 返回 DOUBLE;否则,它返回 NUMERIC

0 0
0 58
文章
· 四月 11, 2022 阅读大约需 2 分钟
第109章 SQL函数 POSITION

第109章 SQL函数 POSITION

返回子字符串在字符串中的位置的字符串函数。

大纲

POSITION(substring IN string)

参数

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

POSITION返回INTEGER数据类型。

0 0
0 66
文章
· 四月 11, 2022 阅读大约需 8 分钟
InterSystems 数据平台与三级等保 - 第一篇

数据平台不仅要安全,还要合规,三级等保是我们要符合的主要安全规范。InterSystems的数据平台和集成平台产品都和三级等保有关。如果没有正确配置它们的安全选项,就会影响到整个系统的安全,影响到合规性。

在生产环境上,如何配置安全的InterSystems的数据平台,并达到三级等保的要求?

这个系列文章,针对InterSystems 数据平台的安全架构,围绕对三级等保的合规性展开,介绍如何配置出一个安全、合规的数据平台。

1 0
2 394

系统实用类:SYS.Database中的查询FreeSpace可以用来在任何时候检查磁盘上的自由空间。

下面是在IRIS终端中的尝试方法(进入%SYS命名空间,然后运行它)。

zn "%SYS"
set stmt=##class(%SQL.Statement).%New()
set st=stmt.%PrepareClassQuery("SYS.Database","FreeSpace")
set rset=stmt.%Execute()
// 一次性显示所有
do rset.%Display()

输出结果示例如下。

*在命令执行的例子中,所有的数据库都放在同一个磁盘上,所以所有的磁盘空闲空间(DiskFreeSpace)返回相同的值。

0 0
0 98
文章
· 四月 10, 2022 阅读大约需 2 分钟
第108章 SQL函数 %PLUS

[toc]

第108章 SQL函数 %PLUS

将数字转换为规范排序格式的排序函数。

大纲

%PLUS(expression)

%PLUS expression

参数

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

描述

%PLUS将数字或数字字符串转换为规范形式,然后以数字排序顺序返回这些表达式值。

数字可以包含前导和后导零、多个前导加减号、单个小数点指示符(.)和E指数指示符。
在标准形式中,将执行所有算术运算,展开指数,将符号解析为一个前导减号或无符号,并剥离前导和后导零。

0 0
0 53
文章
· 四月 8, 2022 阅读大约需 1 分钟
第106章 SQL函数 PI

第106章 SQL函数 PI

返回pi常数值的标量数值函数。

大纲

{fn PI()}
{fn PI}

描述

PI不接受参数。
它返回数学常数pi作为数据类型NUMERIC,精度为19,刻度为18

PI只能使用ODBC标量函数(花括号)语法调用。
请注意,参数括号是可选的。

描述

下面的例子都返回pi的值:

SELECT {fn PI()} AS ExactPi

3.141592653589793238
SELECT {fn PI} AS ExactPi

3.141592653589793238
0 0
0 50
文章
· 四月 7, 2022 阅读大约需 1 分钟
第105章 SQL函数 %OID

第105章 SQL函数 %OID

返回 ID 字段的 OID 的标量函数。

大纲

%OID(id_field)

参数

  • id_field - ID 字段或引用字段的字段名称。

描述

%OID 采用字段名称并返回对象的完整 OID(对象 ID)。该字段必须是 ID 字段或引用字段(外键字段)。在 id_field 中指定任何其他类型的字段会生成 SQLCODE -1 错误。

示例

以下示例显示了与引用字段一起使用的 %OID

0 0
0 47

你好!

我想知道,如果在没有运行%BuildIndices()方法的情况下向表中插入索引,是否会有问题。

需要注意的是,在索引之前插入的数据对于检索来说并不重要,所以在索引之前插入的数据在查询中不显示并不是问题。

我问这个问题的原因是,我想避免在需要插入这种索引的大表中进行索引重建。

我正在使用Cache 2018.1。

谢谢。

José

Hi!

I'd like to know if there are any issues if an index is inserted into a table without running the %BuildIndices() method.

It's important to note that data inserted before the index is not important for retrieval, so it's not a problem data inserted before the index don't show up in queries.

0 2
0 148
文章
· 四月 6, 2022 阅读大约需 2 分钟
第104章 SQL函数 %ODBCOUT

第104章 SQL函数 %ODBCOUT

ODBC 格式返回表达式的格式转换函数。

大纲

%ODBCOUT(expression)

%ODBCOUT expression

参数

  • expression - 要转换的表达式。字段名称、包含字段名称的表达式或以可转换数据类型(例如 DATE%List)返回值的函数。不能是流字段。

描述

%ODBCOUT 在通过字段或数据类型的 LogicalToOdbc 方法传递值后以 ODBC 格式返回表达式。 ODBC 格式是可以通过 ODBC 呈现数据的格式。当数据暴露给 ODBC/SQL 时使用这种格式。可用的格式对应于 ODBC 定义的格式。

0 0
0 44
文章
· 四月 5, 2022 阅读大约需 1 分钟
第103章 SQL函数 %ODBCIN

第103章 SQL函数 %ODBCIN

以逻辑格式返回表达式的格式转换函数。

大纲

%ODBCIN(expression)

%ODBCIN expression

参数

  • expression - 要转换的表达式。

描述

%ODBCIN 在通过字段或数据类型的 OdbcToLogical 方法传递值后以逻辑格式返回表达式。逻辑格式是数据的内存格式(执行操作的格式)。

%ODBCIN 是一个 SQL 扩展。

示例

以下示例显示了同一字段的默认显示格式、%ODBCIN%ODBCOUT 格式。

0 0
0 39
文章
· 四月 4, 2022 阅读大约需 2 分钟
第102章 SQL函数 %OBJECT

第102章 SQL函数 %OBJECT

标量函数,它打开一个流对象并返回相应的 oref

大纲

%OBJECT(stream)

参数

  • stream - 作为流字段名称的表达式。

描述

%OBJECT 用于打开一个流对象并返回流字段的 oref(对象引用)。

流字段上的 SELECT 返回流字段的完全形成的 oid(对象 ID)值。流字段上的 SELECT %OBJECT 返回流字段的 oref(对象引用)。这在以下示例中显示,其中 NotesPicture 都是流字段:

0 0
0 71
文章
· 四月 3, 2022 阅读大约需 3 分钟
第101章 SQL函数 NVL

第101章 SQL函数 NVL

测试 NULL 并返回适当表达式的函数。

大纲

NVL(check-expression,replace-expression)

参数

  • check-expression - 要计算的表达式。
  • replace-expression - 如果 check-expressionNULL,则返回的表达式。

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

0 0
0 56
文章
· 四月 2, 2022 阅读大约需 2 分钟
第100章 SQL函数 NULLIF

第100章 SQL函数 NULLIF

如果两个表达式具有相同的值,则返回 NULL 的函数。

大纲

NULLIF(expression1,expression2)

参数

  • expression1 - 表达式,可以是列名、数字或字符串文字、主变量或另一个标量函数的结果。
  • expression2 - 表达式,可以是列名、数字或字符串文字、主变量或另一个标量函数的结果。

NULLIF 返回与 expression1 相同的数据类型。

描述

如果 expression1 的值等于 expression2 的值,则 NULLIF 函数返回 NULL。否则,它返回 expression1 值。

NULLIF 等价于:

0 0
0 40
文章
· 四月 1, 2022 阅读大约需 4 分钟
第九十九章 SQL函数 NOW

第九十九章 SQL函数 NOW

返回当前本地日期和时间的日期/时间函数。

大纲

NOW()

{fn NOW}
{fn NOW()}

描述

NOW 不接受任何参数。参数括号对于 ODBC 标量语法是可选的;它们对于 SQL 标准函数语法是必需的。

NOW 以时间戳的形式返回该时区的当前本地日期和时间;它会根据本地时间变体进行调整,例如夏令时。

NOW 可以返回 %TimeStamp 数据类型格式 (yyyy-mm-dd hh:mm:ss.ffff) 或 %PosixTime 数据类型格式(编码的 64 位有符号整数)的时间戳。以下规则确定返回的时间戳格式:

0 0
0 43
文章
· 三月 31, 2022 阅读大约需 2 分钟
第九十八章 SQL函数 MONTHNAME

第九十八章 SQL函数 MONTHNAME

返回日期表达式的月份名称的日期函数。

大纲

{fn MONTHNAME(date-expression)}

参数

  • date-expression - 计算结果为 日期整数、ODBC 日期或时间戳的表达式。此表达式可以是列名、另一个标量函数的结果或日期或时间戳字面量。

描述

MONTHNAME 将日期整数、$HOROLOG$ZTIMESTAMP 值、ODBC 格式日期字符串或时间戳作为输入。

日期表达式时间戳可以是数据类型 %Library.PosixTime(编码的 64 位有符号整数),也可以是数据类型 %Library.TimeStamp (yyyy-mm-dd hh:mm:ss.fff)

时间戳的时间部分不被评估,可以省略。

0 0
0 29
文章
· 三月 30, 2022 阅读大约需 2 分钟
第九十七章 SQL函数 MONTH

第九十七章 SQL函数 MONTH

日期函数,它将月份作为日期表达式的整数返回。

大纲

MONTH(date-expression)

{fn MONTH(date-expression)}

描述

  • date-expression - 表达式,它是列的名称、另一个标量函数的结果,或者是日期或时间戳文字。

描述

MONTH 返回一个指定月份的整数。月份整数是针对 日期整数、$HOROLOG$ZTIMESTAMP 值、ODBC 格式日期字符串或时间戳计算的。

日期表达式时间戳可以是数据类型 %Library.PosixTime(编码的 64 位有符号整数),也可以是数据类型 %Library.TimeStamp (yyyy-mm-dd hh:mm:ss.fff)。

0 0
0 40
文章
· 三月 29, 2022 阅读大约需 2 分钟
第九十六章 SQL函数 MOD

第九十六章 SQL函数 MOD

注:IRIS可用,非IRIS版本不可用。

标量数值函数,返回一个数除以另一个数的模数(余数)。

大纲

MOD(dividend,divisor)

{fn MOD(dividend,divisor)}

参数

  • dividend - 数字,它是除法的分子(除数)。
  • divisor - 数字,它是除法的分母(除数)。

MOD 返回 NUMERIC 数据类型,除非被除数是数据类型 DOUBLE。如果dividendDOUBLE,则 MOD 返回 DOUBLE

描述

MOD 返回除数除数的数学余数(模数)。

0 0
0 46
问题
· 三月 29, 2022
数据库里的可用空间

当我们在一个命名空间中运行数据清除时,数据库的大小和空间并没有改变。 我想,像Oracle一样,它留下的空白空间是可以被缓存使用的,但有没有办法看到这些空间有多少是可用的? 今天我增加了系统可用的磁盘大小,因为我们已经达到了关键的低磁盘空间,然而,随着清理的进行,我们应该有几百GB的可用空间在数据库内使用。

0 1
0 77
文章
· 三月 28, 2022 阅读大约需 3 分钟
第九十五章 SQL函数 MINUTE

第九十五章 SQL函数 MINUTE

返回日期时间表达式的分钟的时间函数。

大纲

{fn MINUTE(time-expression)}

参数

  • time-expression - 作为列名、另一个标量函数的结果或字符串或数字文字的表达式。它必须解析为日期时间字符串或时间整数,其中基础数据类型可以表示为 %Time%TimeStamp%PosixTime

描述

MINUTE 返回一个整数,指定给定时间或日期时间值的分钟数。为 $HOROLOG$ZTIMESTAMP 值、ODBC 格式日期字符串或时间戳计算分钟。

0 0
0 47
文章
· 三月 27, 2022 阅读大约需 2 分钟
第九十四章 SQL函数 %MINUS

第九十四章 SQL函数 %MINUS

将数字转换为规范整理格式,然后反转符号的整理函数。

大纲

%MINUS(expression)

%MINUS expression

参数

  • expression - 表达式,可以是列名、数字或字符串文字、算术表达式或另一个函数的结果,其中基础数据类型可以表示为任何字符类型。

描述

%MINUS 将数字或数字字符串转换为规范形式,反转符号,然后以数字排序规则返回这些表达式值。

%MINUS%PLUS 在功能上是相同的,只是 %MINUS 反转了符号。它为解析为正数的任何数字添加减号前缀,并从解析为负数的任何数字中删除减号。零从不签名。

0 0
0 43
文章
· 三月 24, 2022 阅读大约需 2 分钟
第九十一章 SQL函数 LOWER

第九十一章 SQL函数 LOWER

将字符串表达式中的所有大写字母转换为小写字母的大小写转换函数。

大纲

LOWER(string-expression)

参数

  • string-expression - 要将其字符转换为小写的字符串表达式。表达式可以是列名、字符串文字或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHARVARCHAR)。

描述

LOWER 函数将大写字母转换为小写字母以供显示。这是 UPPER 函数的逆函数。 LOWER 对非字母字符没有影响。它保留不变的标点符号、数字以及前导和尾随空格。

LOWER 不强制将数字解释为字符串。 SQL 将数字转换为规范形式,删除前导零和尾随零。指定为字符串的数字不会转换为规范形式,并保留前导零和尾随零。

LCASE 函数也可用于将大写字母转换为小写字母。

0 0
0 34
文章
· 三月 23, 2022 阅读大约需 1 分钟
第九十章 SQL函数 LOG10

第九十章 SQL函数 LOG10

标量数值函数,它返回给定数值表达式的以 10 为底的对数。

大纲

{fn LOG10(expression)}

参数

  • expression - 数值表达式。

LOG10 返回 NUMERICDOUBLE 数据类型。如果表达式为 DOUBLE数据类型,则 LOG10 返回 DOUBLE;否则,它返回 NUMERIC

描述

LOG10 返回表达式的以 10 为底的对数值。LOG10 返回一个精度为 21、小数位数为 18 的值。

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

0 0
0 40