Определение модели графа

В этой статье представлена разбивка структуры определения для элементов модели Graph.

Части определения

В этой таблице перечислены части определения модели Графа.

Путь к части определения type Обязательно Description
dataSources Источник данных[] true Массив источников данных
graphDefinition GraphDefinition true Определение графа сопоставления данных
graphType GraphType true Структура графа
stylingConfiguration StylingConfiguration true Конфигурация стиля графа

Источник данных

Описывает структуру источника данных.

Имя Тип Description
имя String Имя источника данных
type DeltaTable Тип источника данных
properties DataSourceProperties Свойства источника данных

DataSourceProperties

Свойства, необходимые типу источника данных. Для источников DeltaTable это путь к таблице.

Имя Тип Description
путь String Путь к источнику данных

GraphDefinition

Описывает определение графа сопоставления данных.

Имя Тип Description
nodeTables NodeTable[] Массив определений сопоставления данных узла
edgeTables EdgeTable[] Массив определений сопоставления пограничных данных

NodeTable

Описывает структуру определения сопоставления данных узла.

Имя Тип Description
id String Идентификатор определения сопоставления данных узла
nodeTypeAlias String Псевдоним узла, как определено в графе
dataSourceName String Имя источника данных
propertyMappings PropertyMapping[] Массив определений сопоставления данных свойств

EdgeTable

Описывает структуру определения сопоставления пограничных данных.

Имя Тип Description
id String Идентификатор определения сопоставления пограничных данных
edgeTypeAlias String Псевдоним края, как определено в графе
dataSourceName String Имя источника данных
sourceNodeKeyColumns String[] Массив столбцов, сопоставленных с исходным узлом
targetNodeKeyColumns String[] Массив столбцов, сопоставленных с целевым узлом
propertyMappings PropertyMapping[] Массив определений сопоставления данных свойств

PropertyMapping

Описывает структуру определения сопоставления данных свойств.

Имя Тип Description
propertyName String Имя свойства
sourceColumn String Имя исходного столбца
фильтр SingleFilter / GroupFilter Определение фильтра

SingleFilter

Описывает структуру одного фильтра.

Имя Тип Description
operator String Имя оператора фильтра
columnName String Имя столбца для этого фильтра
value Object Значение сравнения. Поддерживает строки, число, dateTime и массивы этих значений.

GroupFilter

Описывает структуру фильтра группы.

Имя Тип Description
operator String Имя оператора фильтра
filters SingleFilter[] / GroupFilter[] Фильтры этого фильтра группы
и SingleFilter[] / GroupFilter[] Фильтры для логического И
или SingleFilter[] / GroupFilter[] Фильтры для логического ИЛИ

GraphType

Описывает структуру графа.

Имя Тип Description
nodeTypes NodeType[] Массив структур узлов
edgeTypes EdgeType[] Массив пограничных структур

NodeType

Описывает структуру узла.

Имя Тип Description
alias String Псевдоним
labels String[] Массив меток
primaryKeyProperties String[] Массив свойств первичного ключа
properties Свойство[] Массив свойств

EdgeType

Описывает структуру края.

Имя Тип Description
alias String Псевдоним
labels String[] Массив меток
sourceNodeType NodeTypeReference Структура исходного узла
destinationNodeType NodeTypeReference Структура конечного узла
properties Свойство[] Массив свойств

Недвижимость

Описывает структуру свойства.

Имя Тип Description
имя String Имя свойства
type String Тип свойства

NodeTypeReference

Описывает структуру NodeTypeReference.

Имя Тип Description
alias String Псевдоним узла, на который ссылается ссылка

StylingConfiguration

Описывает структуру конфигурации стилей.

Имя Тип Description
modelLayout ModelLayout Конфигурация стиля и макета для модели графа

ModelLayout

Описывает конфигурацию стилей модели.

Имя Тип Description
Позиции Строка словаря<, позиция> Позиции узлов
Стили Строка словаря<, ModelStyle> Стили модели графа
сковорода Занимаемая должность Сдвига холст модели
zoomLevel Целое число Уровень масштабирования холста модели

