【问题标题】:How to create multiple vertex in SAP HANA Graph如何在 SAP HANA Graph 中创建多个顶点
【发布时间】:2018-02-15 13:00:06
【问题描述】:

我正在尝试在 SAP HANA 中创建 2 个(多个)顶点,例如 -

为顶点ITEMDATASET

创建两个表
CREATE COLUMN TABLE "GREEK_MYTHOLOGY"."ITEM" (
"ITEM_ID" VARCHAR(100) PRIMARY KEY,
"ITEM_NAME" VARCHAR(100)
);

CREATE COLUMN TABLE "GREEK_MYTHOLOGY"."DATASET" (
"DATASET_ID" VARCHAR(100) PRIMARY KEY,
"DATASET_NAME" VARCHAR(100)
);

并将边缘创建为 REFERENCES

CREATE COLUMN TABLE "GREEK_MYTHOLOGY"."REFERENCES" (
"REF_ID" INT UNIQUE NOT NULL,
"SOURCE" VARCHAR(100) NOT NULL
REFERENCES "GREEK_MYTHOLOGY"."ITEM" ("ITEM_ID")
ON UPDATE CASCADE ON DELETE CASCADE,
"TARGET" VARCHAR(100) NOT NULL
REFERENCES "GREEK_MYTHOLOGY"."DATASET" ("DATASET_ID")
ON UPDATE CASCADE ON DELETE CASCADE,
"TYPE" VARCHAR(100)
);

现在我想将两个顶点(ITEMDATASET)与边缘 REFERENCES 连接起来,如下所示

CREATE GRAPH WORKSPACE "GREEK_MYTHOLOGY"."GRAPH"
EDGE TABLE "GREEK_MYTHOLOGY"."DATASET"
SOURCE COLUMN "SOURCE" 
TARGET COLUMN "TARGET"
VERTEX TABLE "GREEK_MYTHOLOGY"."ITEM" KEY COLUMN "ITEM_ID"
VERTEX TABLE "GREEK_MYTHOLOGY"."DATASET"KEY COLUMN "DATASET_ID"
KEY COLUMN "REF_ID";

但它在行抛出异常

VERTEX TABLE "GREEK_MYTHOLOGY"."DATASET"KEY COLUMN "DATASET_ID"

sql syntax error: incorrect syntax near "VERTEX": line 6 col 1 (at pos 200)

是否可以在 SAP HANA 图中创建多个顶点?如果是,那么正确的方法是什么。

【问题讨论】:

    标签: graph sap hana


    【解决方案1】:

    这里有一个误解。 CREATE TABLE 语句中的REFERENCES 子句与您要表示的图结构无关。 相反,它在两个表之间定义了一个外键约束

    CREATE GRAPH WORKSPACE 命令只接受一个EDGE TABLE 和一个VERTEX TABLE 作为参数。 但是,您也可以在此处传递同义词视图

    这样,您可以像这样创建一个视图"ALL_ITEMS"

    CREATE VIEW "GREEK_MYTHOLOGY"."ALL_ITEMS" as
      SELECT "ITEM_ID" as "ID", "ITEM_NAME" as "NAME"  FROM "GREEK_MYTHOLOGY"."ITEM"
      UNION 
      SELECT "DATASET_ID" as "ID", "DATASET_NAME" as "NAME" FROM "GREEK_MYTHOLOGY"."DATASET";
    

    然后引用这个视图:

    CREATE GRAPH WORKSPACE "GREEK_MYTHOLOGY"."GRAPH"
           EDGE TABLE "GREEK_MYTHOLOGY"."DATASET"
                SOURCE COLUMN "SOURCE" 
                TARGET COLUMN "TARGET"
           VERTEX TABLE "GREEK_MYTHOLOGY"."ALL_ITEMS"
                KEY COLUMN "NAME";
    

    可以使用这种方法,但您现在必须确保 "NAME" 值在两个表中是唯一的,而不是 NULL

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多