DSPL 实战宝典

本文档包含实用的 DSPL 和规范概念“诀窍”的食谱。这些是针对任务开发者指南中介绍的基本语言功能以外的各种任务的分步指导。以下内容假定您了解之前的文档,因此请务必先阅读这些文档,然后再开始学习“烹饪”。

每个方案都以目标开头,后跟要执行的特定步骤列表。其中许多还包括 DSPL 代码段或指向外部示例的链接。如果您对食谱有任何想法或想推荐其他人,请在 DSPL 论坛中发帖。

基本食谱

指定显示名称

目标

将“显示名称”与(维度)概念的每个实例相关联。这些名称将显示在公共数据浏览器界面中,而不是概念实例 ID,这些 ID 通常更短且更难让用户理解。

步数

  1. 将您的概念延伸到 entity:entity.
  2. name 列添加到关联的概念定义表中。
  3. 使用每个实例的名称填充后面的属性。

备注

  • 您无需在概念元数据中明确定义 name 属性;当您扩展 entity:entity 时,系统会自动包含此定义。
  • 您还可以添加 descriptioninfo_url 列,分别提供实例级说明和网址。

创建概念层次结构

目标

创建(维度)概念层次结构。它们将以树状的形式显示在公共数据浏览器界面中,以便用户了解分组并在它们之间导航。

步数

  1. 定义一个“父级”概念(例如,region)。
  2. 定义一个“子级”概念(例如,subregion)。
  3. 在子级中添加引用父级的属性并包含 isParent 属性:
    <property concept="..." isParent="true"/>
    
    ,其中的点会替换为父级 ID。
  4. 在子级的定义表中,添加引用该父级的列。
  5. 对于每个子实例,在其中填充父概念的有效实例。

备注

  • 如需查看示例,请参阅教程数据集中的 country / state 关系。
  • 从子级引用的每个父级 ID 都必须位于父级的定义表中。否则,导入工具将生成错误。
  • 父级和子级可以采用相同的概念(即自引用层次结构)。有关示例,请参阅美国零售数据集中的 business 概念。

对概念实例进行分类

目标

为概念实例创建类别,这些实例将在公共数据资源管理器颜色选择器中显示为选项。

步数

  1. 定义“类别”概念(例如,income_level)。
  2. 定义一个“子级”概念(例如,country)。
  3. 在子项中添加一个引用类别概念的属性,并包含一个 name 元素:
    <property concept="..."/>
      <info>
        <name><value>"..."</value></name>
      </info>
    </property>
    
    ,其中第一组点会替换为类别概念 ID,第二组点会替换为媒体资源所需的显示名称(例如,“收入水平”)。
  4. 在子级的定义表中,添加引用类别概念的列。
  5. 对于每个子实例,请在其中填充有效的类别概念实例。

备注

  • 一个概念可以有多个充当类别的属性;在这种情况下,用户会在颜色选择器中看到所有这些属性的选项。
  • 其中一个类别也可以是父级,用于在界面中以分层方式组织实例。如需了解详情,请参阅上一个配方。

指定概念实例的排序顺序

目标

指定概念实例的排序顺序。在列出公开数据浏览器可视化图表页面的左侧导航栏时,系统会使用此顺序。

步数

  1. 使您的概念扩展 entity:entity 或其某个子级(例如,geo:location)。
  2. 为您的概念元数据添加 entity_order 属性。
  3. 将前面的值设为 ALPHATABLE 之一;前者会使实例按其显示名称的顺序列出,而后者会使实例按照概念定义表中的相同顺序排列。

备注

  • ALPHA 是当前默认值,因此如果您想使用此排序方式,可以选择是否执行上述步骤。
  • 如需查看示例,请参阅 entity:entity 文档

时间食谱

季度数据

目标

直观呈现每季度指定的数据。

步数

  1. 将切片数据中的所有季度转换为月份(例如,季度的第一个月)。
  2. 在 Slice XML 中将此维度视为 time:month

每周数据

目标

直观呈现每周指定的数据。