Занимаемая должность

Описывает 2D-позицию.

Имя Тип Description
x Целое число Значение координат x
и Целое число Значение координаты y

ModelStyle

Описывает стиль элемента модели.

Имя Тип Description
size Целое число Размер элемента модели

Пример источников данных

{
  "dataSources": [
    {
      "name": "Customer_Table",
      "type": "DeltaTable",
      "properties": {
        "path": "abfss://9e4b0e5d-3952-44df-9ac8-2503775e0425@onelake.dfs.fabric.microsoft.com/f66b6219-28a5-4738-8b37-0c486c661b15/Tables/Customers"
      }
    },
    {
      "name": "Employee_Table",
      "type": "DeltaTable",
      "properties": {
        "path": "abfss://9e4b0e5d-3952-44df-9ac8-2503775e0425@onelake.dfs.fabric.microsoft.com/f66b6219-28a5-4738-8b37-0c486c661b15/Tables/Employees"
      }
    },
    {
      "name": "Order_Table",
      "type": "DeltaTable",
      "properties": {
        "path": "abfss://9e4b0e5d-3952-44df-9ac8-2503775e0425@onelake.dfs.fabric.microsoft.com/f66b6219-28a5-4738-8b37-0c486c661b15/Tables/PurchaseOrders"
      }
    },
    {
      "name": "Product_Table",
      "type": "DeltaTable",
      "properties": {
        "path": "abfss://9e4b0e5d-3952-44df-9ac8-2503775e0425@onelake.dfs.fabric.microsoft.com/f66b6219-28a5-4738-8b37-0c486c661b15/Tables/Products"
      }
    }
  ]
}

Пример определения графа

