我使用Apache spark作为ETL工具将表从Oracle提取到Elasticsearch中。
我遇到的问题是,数值列引发识别它们,decimal而Elasticsearch不接受decimal类型。所以我将每个decimal列转换double为Elasticsearch接受的列。
dataFrame = dataFrame.select(
[col(name) if 'decimal' not in colType else col(name).cast('double') for name, colType in dataFrame.dtypes]
)
Run Code Online (Sandbox Code Playgroud)
当前的问题是每个数字列将是一倍 ; 它是否具有十进制值。
我的问题是,有什么方法可以检测到列类型应该转换为整数类型还是双精度类型?
我使用一个函数来检查输入的值是否在我的应用程序中用于特定目的的有效文本。
有效值是一个字符串,其中它不是有效的日期或数字,即true或false。
checkText(str) {
return isNaN(str) && isNaN(Date.parse(str)) && ['true', 'false'].indexOf(str) == -1;
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是我遇到了以下字符串问题:“ New Item 3”。
Date.parse("New Item 3")返回一个数字,但是为什么!?同样,如果将3更改为小于13的任何数字,它将返回数字!
这里的任何人都可以向我解释发生了什么?
我正在尝试下载 word 文档,它正在运行,但我不知道如何设置文件名。每次下载时都有一些唯一的名称。
this.downloadData("downloadVehicleLine").subscribe(
data => {
this.downLoadFile(data);
})
downLoadFile(data: any) {
var blob = new Blob([data], { type: 'application/octet-stream' });
var url = window.URL.createObjectURL(blob);
var pwa = window.open(url, "createdocument.docx");
if (!pwa || pwa.closed || typeof pwa.closed == 'undefined') {
alert('Please disable your Pop-up blocker and try again.');
}
}
Run Code Online (Sandbox Code Playgroud)
它应该下载名为createdocument.docx 的word 文档