小编use*_*807的帖子

从spark.sql.Row获取第一个值

我有以下json格式:

{"Request": {"TrancheList": {"Tranche": [{"TrancheId": "500192163","OwnedAmt": "26500000",    "Curr": "USD" }, {  "TrancheId": "500213369", "OwnedAmt": "41000000","Curr": "USD"}]},"FxRatesList": {"FxRatesContract": [{"Currency": "CHF","FxRate": "0.97919983706115"},{"Currency": "AUD", "FxRate": "1.2966804979253"},{ "Currency": "USD","FxRate": "1"},{"Currency": "SEK","FxRate": "8.1561012531034"},{"Currency": "NOK", "FxRate": "8.2454981641398"},{"Currency": "JPY","FxRate": "111.79999785344"},{"Currency": "HKD","FxRate": "7.7568025218916"},{"Currency": "GBP","FxRate": "0.69425159677867"}, {"Currency": "EUR","FxRate": "0.88991723769689"},{"Currency": "DKK", "FxRate": "6.629598372301"}]},"isExcludeDeals": "true","baseCurrency": "USD"}}
Run Code Online (Sandbox Code Playgroud)

从hdfs读取json:

val hdfsRequest = spark.read.json("hdfs://localhost/user/request.json")
val baseCurrency = hdfsRequest.select("Request.baseCurrency").map(_.getString(0)).collect.headOption
var fxRates = hdfsRequest.select("Request.FxRatesList.FxRatesContract")
val fxRatesDF = fxRates.select(explode(fxRates("FxRatesContract"))).toDF("FxRatesContract").select("FxRatesContract.Currency", "FxRatesContract.FxRate").filter($"Currency"===baseCurrency.get)
fxRatesDF.show()
Run Code Online (Sandbox Code Playgroud)

我为fxRatesDF获得的输出是:

fxRatesDF: org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] = [Currency: string, FxRate: string]
+--------+------+
|Currency|FxRate|
+--------+------+
|     USD|     1|
Run Code Online (Sandbox Code Playgroud)

如何获取第一行Fxrate列的值?

apache-spark apache-spark-sql

2
推荐指数
4
解决办法
3万
查看次数

SQL SERVER中的ESCAPE SEQUENCE

我必须在我的表上执行where by子句以在我的表中找到确切的字符串匹配,它在以下场景中工作正常

declare @issuerName varchar(max)
set @issuerName = 'WIDEOPENWEST FINANCE, LLC'

select * 
from company 
where ParentName = @issuerName
Run Code Online (Sandbox Code Playgroud)

但对以下查询失败

declare @issuerName varchar(max)
set @issuerName = 'TOYS 'R' US, INC'

select * 
from company 
where ParentName = @issuerName
Run Code Online (Sandbox Code Playgroud)

因为单引号.

有人能让我知道解决它的最佳方法是什么,因为单引号可以出现在字符串中的任何位置?我尝试在这个变量周围添加单引号,但它不起作用.

set @issuerName = ''TOYS 'R' US, INC''
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

标签 统计

apache-spark ×1

apache-spark-sql ×1

sql ×1

sql-server ×1