{
  "schemaVersion": "1.0.0",
  "nodeTables": [
    {
      "id": "Customer_5b6cb156-c778-4fce-8606-f0f712c04818",
      "nodeTypeAlias": "Customer_nodeType",
      "dataSourceName": "Customer_Table",
      "propertyMappings": [
        {
          "propertyName": "CustomerId",
          "sourceColumn": "Customer_Id"
        },
        {
          "propertyName": "FirstName",
          "sourceColumn": "First_name"
        },
        {
          "propertyName": "LastName",
          "sourceColumn": "Last_name"
        },
        {
          "propertyName": "Email",
          "sourceColumn": "Email"
        }
      ],
      "filter": {
        "and": [
          {
            "operator": "Contains",
            "columnName": "First_name",
            "value": "USA"
          },
          {
            "operator": "Contains",
            "columnName": "Last_name",
            "value": "A"
          }
        ]
      }
    },
    {
      "id": "Employee_f0f712c04818",
      "nodeTypeAlias": "Employee_nodeType",
      "dataSourceName": "Employee_Table",
      "propertyMappings": [
        {
          "propertyName": "EmployeeId",
          "sourceColumn": "Employee_Id"
        },
        {
          "propertyName": "FirstName",
          "sourceColumn": "First_Name"
        },
        {
          "propertyName": "LastName",
          "sourceColumn": "Last_Name"
        },
        {
          "propertyName": "Role",
          "sourceColumn": "Role"
        }
      ],
      "filter": {
        "operator": "AND",
        "filters": [
          {
            "operator": "Contains",
            "columnName": "First_name",
            "value": "USA"
          },
          {
            "operator": "Contains",
            "columnName": "Last_name",
            "value": "A"
          }
        ]
      }
    },
    {
      "id": "EmployeeCustomer_5b6cb156",
      "nodeTypeAlias": "EmployeeCustomer_nodeType",
      "dataSourceName": "Employee_Table",
      "propertyMappings": [
        {
          "propertyName": "EmployeeId",
          "sourceColumn": "Employee_Id"
        },
        {
          "propertyName": "FirstName",
          "sourceColumn": "First_Name"
        },
        {
          "propertyName": "LastName",
          "sourceColumn": "Last_Name"
        },
        {
          "propertyName": "Role",
          "sourceColumn": "Role"
        },
        {
          "propertyName": "Email",
          "sourceColumn": "Email"
        }
      ],
      "filter": {
        "operator": "Equal",
        "columnName": "Role",
        "value": "Manager"
      }
    },
    {
      "id": "Product_5b6cb156-c778-4fce-8606-f0f712c04818",
      "nodeTypeAlias": "Product_nodeType",
      "dataSourceName": "Product_Table",
      "propertyMappings": [
        {
          "propertyName": "CategoryId",
          "sourceColumn": "Category_Id"
        },
        {
          "propertyName": "ProductId",
          "sourceColumn": "Product_Id"
        },
        {
          "propertyName": "Name",
          "sourceColumn": "Name"
        },
        {
          "propertyName": "Price",
          "sourceColumn": "Price"
        },
        {
          "propertyName": "Cost",
          "sourceColumn": "Cost"
        }
      ],
      "filter": {
        "operator": "AND",
        "filters": [
          {
            "operator": "GreaterThan",
            "columnName": "Price",
            "value": 100
          },
          {
            "operator": "In",
            "columnName": "CategoryId",
            "value": ["Electronics", "Clothing", "Books"]
          }
        ]
      }
    }
  ],
  "edgeTables": [
    {
      "id": "CustomerPurchase_976cceac",
      "edgeTypeAlias": "CustomerPurchase_edgeType",
      "dataSourceName": "Order_Table",
      "sourceNodeKeyColumns": ["Customer_Id_FK"],
      "destinationNodeKeyColumns": ["Category_Id_FK", "Product_Id_FK"],
      "propertyMappings": [
        {
          "propertyName": "Quantity",
          "sourceColumn": "unit_price"
        },
        {
          "propertyName": "Date",
          "sourceColumn": "Date"
        }
      ],
      "filter": {
        "and": [
          {
            "operator": "Contains",
            "columnName": "Customer_Id_FK",
            "value": "USA"
          },
          {
            "operator": "Contains",
            "columnName": "Customer_Id_FK",
            "value": "A"
          }
        ]
      }
    },
    {
      "id": "EmployeePurchase_29be49f2",
      "edgeTypeAlias": "EmployeePurchase_edgeType",
      "dataSourceName": "Order_Table",
      "sourceNodeKeyColumns": ["Employee_Id_FK"],
      "destinationNodeKeyColumns": ["Category_Id_FK", "Product_Id_FK"],
      "propertyMappings": [
        {
          "propertyName": "Quantity",
          "sourceColumn": "unit_price"
        },
        {
          "propertyName": "Date",
          "sourceColumn": "Date"
        }
      ]
    },
    {
      "id": "EmployeeSold_2530ecef620c",
      "edgeTypeAlias": "Sold_edgeType",
      "dataSourceName": "Order_Table",
      "sourceNodeKeyColumns": ["Employee_Id_FK"],
      "destinationNodeKeyColumns": ["Category_Id_FK", "Product_Id_FK"],
      "propertyMappings": [
        {
          "propertyName": "CustomerId",
          "sourceColumn": "unit_price"
        },
        {
          "propertyName": "Date",
          "sourceColumn": "Date"
        },
        {
          "propertyName": "hasDiscount",
          "sourceColumn": "EmployeeDiscount"
        }
      ]
    }
  ]
}

Пример типа Графа

