

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Amazon S3 文件创建数据集
Amazon S3 文件

要使用来自 Amazon S3 的一个或多个文本文件（.csv、.tsv、.clf 或.elf）创建数据集，请为 Quick Sight 创建清单。Quick Sight 使用此清单来识别您要使用的文件以及导入这些文件所需的上传设置。使用 Amazon S3 创建数据集时，文件数据会自动导入 [SPICE](spice.md) 中。

您必须授予 Quick Sight 访问您想要从中读取文件的任何 Amazon S3 存储桶的权限。有关授予 Quick Sight Amazon 资源访问权限的信息，请参阅[配置 Amazon Quick Sight 对 Amazon 数据源的访问权限](access-to-aws-resources.md)。

**Topics**
+ [

# 支持的 Amazon S3 清单文件格式
](supported-manifest-file-format.md)
+ [

# 创建 Amazon S3 数据集
](create-a-data-set-s3-procedure.md)
+ [

# 使用其他 Amazon 账户中的 S3 文件的数据集
](using-s3-files-in-another-aws-account.md)

# 支持的 Amazon S3 清单文件格式


您可以使用 JSON 清单文件在 Amazon S3 中指定要导入到 Quick Sight 中的文件。这些 JSON 清单文件可以使用下述快速浏览格式，也可以使用亚马逊 Redshift 数据库开发者指南中[使用清单指定数据文件](https://docs.amazonaws.cn/redshift/latest/dg/loading-data-files-using-manifest.html)中描述的 *Amazon Redshift* 格式。您无需使用 Amazon Redshift 就能使用 Amazon Redshift 清单文件格式。

例如`my_manifest.json`，如果您使用 Quick Sight 清单文件，则其扩展名必须为.json。如果使用 Amazon Redshift 清单文件，则可以使用任何扩展名。

如果你使用亚马逊 Redshift 清单文件，Quick Sight 会像亚马逊 Redshift 一样处理可选`mandatory`选项。如果找不到关联的文件，Quick Sight 将结束导入过程并返回错误。

您选择导入的文件必须是分隔的文本（例如 .csv 或 .tsv）、日志 (.clf)、扩展日志 (.elf) 格式或 JSON (.json)。一个清单文件中标识的所有文件都必须使用相同的文件格式。另外，所有文件必须具有相同数量和类型的列。Quick Sight 支持 UTF-8 文件编码，但不支持带字节顺序标记 (BOM) 的 UTF-8。如果您要导入 JSON 文件，则对于 `globalUploadSettings`，请指定 `format`，而不是 `delimiter`、`textqualifier` 和 `containsHeader`。

确保您指定的任何文件都位于您已授予 Quick Sight 访问权限的 Amazon S3 存储桶中。有关授予 Quick Sight Amazon 资源访问权限的信息，请参阅[配置 Amazon Quick Sight 对 Amazon 数据源的访问权限](access-to-aws-resources.md)。

## Quick Sight 的清单文件格式


Quick Sight 清单文件使用以下 JSON 格式。

```
{
    "fileLocations": [
        {
            "URIs": [
                "uri1",
                "uri2",
                "uri3"
            ]
        },
        {
            "URIPrefixes": [
                "prefix1",
                "prefix2",
                "prefix3"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "JSON",
        "delimiter": ",",
        "textqualifier": "'",
        "containsHeader": "true"
    }
}
```

使用 `fileLocations` 元素中的字段可指定要导入的文件，使用 `globalUploadSettings` 元素中的字段可指定这些文件的导入设置，如字段分隔符。

清单文件元素如下所述：
+ **fileLocations** – 可以使用该元素指定要导入的文件。您可以使用 `URIs` 和/或 `URIPrefixes` 数组来执行该操作。您必须在其中任意一项中至少指定一个值。
  + **URIs**— 使用此数组列 URIs出要导入的特定文件。

    Quick Sight 可以访问任何文件中的 Amazon S3 文件 Amazon Web Services 区域。但是，如果与 Quick 账户使用的 Amazon 区域不同，则必须使用标识 Amazon S3 存储桶区域的 URI 格式。

    URIs 支持以下格式。  
****    
[\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/quick/latest/userguide/supported-manifest-file-format.html)
  + **URIPrefixes**— 使用此数组列出 S3 存储桶和文件夹的 URI 前缀。将导入指定的存储桶或文件夹中的所有文件。Quick Sight 以递归方式从子文件夹中检索文件。

    Quick Sight 可以访问任何 Amazon Web Services 区域存储桶中的 Amazon S3 存储桶或文件夹。 Amazon Web Services 区域 如果 S3 存储桶与 Quick 账户使用的格式不同，请务必使用标识 S3 存储桶的 URI 前缀格式。

    支持以下格式的 URI 前缀。  
****    
[\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/quick/latest/userguide/supported-manifest-file-format.html)
+ **globalUploadSettings**—（可选）使用此元素指定 Amazon S3 文件的导入设置，例如字段分隔符。如果未指定此元素，Quick Sight 将使用本节中字段的默认值。
**重要**  
对于日志 (.clf) 和扩展日志 (.elf) 文件，只有这部分中的 **format** 字段适用，因此，您可以跳过其他字段。如果选择包括它们，其值将被忽略。
  + **format** –（可选）指定要导入的文件的格式。有效的格式为 **CSV**、**TSV**、**CLF**、**ELF** 和 **JSON**。默认值为 **CSV**。
  + **delimiter** –（可选）指定文件字段分隔符。必须映射到 `format` 字段中指定的文件类型。有效的格式为用于 .csv 文件的逗号 (**,**) 和用于 .tsv 文件的制表符 (**\$1t**)。默认值为逗号 (**,**)。
  + **textqualifier** –（可选）指定文件文本限定符。有效格式为单引号 (**'**)、双引号 (**\$1"**)。开头的反斜线是 JSON 中的双引号必须使用的转义字符。默认值为双引号 (**\$1"**)。如果您的文本不需要文本限定符，则不要包含此属性。
  + **containsHeader** –（可选）指定文件是否具有标题行。有效的格式为 **true** 或 **false**。默认值为 **true**。

### Quick Sight 的清单文件示例


以下是已完成的 Quick Sight 清单文件的一些示例。

以下示例显示一个清单文件，它指定两个要导入的特定 .csv 文件。这些文件对文本限定符使用双引号。默认值是可接受的，因此，跳过 `format`、`delimiter` 和 `containsHeader` 字段。

```
{
    "fileLocations": [
        {
            "URIs": [
                "https://yourBucket.s3.amazonaws.com/data-file.csv",
                "https://yourBucket.s3.amazonaws.com/data-file-2.csv"
            ]
        }
    ],
    "globalUploadSettings": {
        "textqualifier": "\""
    }
}
```

以下示例显示一个清单文件，它指定一个要导入的特定 .tsv 文件。该文件还包含其他 Amazon 区域中的存储桶，其中包含要导入的其他 .tsv 文件。默认值是可接受的，因此跳过 `textqualifier` 和 `containsHeader` 字段。

```
{
    "fileLocations": [
        {
            "URIs": [
                "https://s3.amazonaws.com/amzn-s3-demo-bucket/data.tsv"
            ]
        },
        {
            "URIPrefixes": [
                "https://s3-us-east-1.amazonaws.com/amzn-s3-demo-bucket/"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "TSV",
        "delimiter": "\t"
    }
}
```

以下示例指定两个包含要导入的 .clf 文件的存储桶。一个与 Quick 账户 Amazon Web Services 区域 相同，另一个在不同账户中 Amazon Web Services 区域。`delimiter`、`textqualifier` 和 `containsHeader` 字段不适用于日志文件，因此跳过这些字段。

```
{
    "fileLocations": [
        {
            "URIPrefixes": [
                "https://amzn-s3-demo-bucket1.your-s3-url.com",
                "s3://amzn-s3-demo-bucket2/"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "CLF"
    }
}
```

以下示例使用 Amazon Redshift 格式指定要导入的 .csv 文件。

```
{
    "entries": [
        {
            "url": "https://amzn-s3-demo-bucket.your-s3-url.com/myalias-test/file-to-import.csv",
            "mandatory": true
        }
    ]
}
```

以下示例使用 Amazon Redshift 格式指定两个要导入的 JSON 文件。

```
{
    "fileLocations": [
        {
            "URIs": [
                "https://yourBucket.s3.amazonaws.com/data-file.json",
                "https://yourBucket.s3.amazonaws.com/data-file-2.json"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "JSON"
    }
}
```

# 创建 Amazon S3 数据集


**创建 Amazon S3 数据集**

1. 选中 [数据来源限额](data-source-limits.md) 以确保目标文件设置未超出数据来源限制。

1. 使用 [支持的 Amazon S3 清单文件格式](supported-manifest-file-format.md)中指定的格式之一创建清单文件，以确定要导入的文本文件。

1. 将清单文件保存到本地目录中，或者将其上传到 Amazon S3 中。

1. 在快速入门页面上，选择**数据**。

1. 在**数据**页面上，选择**创建**，然后选择**新数据集**。

1. 选择 Amazon S3 图标，然后选择**下一步**。

1. 对于**数据来源名称**，输入数据来源的描述。这应该是帮助将该数据来源与其他数据来源区分开来的名称。

1. 对于 **Upload a manifest file**，请执行以下操作之一：
   + 要使用本地清单文件，请选择 **Upload**，然后选择 **Upload a JSON manifest file**。对于 **Open**，请选择一个文件，然后选择 **Open**。
   + 要使用 Amazon S3 中的清单文件，请选择 **URL**，然后输入该清单文件的 URL。要在 Amazon S3 控制台中查找预先存在的清单文件的 URL，请导航到并选择相应的文件。随即显示属性面板，包括链接 URL。您可以复制 URL 并将其粘贴到 Quick Sight 中。

1. 选择**连接**。

1. 要确保已完成连接，请选择 **Edit/Preview data**。否则，选择 **Visualize** 以原样使用数据创建分析。

   如果选择**编辑/预览数据**，您可以在准备数据过程中指定数据集名称。否则，数据集名称与将与清单文件名称匹配。

   要了解数据准备的更多信息，请参阅[使用 Amazon Quick Sight 准备数据](preparing-data.md)。

## 基于多个 Amazon S3 文件创建数据集


您可以使用以下几种方法之一在 Quick Sight 中合并或合并来自 Amazon S3 存储桶的文件：
+ **使用清单组合文件** – 在这种情况下，这些文件必须具有相同数量的字段（列）。文件的相同位置中的字段必须具有匹配的数据类型。例如，每个文件中的第一个字段必须具有相同的数据类型。第二个字段、第三个字段以及后续字段也是如此。Quick Sight 从第一个文件中获取字段名称。

  必须在清单中明确列出这些文件。但是，它们不必位于同一个 Amazon S3 存储桶内。

  此外，这些文件还必须遵循[支持的 Amazon S3 清单文件格式](supported-manifest-file-format.md)中所述的规则。

  有关使用清单组合文件的更多详细信息，请参阅[使用 Amazon S3 文件创建数据集](create-a-data-set-s3.md)。
+ **不使用清单合并文件** – 要将多个文件合并为一个文件而不必在清单中单独列出这些文件，您可以使用 Athena。在使用这种方法时，您只需查询您的文本文件，就像它们位于数据库的表中一样。有关更多信息，请参阅大数据博客中的 [Analyzing data in Amazon S3 using Athena](https://www.amazonaws.cn/blogs/big-data/analyzing-data-in-s3-using-amazon-athena/)。
+ **在导入之前使用脚本附加文件** – 在上传之前，您可以使用用于组合文件的脚本。

# 使用其他 Amazon 账户中的 S3 文件的数据集
使用其他账户的 S3 文件

使用本节学习如何设置安全性，以便您可以使用 Quick Sight 访问其他 Amazon 账户中的 Amazon S3 文件。

为了让您能够访问其他账户中的文件，该账户的所有者必须先设置 Amazon S3，以便为您授予读取该文件的权限。然后，在 Quick Sight 中，您必须设置对与您共享的存储桶的访问权限。在这两个步骤完成后，您可以使用清单来创建数据集。

**注意**  
 要访问与公众共享的文件，您不需要设置任何特殊安全性。但是，您仍然需要清单文件。

**Topics**
+ [

## 将 Amazon S3 设置为允许从其他 Quick 账户进行访问
](#setup-S3-to-allow-access-from-a-different-quicksight-account)
+ [

## 设置 Quick Sight 以访问其他 Amazon 账户中的 Amazon S3 文件
](#setup-quicksight-to-access-S3-in-a-different-account)

## 将 Amazon S3 设置为允许从其他 Quick 账户进行访问
设置 Amazon S3 以允许另一个账户

使用本节来学习如何在 Amazon S3 文件中设置权限，这样 Quick Sight 就可以通过其他 Amazon 账户访问这些文件。

有关从您的 Quick Sight 账户访问其他账户的 Amazon S3 文件的信息，请参阅[设置 Quick Sight 以访问其他 Amazon 账户中的 Amazon S3 文件](#setup-quicksight-to-access-S3-in-a-different-account)。有关 S3 权限的更多信息，请参阅[管理对 Amazon S3 资源的访问权限](https://docs.amazonaws.cn/AmazonS3/latest/dev/s3-access-control.html)和[如何在对象上设置权限？](https://docs.amazonaws.cn/AmazonS3/latest/user-guide/set-object-permissions.html)

您可以使用以下过程，从 S3 控制台设置此访问权限。或者，您可以使用 Amazon CLI 或通过编写脚本来授予权限。如果您有大量要共享的文件，则可以改为在 `s3:GetObject` 操作上创建 S3 存储桶策略。要使用存储桶策略，请将其添加到存储桶权限，而不是文件权限。有关存储桶策略的信息，请参阅《Amazon S3 开发人员指南》[https://docs.amazonaws.cn/AmazonS3/latest/dev/example-bucket-policies.html](https://docs.amazonaws.cn/AmazonS3/latest/dev/example-bucket-policies.html)中的*桶策略示例。*

**从 S3 控制台设置来自其他 Quick 账户的访问权限**

1. 获取您要与之共享的 Amazon 账户电子邮件的电子邮件地址。或者，您可以获取并使用规范用户 ID。有关规范用户的更多信息 IDs，请参阅*Amazon 一般*参考中的[Amazon 账户标识符](https://docs.amazonaws.cn/general/latest/gr/acct-identifiers.html)。

1. 登录 Amazon Web Services 管理控制台 并打开 Amazon S3 控制台，网址为[https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1. 找到您要与 Quick Sight 共享的 Amazon S3 存储桶。选择**权限**。

1. 选择 “**添加帐户**”，然后输入要与之共享的 Amazon 帐户的电子邮件地址或粘贴规范用户 ID。该电子邮件地址应该是 Amazon 账户的主要电子邮件地址。

1. 对于**读取存储桶权限**和**列出对象**，两者都选择**是**。

   选择 **Save** 以确认。

1. 找到要共享的文件，然后打开该文件的权限设置。

1. 输入您要与之共享的 Amazon 账户的电子邮件地址或规范用户 ID。该电子邮件地址应该是该 Amazon 账户的主电子邮件地址。

1. 为 Quick Sight 需要访问的每个文件启用**读取对象**权限。

1. 通知 Quick 用户这些文件现已可供使用。

## 设置 Quick Sight 以访问其他 Amazon 账户中的 Amazon S3 文件
设置 Quick Sight 以访问另一个 Amazon S3 账户

使用本节学习如何设置 Quick Sight，这样您就可以在其他 Amazon 账户中访问 Amazon S3 文件。有关允许其他人从其 Quick 账户访问您的 Amazon S3 文件的信息，请参阅[将 Amazon S3 设置为允许从其他 Quick 账户进行访问](#setup-S3-to-allow-access-from-a-different-quicksight-account)。

使用以下步骤从 Quick Sight 访问其他账户的 Amazon S3 文件。其他 Amazon 账户中的用户必须与您共享其 Amazon S3 存储桶中的文件，然后才能使用此过程。

**通过 Quick Sight 访问其他账户的 Amazon S3 文件**

1. 验证其他 Amazon 账户中的一个或多个用户是否向您的账户授予了对相关 S3 存储桶的读写权限。

1. 选择您的个人资料图标，然后选择 “**管理 Quick Sight**”。

1. 选择 **Security & permissions (安全性和权限)**。

1. 在 **Quick Sight 访问 Amazon 服务**下，选择**管理**。

1. 选择**选择 S3 存储桶**。

1. 在**选择 Amazon S3 存储桶**屏幕上，选择**可在 Amazon中访问的 S3 存储桶**选项卡。

   默认选项卡名为**关联到 Quick Sight 账户的 S3 存储桶**。它显示了您的 Quick 账户有权访问的所有存储桶。

1. 请执行以下操作之一：
   + 要添加您有权使用的所有存储桶，请选择**从其他 ** 账户选择可访问的存储桶 Amazon 。
   + 如果您要添加一个或多个 Amazon S3 存储桶，请输入其名称。它必须精确匹配该 Amazon S3 存储桶的唯一名称。

     如果您没有适当的权限，则会看到错误消息“We can't connect to this S3 bucket. 确保您指定的任何 S3 存储桶都与用于创建此 Quick Amazon 账户的账户相关联。” 如果您既没有帐户权限也没有 Quick Sight 权限，则会显示此错误消息。
**注意**  
要使用亚马逊 Athena，Quick Sight 需要访问雅典娜使用的亚马逊 S3 存储桶。  
您可以将它们逐一添加到此处，也可以使用 “**从其他 Amazon 账户中选择可访问的存储桶**” 选项。

1. 选择 **Select buckets** 以确认您的选择。

1. 根据 Amazon S3 创建新的数据集，并上传您的清单文件。有关 Amazon S3 数据集的更多信息，请参阅 [使用 Amazon S3 文件创建数据集](create-a-data-set-s3.md)。