> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft Fabric

> 将自定义事件从 Microsoft Fabric 同步到 OneSignal，以基于用户行为触发自动化旅程和个性化消息活动。

export const PLATFORM_0 = "Microsoft Fabric"

export const DATA_TYPE_0 = "table columns"

export const COLUMN_HEADER_0 = "Fabric Column"

export const PROPERTIES_DESCRIPTION_0 = "JSON object with event metadata"

## 概述

OneSignal + Microsoft Fabric 集成可以自动将您的 Fabric 数据湖库或数据仓库中的自定义事件同步到 OneSignal，以基于用户行为触发自动化消息活动和 Journey。

Microsoft Fabric 是一个统一的分析平台，将数据工程、数据科学、实时分析和商业智能集成在一个环境中。

***

## 要求

* 访问自定义事件（目前处于测试阶段）
* [升级账户计划](https://onesignal.com/pricing)（免费应用不可用）。

### Microsoft Fabric

* 具有工作区访问权限的 **Microsoft Fabric 容量**
* 具有适当权限的 **服务主体**
* 包含事件数据的 **SQL 端点**（数据仓库或数据湖库）
* 在租户设置中启用的 **外部 API 访问**

***

## 设置

<Steps>
  <Step title="在 Azure 中创建服务主体">
    为 OneSignal 创建新的服务主体以访问您的 Fabric 资源：

    1. 登录 Azure 门户
    2. 导航到 **Microsoft Entra ID** > **应用注册**
    3. 点击 **+ 新注册**
    4. 输入名称："OneSignal Fabric Integration"
    5. 选择**仅此组织目录中的账户**
    6. 点击**注册**
    7. 记下**应用程序（客户端）ID** 和**目录（租户）ID**
    8. 在**证书和密钥**下，创建新的客户端密钥
    9. 记下**客户端密钥值**
  </Step>

  <Step title="配置 Fabric 租户设置">
    为服务主体启用外部访问：

    1. 在 Microsoft Fabric 中，点击**设置** > **管理门户**
    2. 转到**租户设置**
    3. 在**开发者设置**下，启用**服务主体可以使用 Fabric API**
    4. 在 **OneLake 设置**下，启用**用户可以使用 Fabric 外部的应用访问存储在 OneLake 中的数据**
  </Step>

  <Step title="授予工作区访问权限">
    将服务主体添加到您的 Fabric 工作区：

    1. 导航到您的工作区（如果使用“我的工作区”，请创建共享工作区）
    2. 点击**管理访问** > **+ 添加人员或组**
    3. 选择您的服务主体
    4. 将角色设置为**贡献者**
  </Step>

  <Step title="获取 SQL 端点">
    获取您数据源的 SQL 连接字符串：

    1. 在您的工作区中，将鼠标悬停在您的数据仓库/湖仓上
    2. 点击 **...** > **设置**
    3. 复制 **SQL 连接字符串**（这是您的主机名）
  </Step>

  <Step title="连接到 OneSignal">
    在 OneSignal 中，前往 **数据 > 集成**，然后点击 **添加集成**。

    选择 **Microsoft Fabric** 并提供：

    * **主机名：** 步骤 4 中的 SQL 端点
    * **数据库/目录：** 您的湖仓或数据仓库名称
    * **租户 ID：** 步骤 1 中的目录 ID
    * **客户端 ID：** 步骤 1 中的应用程序 ID
    * **客户端密钥：** 步骤 1 中的密钥值
  </Step>
</Steps>

***

### 事件数据映射

将您的 {PLATFORM_0} {DATA_TYPE_0} 映射到 OneSignal 的自定义事件格式：

| OneSignal 字段  | {COLUMN_HEADER_0} | 描述                         | 必需 |
| ------------- | ----------------- | -------------------------- | -- |
| `name`        | `event_name`      | 事件标识符                      | 是  |
| `external_id` | `user_id`         | 用户标识符                      | 是  |
| `timestamp`   | `event_timestamp` | 事件发生时间                     | 否  |
| `properties`  | `event_data`      | {PROPERTIES_DESCRIPTION_0} | 否  |

### 示例事件表模式

```sql theme={null}
-- Example Fabric table structure
CREATE TABLE user_events (
    event_name STRING,
    user_id STRING,
    event_time TIMESTAMP,
    properties JSON,
    session_id STRING,
    device_type STRING
);
```

***

## 处理模式

### SQL 查询模式

编写自定义 SQL 查询以在同步之前转换您的 Fabric 数据：

```sql theme={null}
SELECT
    event_name,
    user_id,
    event_time,
    TO_JSON(STRUCT(
        session_id,
        device_type,
        product_id
    )) as properties
FROM user_events
WHERE event_time >= CURRENT_DATE - INTERVAL 7 DAYS
```

### 表模式

直接从您的 Fabric 工作区同步整个表或视图。OneSignal 将自动将列映射到事件字段。

***

## 限制

* 需要 Fabric 容量（试用版不可用）
* SQL 端点必须可供外部服务访问
* 大型结果集可能影响同步性能

***

## 常见问题

### 如何优化查询性能？

在您的 Fabric 表中使用分区和索引。考虑为经常访问的事件数据创建物化视图。

### 我可以从湖仓和数据仓库同步吗？

是的，OneSignal 支持任何公开 SQL 端点的 Fabric 资源，包括湖仓、数据仓库和 SQL 分析端点。

***
