我在让这个表创建查询工作时遇到了一些麻烦,我想知道我是否遇到了 redshift 的限制。
这就是我想要做的:我有需要在模式之间移动的数据,我需要为数据动态创建目标表,但前提是它们不存在。
以下是我知道有效的查询:
create table if not exists temp_table (id bigint);
Run Code Online (Sandbox Code Playgroud)
如果它不存在,这将创建一个表,并且它工作得很好。
create table temp_2 as select * from temp_table where 1=2;
Run Code Online (Sandbox Code Playgroud)
这样就创建了一个与前一个结构相同的空表。这也很好用。
但是,当我执行此查询时:
create table if not exists temp_2 as select * from temp_table where 1=2;
Run Code Online (Sandbox Code Playgroud)
Redshift 窒息并说 as 附近有错误(为了记录,我确实尝试删除“as”,然后它说 select 附近有错误)
我在 redshift 文档中找不到任何内容,此时我只是在猜测如何解决这个问题。这是我在红移中无法做到的吗?
我应该提一下,我绝对可以分离出有选择地创建表并用数据填充它的查询,我可能最终会这样做。我主要只是好奇是否有人可以告诉我该查询有什么问题。
编辑:
我不相信这是重复的。链接到的帖子提供了许多依赖于用户定义函数的解决方案……redshift 不支持 UDF。他们最近确实实现了一个基于 python 的 UDF 系统,但我的理解是它处于测试阶段,我们不知道如何实现它。
不过还是谢谢你看。
我正在编写一个脚本来为在线作者识别创建指标.我在文献中遇到的一件事就是计算每个字母的频率(多少个字母,多少个字母等),与大小写无关.因为我不想为每个字母创建一个单独的语句,所以我试图循环这个东西,但我无法弄明白.我能想到的最好的是将ASCII字母代码转换为十六进制,然后......希望奇迹发生.
到目前为止,我已经有了
element = id.toLowerCase();
var hex = 0;
for (k=97; k<122; k++){
hex = k.toString(16); //gets me to hex
letter = element.replace(/[^\hex]/g, "")//remove everything but the current letter I'm looking for
return letter.length // the length of the resulting string is how many times the ltter came up
}
Run Code Online (Sandbox Code Playgroud)
但是当然,当我这样做时,它会将十六进制解释为字母十六进制,而不是我想要的字母的十六进制代码.
我正在使用FFTW来分析高程数据,但我开始只是通过查看一个简单的1D fft来确保我的一切正常.它似乎工作除了归一化(规模)因素,我无法从文档中找出,主要是因为我的数字非常大.例如,当我试图只取一个余弦波的fft时
1 6.12323e-017 -1 -1.83697e-016 1 3.06162e-016 -1 -4.28626e-016 1 5.51091e-016 -1 -2.44991e-015 etc...
Run Code Online (Sandbox Code Playgroud)
我得到了转变
4.33743e-013 1.06036e+267 3.25205e+265 1.05963e+267 6.49675e+265 1.05743e+267 9.72679e+265 1.05379e+267 1.29349e+266 1.04869e+267 1.61138e+266 1.04216e+267 etc...
Run Code Online (Sandbox Code Playgroud)
例如,可笑的巨大数字.
任何帮助,将不胜感激.