Git 集成和部署管道

Real-Time Intelligence 与 Microsoft Fabric 中的 生命周期管理功能 集成,在产品整个生命周期内提供所有开发团队成员之间的标准化协作。 此功能通过 git 集成部署管道交付。

本文介绍通过 Microsoft Fabric Real-Time Intelligence 生命周期管理提供的配置选项。

Git 集成

Real-Time Intelligence 支持事件屋、KQL 数据库、KQL 查询集和 Real-Time 仪表板的 git 集成。 通过 git 集成,可以跟踪 git 连接工作区中这些项的更改。 集成提供了一种方法来管理这些项目的生命周期,包括版本控制、分支和合并。

所有项包括元数据,事件屋和 KQL 数据库还包含工作区中多个对象引用的数据。

Real-Time Intelligence 项中包括以下元数据元素:

  • Eventhouse 和 KQL 数据库项:表、函数和具体化视图
  • KQL 查询集:选项卡和数据源
  • Real-Time 仪表板:数据源、参数、基本查询和磁贴

从开发工作流的角度来看,以下依赖对象可能引用 eventhouse 或 KQL 数据库:

git 集成适用于平台上的所有项目,并且适用于数据层面的活动中心和 KQL 数据库。

平台级集成

在与 git 连接的工作区中序列化和跟踪以下信息:

  • Eventhouse

    • 名称
    • DESCRIPTION
    • 逻辑 guid
  • KQL 数据库

    • 名称
    • DESCRIPTION
    • 缓存策略
    • 保留策略
    • 逻辑 guid
  • KQL 查询语句集

    • 名称
    • 版本
    • 选项卡
    • 数据源
  • 实时仪表板

    • 身份证件
    • eTag
    • 架构版本
    • 标题
    • 瓷砖 []
    • 基本查询 []
    • 参数[]
    • 数据源[]

数据级集成

通过使用 KQL 脚本创建或修改数据库对象架构、属性和策略来实现数据级集成。 但是,请务必注意,并非所有在 KQL 脚本中支持的命令都与 Microsoft Fabric ALM 兼容。

  • KQL 数据库

    KQL 脚本支持以下数据库对象:

    • 功能
    • 表格策略更新
    • 列编码策略
    • 具体化视图
    • 表格引入映射

    有关支持的命令的信息,请参阅 KQL 数据库文件下的 DatabaseSchema.kql 文件说明。

Git 集成表示形式

每个与 git 同步的事件屋和 KQL 数据库项都会各自在一个文件夹中显示,文件夹以以下格式命名:<ItemName><ItemType> 其中 <ItemName> 是项的名称,是 <ItemType> 项的类型。 例如,对于名为 Example 的 Eventhouse(名为 ExampleDB 的单个 KQL 数据库),以下文件夹显示在 git 存储库中:

  • 示例Eventhouse
  • ExampleDBKQLDatabase

Eventhouse 文件

以下文件包含在 eventhouse 文件夹中:

  • 平台

    该文件使用以下架构来定义 eventhouse:

    {
      "$schema": "https://developer.microsoft.com/json-schemas/fabric/gitIntegration/platformProperties/2.0.0/schema.json",
      "metadata": {
        "type": "Eventhouse",
        "displayName": "",
        "description": ""
      },
      "config": {
        "version": "2.0",
        "logicalId": ""
      }
    }
    
  • EventhouseProperties.json

    该文件允许你为 eventhouse 项配置平台级设置。

KQL 数据库文件

