所有文档

          百度数据可视化 Sugar

          SQL中行转列

          什么是行转列

          什么是行转列?首先看一个简单明了的例子:

          数据库中存储的数据格式是这样的:

          图片

          但是想展示的数据是这样的:

          图片

          上面的例子就是典型的行转列,我们把 name 字段中的每种取值都转换成了一个列来展示,并且将 val 字段的取值作为了转换后新列的取值。

          当然,如果您对 SQL 语言比较了解,其实通过 SQL 语句就可以实现这样的行列转换,但是这样的 SQL 语句会变得很复杂,很不利于理解,因此Sugar提供了 SQL 模型的行转列功能。

          下面就基于以上的简单例子来说明如何使用Sugar的行转列功能:

          开启行转列

          在 SQL 建模时有个开关可以开启,并且需要填入行转列的名称字段和取值字段,如下图建模时,我们不仅对的date字段做了描述,我们还对行转列之后的新列pv、uv、post做了描述,但并没有对nameval做建模,因为行转列之后就不存在这两个字段了。

          特别需要注意的是:行转列时,SQL语句中select的字段需要谨慎填写,Sugar目前只允许您select三个字段,即除了名称和取值字段以外,只能额外select一个维度字段,大部分情况下都是日期、时间等。

          图片

          绑定行转列模型到图表

          将模型绑定到图表时与和普通的非行转列的模型一样,因为我们已经将数据行转列了,在绑定图表数据时就可以直接使用转换后的各个列了,如下图绑定一个折线图的数据:

          图片

          绑定所有的行转列

          上面一节中,我们逐列将行转换的新列绑定到了表格中进行展示,燃鹅,在一些情况下有可能有哪些行转换的新列我们都不确定(例如:基于上面的例子,某一天我们新增了一个指标叫做replay回帖数,此时我们只能修改 SQL 模型新增这样一列并且将它绑定到表格的列中才能展示,这样做很麻烦,而且如果以后又不断的新增指标怎么办?),因此Sugar允许用户将所有的行转换的列一键绑定到各图表(表格、折线、柱状、饼图等)。

          如下图我们开启了绑定所有行转列,在表格的列配置中我们只绑定了一个日期列,展示时,所有的行转换的列都自动加上了包括我们并没有在 SQL 模型中申明的replay(因为我们并没有在 SQL 模型中申明,所以表头就直接展示的 replay,而不像其他的申明过的列):

          图片

          行转列的累计、均值

          在使用行转列功能时,Sugar默认在数据中自动添加了两个新列: sugar_row2col_totalsugar_row2col_avg,分别计算了行转换后的各个新列的累加值均值

          在上面的例子中,sugar_row2col_total 表示 pv、uv、post这三个行转换后新列的累加值,sugar_row2col_avg 也是同理):

          因此,报表编辑者就可以对这两列进行数据建模,并且同样可以将其绑定到图表上进行展示。

          对这两列进行建模:

          图片

          行转列配置字段名称映射

          在使用行转列的过程中,可能会出现这样的使用场景:行转列得到的列名只是一个可读性很差的编号,虽然我们可以在绑定数据或建模的时候给它配置展示名称,但如果行转列的数据很多,岂不累死宝宝们了。所以当在图表中配置了「绑定所有的行转列」功能时,Sugar支持利用「数据值映射」自动将列名映射为可读性较好的值。

          比如下面这个例子,type 字段是行转列后即将作为名称的字段,数据库里保存的是拼音:

          图片

          直接进行行转列结果如下,可以看到这个拼音虽然可以给用户展示,但用户看到的结果并不直观:

          图片

          此时可以我们配置这样一个数据值映射:

          图片

          并在 SQL 模型中进行配置:

          图片

          就可以完成列名的映射了:

          图片

          当然,如果有几个特殊的列想在字段名称映射的同时进行特殊的配置,可以在 SQL 模型中单独添加字段并配置显示名称。 下图中对 xiaoshou 这列的展示名称进行了单独配置,还可以注意到图中的右侧红框中,对行转列结果中 xiaoshou 这一列的「取值」也配置了数据值映射:

          图片

          结果如下:

          图片

          上一篇
          数据值映射
          下一篇
          数据缓存