{
  "schemaVersion": "1.0.0",
  "nodeTypes": [
    {
      "alias": "Customer_nodeType",
      "labels": ["Customer"],
      "primaryKeyProperties": ["CustomerId"],
      "properties": [
        {
          "name": "CustomerId",
          "type": "STRING"
        },
        {
          "name": "FirstName",
          "type": "STRING"
        },
        {
          "name": "LastName",
          "type": "STRING"
        },
        {
          "name": "Email",
          "type": "STRING"
        }
      ]
    },
    {
      "alias": "Employee_nodeType",
      "labels": ["Employee"],
      "primaryKeyProperties": ["EmployeeId"],
      "properties": [
        {
          "name": "EmployeeId",
          "type": "STRING"
        },
        {
          "name": "FirstName",
          "type": "STRING"
        },
        {
          "name": "LastName",
          "type": "STRING"
        },
        {
          "name": "Role",
          "type": "STRING"
        },
        {
          "name": "Email",
          "type": "STRING"
        }
      ]
    },
    {
      "alias": "EmployeeCustomer_nodeType",
      "labels": ["Customer", "Employee"],
      "primaryKeyProperties": ["EmployeeId"],
      "properties": [
        {
          "name": "EmployeeId",
          "type": "STRING"
        },
        {
          "name": "FirstName",
          "type": "STRING"
        },
        {
          "name": "LastName",
          "type": "STRING"
        },
        {
          "name": "Role",
          "type": "STRING"
        },
        {
          "name": "Email",
          "type": "STRING"
        }
      ]
    },
    {
      "alias": "Product_nodeType",
      "labels": ["Product"],
      "primaryKeyProperties": ["CategoryId", "ProductId"],
      "properties": [
        {
          "name": "CategoryId",
          "type": "INT"
        },
        {
          "name": "ProductId",
          "type": "STRING"
        },
        {
          "name": "Name",
          "type": "STRING"
        },
        {
          "name": "Price",
          "type": "FLOAT"
        },
        {
          "name": "Cost",
          "type": "FLOAT"
        }
      ]
    }
  ],
  "edgeTypes": [
    {
      "alias": "CustomerPurchase_edgeType",
      "labels": ["PURCHASED"],
      "sourceNodeType": {
        "alias": "Customer_nodeType"
      },
      "destinationNodeType": {
        "alias": "Product_nodeType"
      },
      "properties": [
        {
          "name": "Quantity",
          "type": "INT"
        },
        {
          "name": "Date",
          "type": "DATETIME"
        }
      ]
    },
    {
      "alias": "EmployeePurchase_edgeType",
      "labels": ["PURCHASED"],
      "sourceNodeType": {
        "alias": "EmployeeCustomer_nodeType"
      },
      "destinationNodeType": {
        "alias": "Product_nodeType"
      },
      "properties": [
        {
          "name": "Quantity",
          "type": "INT"
        },
        {
          "name": "Date",
          "type": "DATETIME"
        }
      ]
    },
    {
      "alias": "Sold_edgeType",
      "labels": ["Sold"],
      "sourceNodeType": {
        "alias": "Employee_nodeType"
      },
      "destinationNodeType": {
        "alias": "Product_nodeType"
      },
      "properties": [
        {
          "name": "CustomerId",
          "type": "STRING"
        },
        {
          "name": "Date",
          "type": "DATETIME"
        },
        {
          "name": "hasDiscount",
          "type": "BOOLEAN"
        }
      ]
    }
  ]
}

Пример конфигурации стилей

{
  "schemaVersion": "1.0.0",
  "modelLayout": {
    "positions": {
      "Customer_nodeType": {
        "x": 1,
        "y": 1
      },
      "Employee_nodeType": {
        "x": 2,
        "y": 3
      },
      "EmployeeCustomer_nodeType": {
        "x": 3,
        "y": 4
      },
      "Product_nodeType": {
        "x": 6,
        "y": 7
      }
    },
    "styles": {
      "Customer_nodeType": {
        "size": 30
      },
      "Employee_nodeType": {
        "size": 30
      },
      "EmployeeCustomer_nodeType": {
        "size": 30
      },
      "Product_nodeType": {
        "size": 30
      },
      "CustomerPurchase_edgeType": {
        "size": 30
      },
      "EmployeePurchase_edgeType": {
        "size": 30
      },
      "Sold_edgeType": {
        "size": 30
      }
    },
    "pan": {
      "x": 0,
      "y": 0
    },
    "zoomLevel": 1
  }
}