如何在PowerApps中查找应用程序的数据结构

时间:2018-08-14 18:45:51

标签: sql sqldatatypes powerapps datafield

我想创建一个SQL连接并将数据从应用程序(“呼出”模板)导入SQL数据库。我创建了一个SQL连接并尝试将数据导入其中,但出现此错误。

  

CreatedOnDateTime:指定的列是由服务器生成的,无法指定

我确实创建了CreatedOnDateTime列,但我猜想它的数据类型不相同或其他。

我在哪里可以查看通过SQL连接将哪些字段和数据类型从PowerApps导入到PowerApps中的SQL表?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

总体而言,在PowerApps中没有简单的方法可以找到数据源的结构(请为此在PowerApps Ideas board中创建一个新的功能请求)。有一种复杂的查找方法,我将在这里进行介绍。

但是对于您的特定问题,这是一个SQL表的架构,它将与PowerApps中数据源的架构相匹配:

CREATE TABLE PowerAppsTest.StackOverflow51847975 (
    PrimaryID BIGINT PRIMARY KEY,
    [Id] NVARCHAR(MAX),
    [Message] NVARCHAR(MAX),
    CreatedOnDateTime NVARCHAR(MAX),
    CreatorEmail NVARCHAR(MAX),
    CreatorName NVARCHAR(MAX),
    RecipientEmail NVARCHAR(MAX),
    RecipientName NVARCHAR(MAX),
    ShoutoutType NVARCHAR(MAX),
    [Image] IMAGE
)

现在是一般情况。您已被警告说这令人费解,所以后果自负:)

首先,将应用本地保存到您的计算机中: Save to local computer

该应用程序将以.msapp扩展名保存,但基本上是一个.zip文件。如果您使用的是Windows,则可以将其重命名以将扩展名更改为.zip,然后就可以解压缩并提取描述该应用程序的文件。

其中一个文件Entities.json除其他外,包含应用程序中使用的所有数据源的架构定义。该文件是一个巨大的JSON文件,并且删除了所有空格,因此您可能想使用一些在线工具来格式化(或整理)JSON以使其更容易阅读。完成此操作后,您可以在自己喜欢的文本编辑器中打开文件(任何比记事本更好的文件都应该能够处理它)。

在打开文件的情况下,在JSON根目录中搜索属性为“名称”且值等于数据源名称的条目。例如,在喊叫应用程序的情况下,数据源称为“喊叫”,因此搜索

"Name": "Shoutout"

如果在打开JSON文件之前没有进行漂亮的打印,则必须删除该空间。该对象应该是描述数据源的对象,并且具有一个名为DataEntityMetadataJson的属性,该属性具有数据源模式,格式为JSON字符串。再次在“喊叫”示例中,这是值:

"{\"name\":\"Shoutout\",\"title\":\"Shoutout\",\"x-ms-permission\":\"read-write\",\"schema\":{\"type\":\"array\",\"items\":{...

请注意,它的打印质量也不佳。您首先需要解码该字符串,然后再次对其进行漂亮的打印,最后您将得到如下结果:

{
  "name": "Shoutout",
  "title": "Shoutout",
  "x-ms-permission": "read-write",
  "schema": {
    "type": "array",
    "items": {
      "type": "object",
      "properties": {
        "PrimaryID": {
          "type": "number",
          "format": "double",
          ...
        },
        "Message": {
          "type": "string",
          ...
        },
        "Image": {
          "type": "string",
          "format": "uri",
          "x-ms-media-kind": "image",
          ...
        },
        "Id": {
          "type": "string",
          ...
        },
        "CreatedOnDateTime": {
          "type": "string",
          ...
        },
    ...

这是数据源的架构。从那开始,我在SQL中重新创建了架构,从应用程序中删除了对Shoutout数据源的引用(这导致了许多错误),然后添加了对我的SQL表的引用,由于它的名称不同,所以去寻找所有应用中有错误可以解决。

希望这会有所帮助!