小编Lou*_*_Ds的帖子

d3.js - 使用 .selectAll() 根据属性值选择节点元素

我有一个节点,如:

<div>
  <svg ...>
    <g class="graph">
      <path class="myarea" d="...AAA..." pos="p1">  </path>
    </g>
    <g class="graph">
      <path class="myarea" d="...BBB..." pos="p2">  </path>
    </g>
    <g class="graph">
      <path class="myarea" d="...CCC..." pos="p3">  </path>
    </g>
  /svg>
</div>
Run Code Online (Sandbox Code Playgroud)

我正在尝试选择具有属性的特定节点(例如 where d="...BBB..."pos='p2'

d3.selectAll(".myarea").each(function(d,i) {
   console.log("-> ",  d3.select(this).attr("pos"), d3.select(this).attr("pos") == 'p2' );
  
});
Run Code Online (Sandbox Code Playgroud)

这将产生/返回一个包含所有 3 个条目的数组:

-> p0 假

-> p1 真

-> p2 假

-> [数组(3)]

我有兴趣只选择一个,在这种情况下选择一个,.attr("pos") == 'p2'所以我只想返回一个元素。

我试着map()filter(),但没有成功。

根据属性值选择特定元素的正确方法是什么?

javascript filter node.js d3.js

3
推荐指数
1
解决办法
2322
查看次数

Scala Spark - 计算Dataframe列中特定字符串的出现次数

如何df使用分区的Spark计算列中String的出现次数id

例如,找到a "test""name"中的值df

在SQL中将是:

 SELECT
    SUM(CASE WHEN name = 'test' THEN 1 else 0 END) over window AS cnt_test
  FROM
    mytable
 WINDOW window AS (PARTITION BY id)
Run Code Online (Sandbox Code Playgroud)

我试过用了 map( v => match { case "test" -> 1.. })

和类似的东西:

def getCount(df: DataFrame): DataFrame = {
    val dfCnt = df.agg(
          .withColumn("cnt_test", 
            count(col("name")==lit('test'))
)
Run Code Online (Sandbox Code Playgroud)

这是一项昂贵的操作吗?什么是检查特定字符串出现然后执行操作的最佳方法(sum, max, min, etc)

谢谢

scala aggregate dataframe window-functions apache-spark

2
推荐指数
1
解决办法
4927
查看次数

Scala Spark-Map(String,Int)的DataFrame列上的空地图

我正在加入两个DataFrame,其中有一种类型的列 Map[String, Int]

我希望合并的DF有一个空的映射,[]而不是nullMap类型列上。

val df = dfmerged.
  .select("id"),
          coalesce(col("map_1"), lit(null).cast(MapType(StringType, IntType))).alias("map_1"),
          coalesce(col("map_2"), lit(Map.empty[String, Int])).alias("map_2")
Run Code Online (Sandbox Code Playgroud)

对于map_1列,null将插入a,但是我想使用一个空的map map_2给我一个错误:

java.lang.RuntimeException:不支持的文字类型类scala.collection.immutable.Map $ EmptyMap $ Map()

我也尝试过使用udf类似的功能:

case class myStructMap(x:Map[String, Int])
val emptyMap = udf(() => myStructMap(Map.empty[String, Int]))
Run Code Online (Sandbox Code Playgroud)

也没有用。

当我尝试类似的东西:

.select( coalesce(col("myMapCol"), lit(map())).alias("brand_viewed_count")...

要么

.select(coalesce(col("myMapCol"), lit(map().cast(MapType(LongType, LongType)))).alias("brand_viewed_count")...

我得到错误:

由于数据类型不匹配而无法解析“ map()”:无法将MapType(NullType,NullType,false)强制转换为MapType(LongType,IntType,true);

dictionary scala dataframe apache-spark

2
推荐指数
1
解决办法
1611
查看次数