小编Mat*_*ham的帖子

PL/SQL或替代方案的数值优化

我们需要做一些计算繁重的工作来连接Oracle数据库.到目前为止,我们已经在PL/SQL中进行了数值计算,并且很大程度上缺乏性能.

现在我们正在实施一个多级库存模型(https://www.researchgate.net/publication/222409130_Evaluation_of_time-varying_availability_in_multi-echelon_spare_parts_systems_with_passivation)由于问题的严重性,我更关注性能.

我用三种语言实现了部分算法:Fortran(90-2008符合gfortran),Excel中的VBA和PL/SQL,并围绕它进行了一百万次调用测试循环.即使使用binary_double数据类型和本机编译PLSQL_CODE_TYPE=NATIVE(两者都会导致改进),下面的测试代码仍然需要37秒才能运行(Oracle XE 11.2).相比之下,VBA在同一硬件上占用16s和Fortran 1.6s.

虽然要求性能接近Fortran数字可能太过分了(虽然这显然是非常需要的)但我很惊讶即使是不起眼的VBA也会执行PL/SQL.

所以我的问题有两个部分:

  1. 还有什么我可以尝试在Oracle方面进一步提高性能吗?
  2. 如果我们考虑摆脱PL/SQL,我们应该考虑哪些替代方案来连接Oracle数据库?虽然接近Fortran速度的性能提升将使我们考虑在应用程序的交互式部分中引入一些繁重的工作,但是繁重的工作将以类似批处理的方式被称为相对较少.我首选的数值工作语言仍然是Fortran,因为它易于实现带有屏蔽的多维数组.

此外,虽然我不是直接批评我的源代码本身,但如果有人能发现任何我可以合并的明显优化,我将不胜感激.

该函数timeebo是测试函数,我select timeebo from dual;在SQL Developer中使用一个简单的函数调用它.

create or replace FUNCTION gammln(
    x IN binary_double)
  RETURN binary_double
IS
  --Lanczos' approximation to the Log Gamma function
  gammln binary_double;
  ser binary_double;
  tmp binary_double;
BEGIN
  tmp := x + 5.5;
  tmp :=(x + 0.5) * Ln(tmp) - tmp;
  ser := 1.000000000190015;
  ser := ser + 76.18009172947146 /(x + 1.0) ;
  ser := …
Run Code Online (Sandbox Code Playgroud)

oracle optimization performance numerical plsql

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

将父子数据转换为基于Oracle级别的OLAP层次结构

我们需要在Oracle OLAP 10g维度中表示一些组织数据,最好使用Warehouse Builder填充.

组织层次结构被列为父子对,并且是不规则的(不平衡的)和跳过级的(非覆盖的).这将适用于基于价值的层次结构,但我们的客户宁愿使用ROLAP而不是MOLAP,即避免使用分析工作空间,它排除了使用基于值的层次结构.

是否有一种直接的方法来使用父子对数据填充基于级别的层次结构,如果是这样,如何才能完成?

指向教程的指针将受到欢迎,特别是如果他们使用Warehouse Builder.

oracle olap parent-child hierarchy

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

PyMC3 traceplot不显示

我试图通过Python工作从Osvaldo Martin的贝叶斯分析中获取PyMC3示例.在Windows 10上,使用matplotlib的以下代码工作正常(即显示图表):

import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats


def posterior_grid(grid_points=100, heads=6, tosses=9):
    """
    A grid implementation for the coin-flip problem
    """
    grid = np.linspace(0, 1, grid_points)
    prior = 0.5 - abs(grid - 0.5)
    likelihood = stats.binom.pmf(heads, tosses, grid)
    unstd_posterior = likelihood * prior
    posterior = unstd_posterior / unstd_posterior.sum()
    return grid, posterior


if __name__ == "__main__":
    points = 100
    h, n = 1, 4
    grid, posterior = posterior_grid(points, h, n) …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pymc3

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

使用ADODB Connection打开存储在SharePoint上的Excel文件作为数据源

我正在尝试使用以下VBA代码段打开Excel文件作为数据源:

Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
With cn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=" & path & "\" & VFile & ";" & _
        "Extended Properties=""Excel 8.0; HDR=No; IMEX=1;"""
    .Open
End With
Run Code Online (Sandbox Code Playgroud)

path变量属于类型时,这可以按预期工作C:\Folder.但是,如果我想在与当前文件相同的文件夹中引用excel文件,并使用

path = ThisWorkbook.path
Run Code Online (Sandbox Code Playgroud)

当前工作簿位于SharePoint上存储的文件夹中,path然后将包含表单的某些内容

https://sp.foobar.com/folder

尝试使用此路径进行连接会导致Method 'Open' failed错误.将路径黑客攻入WebDAV路径会告诉我该文件已锁定或我无权读取该文件.

有人可以帮忙吗?

当我手动设置pathDrive:\Folder表单时,一切都很好,但ThisWorkbook.path如果文件存储在SharePoint上,我无法使用或类似地自动生成此路径,并且我希望解决方案在任何地方工作的意义上都是"可移植的"在驱动器上,只要所有相关文件都在同一个文件夹中.

excel sharepoint adodb

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

如何在Power Query中引用包含斜杠的字段名称

在Excel 2016 Get&Transform(“高级查询”)中,具有包含斜杠字符的字段(列)名称似乎完全有效。但是,当我尝试引用本专栏文章时,我找不到任何方法可以使斜杠转义以使引用工作正常。我怎样才能做到这一点?

具体来说,接受以下代码:

Table.AddColumn(#"Capitalize", "ABC Table", each Table.FromColumns({Text.Split([ABC], ",")}))
Run Code Online (Sandbox Code Playgroud)

...但是以下不是:

Table.AddColumn(#"Capitalize", "ABC Table", each Table.FromColumns({Text.Split([ABC / DEF], ",")}))
Run Code Online (Sandbox Code Playgroud)

...大概是因为中的斜线[ABC / DEF]

我怎样才能逃脱这个斜线?

powerquery

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