以下文件包含在 KQL 数据库文件夹中:

  • 平台

    该文件使用以下架构来定义 KQL 数据库:

    {
      "$schema": "https://developer.microsoft.com/json-schemas/fabric/gitIntegration/platformProperties/2.0.0/schema.json",
      "metadata": {
        "type": "KQLDatabase",
        "displayName": "",
        "description": ""
      },
      "config": {
        "version": "2.0",
        "logicalId": ""
      }
    }
    
  • DatabaseProperties.json

    该文件使用以下架构为 KQL 数据库项配置平台级设置:

    {
      "databaseType": "ReadWrite",
      "parentEventhouseItemId": "",
      "oneLakeCachingPeriod": "P36500D",
      "oneLakeStandardStoragePeriod": "P36500D"
    }
    

    下表描述了文件中的属性 DatabaseProperties.json

    资产 DESCRIPTION
    数据库类型 有效值:ReadWrite
    parentEventhouseItemId 父事件屋的逻辑 ID。 不应修改此值。
    oneLakeCachingPeriod 缓存策略的数据库级别设置。
    oneLakeStandardStoragePeriod 保留策略的数据库级别设置。
  • DatabaseSchema.kql

    该文件是一个 KQL 脚本 ,用于配置 KQL 数据库的数据级设置。 当 KQL 数据库同步到 git 时,它会自动生成。 同步到 Fabric 工作区时,将执行该文件。

    可以通过添加或修改以下受支持的命令来更改此脚本:

    数据库对象 支持的命令
    创建或合并
    功能 创建或更改
    表格政策更新 改变
    列编码策略 改变
    具体化视图 创建或更改
    表引入映射 创建或更改

    以下示例是用于创建表及其引入映射的 KQL 脚本。

    // KQL script
    // Use management commands in this script to configure your database items, such as tables, functions, materialized views, and more.
    
    .create-merge table SampleTable (UsageDate:datetime, PublisherType:string, ChargeType:string, ServiceName:string, ServiceTier:string, Meter:string, PartNumber:string, CostUSD:real, Cost:real, Currency:string)
    .create-or-alter table SampleTable ingestion csv mapping 'SampleTable_mapping' "[{'Properties':{'Ordinal':'0'},'column':'UsageDate','datatype':''},{'Properties':{'Ordinal':'1'},'column':'PublisherType','datatype':''}]"
    

KQL 查询集文件

该文件使用以下架构来定义 KQL 查询集:

{
  "queryset": {
    "version": "1.0.0",
    "tabs": [
      {
        "id": "",
        "title": "",
        "content": "",
        "dataSourceId": "Guid1"
      }
    ],
    "dataSources": [
      {
        "id": "",
        "clusterUri": "",
        "type": "AzureDataExplorer",
        "databaseName": ""
      },
      {
        "id": "Guid1",
        "clusterUri": "",
        "type": "Fabric",
        "databaseItemId": "",
        "databaseItemName": ""
      }
    ]
  }
}

Real-Time 仪表板文件

该文件使用以下架构来定义 Real-Time 仪表板:

{
  "$schema": "",
  "id": "",
  "eTag": "\"\"",
  "schema_version": "",
  "title": "",
  "tiles": [
    {
      "id": "",
      "title": "",
      "visualType": "",
      "pageId": "",
      "layout": {
        "x": ,
        "y": ,
        "width": ,
        "height":
      },
      "queryRef": {
        "kind": "",
        "queryId": ""
      },
      "visualOptions": {
        "multipleYAxes": {
          "base": {
            "id": "",
            "label": "",
            "columns": [],
            "yAxisMaximumValue": ,
            "yAxisMinimumValue": ,
            "yAxisScale": "",
            "horizontalLines": []
          },
          "additional": [],
          "showMultiplePanels":
        },
        "hideLegend": ,
        "legendLocation": "",
        "xColumnTitle": "",
        "xColumn": ,
        "yColumns": ,
        "seriesColumns": ,
        "xAxisScale": "",
        "verticalLine": "",
        "crossFilterDisabled": ,
        "drillthroughDisabled": ,
        "crossFilter": [
          {
            "interaction": "",
            "property": "",
            "parameterId": "",
            "disabled":
          }
        ],
        "drillthrough": [],
        "selectedDataOnLoad": {
          "all": ,
          "limit":
        },
        "dataPointsTooltip": {
          "all": ,
          "limit":
        }
      }
    }
  ],
  "baseQueries": [],
  "parameters": [
    {
      "kind": "",
      "id": "",
      "displayName": "",
      "description": "",
      "variableName": "",
      "selectionType": "",
      "includeAllOption": ,
      "defaultValue": {
        "kind": ""
      },
      "dataSource": {
        "kind": "",
        "columns": {
          "value": ""
        },
        "queryRef": {
          "kind": "",
          "queryId": ""
        }
      },
      "showOnPages": {
        "kind": ""
      },
      "allIsNull":
    },
  ],
  "dataSources": [
    {
      "id": "",
      "name": "",
      "clusterUri": "",
      "database": "",
      "kind": "",
      "scopeId": ""
    }
  ],
  "pages": [
    {
      "name": "",
      "id": ""
    }
  ],
  "queries": [
    {
      "dataSource": {
        "kind": "",
        "dataSourceId": ""
      },
      "text": "",
      "id": "",
      "usedVariables": [
        "",
        ""
      ]
    }
  ]
}