步数

  1. 将切片数据中的所有周转换为日期(例如,一周的第一天)。
  2. 在 Slice XML 中将此维度视为 time:day

食谱

使用 countrystate 规范概念

目标

使用规范的 countrystate 概念,导入所有纬度/经度值等,这样便无需在数据集内定义这些值。

步数

  1. 确保 Slice 数据 CSV 文件中的所有国家/地区和/或美国各州的引用均为来自规范国家/地区定义表的有效 ID。
  2. geo:country 和/或 geo_us:state 添加为相应切片中的维度。
  3. 请确保这些列的列名称与先前概念的名称(不包括导入的数据集名称,例如country),否则,请在切片定义中包含 mapDimension 语句。示例:
    <slice id="...">
      ...
      <dimension concept="geo:country"/>
      ...
      <mapDimension concept="geo:country" toColumn="my_country"/>
    </slice>
    

仅使用规范国家/地区的子集

目标

使用规范地理位置概念的子集,以便只有此子集(而非整个列表,例如全球所有国家/地区)会显示在公开数据浏览器界面中。

步数

  1. 定义一个扩展超集概念的本地概念。示例:
    <concept id="my_country_subset" extends="geo:country">
    ...
    </concept>
    
  2. 在关联的概念定义 CSV 中,请仅添加您要使用的超集概念的 ID。示例:
    my_country_subset
    FR  
    MX
    US
    

备注

  • 子集概念的每个实例必须是超集概念的有效实例;您不能使用新实例“扩展”概念。

定义您自己的地理概念

目标

创建您自己的可探索且可映射的地理概念,就像 Google 定义的规范概念一样。

步数

  1. 创建一个扩展 geo:location 的概念。
  2. 在关联的概念定义表中,添加 namelatitudelongitude 列。
  3. 为您的概念的每个实例填充后一个属性;纬度和经度值为浮点数,惯例为 N 和 E 为正值,W 和 S 为负值。

备注

  • 您无需在概念定义中明确添加 namelatitudelongitude 属性,因为扩展 geo:location 时会自动包含这些属性。
  • 如需查看示例,请参阅教程数据集中的 state 的定义。

指标和单位方案

使用百分比

目标

定义一个指标(是指其他指标所占百分比的概念)。

步数

  1. 使您的概念扩展 quantity:ratio
  2. is_percentage 属性设置为 true
    <attribute id="is_percentage">
      <value>true</value>
    </attribute>
    
  3. (可选)根据此概念占多少百分比来设置 percentage_of 属性。示例:
    <attribute id="percentage_of">
      <value>labor force</value>
    </attribute>
    

已使用 currency 个单位

目标

定义一个带有货币单位的(公制)概念(例如,美元)。

步数

  1. 使指标扩展 quantity:quantity 或其其中一个子项,例如 quantity:amount
  2. 添加一个引用 unit:currencyunit 属性,并将其值设为关联的货币定义表中的 ID。示例:
    <concept id="...">
      <attribute concept="unit:currency">
        <value>EUR</value>
      </attribute>
    </concept>
    

创建自定义单元

目标

为一个或多个指标创建自定义单位。

步数

  1. 创建一个扩展 unit:unit 的概念。
  2. unit_textsymbol 列添加到关联的定义表中。(可选)如果您想要调整符号位置,也可以添加 symbol_position 列。
  3. 填写单元的每个实例的后一属性的值。“地区”单位的 CSV 示例:
    my_unit,unit_text,symbol,symbol_position
    SQKM,square kilometers,km²,END
    SQML,square miles,miles²,END
    
  4. 如需在(指标)概念中使用新创建的单位,请确保后者扩展 quantity:quantity 或其某个子级。然后,添加一个引用您的单元概念的属性。示例:
    <concept id="..." extends="quantity:amount">
      ...
      <attribute concept="my_unit">
        <value>SQKM</value>
      </attribute>
      ...
    </concept>
    

备注

  • 如果您的单元概念只有一个实例,则可以从其定义表中省略 ID 列,并在使用它的指标中省略 value 标记。
  • 如需查看完整示例,请参阅规范货币概念的定义。