小编Neo*_*Neo的帖子

MDX:IIf 尺寸值的条件始终为 false

我试图在列中产生不同的输出,具体取决于维度的值是否[Scenario].[Option]+5我尝试使用该IIf函数实现的值。

WITH MEMBER [XorY] AS
(
    IIf([Scenario].[Option] = +5, 'X', 'Y')
    --IIf([Scenario].[Option].&[+5], 'X', 'Y')
)
SELECT
NON EMPTY
(
    [Scenario].[Option].[Option]
) ON ROWS,
NON EMPTY
(
    [XorY]
) ON COLUMNS
FROM [RePro]
WHERE
(
    [ABC].[ABC].[Val]
) CELL PROPERTIES VALUE
Run Code Online (Sandbox Code Playgroud)

但是,使用上述任一语句IIf始终[XorY]Y的值无关[Scenario].[Option]。看来我所做的比较在语法上是错误的。我该怎么做呢?我注意到如果我在条件[Measures]的维度中使用计算成员,效果会更好IIf,但在我的情况下这是不可能的 - 我必须使用[Scenario].[Option].

感谢您收到的任何帮助:)

sql-server ssas mdx iif ssas-2008

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

如何在中间件(ML.NET)中将模型添加到PredictionEnginePool?

我在 ASP.NET Core 应用程序中使用 ML.NET,并且在 中使用以下代码Startup

var builder = services.AddPredictionEnginePool<Foo, Bar>();

if (File.Exists("model.zip"))
{
    builder.FromFile(String.Empty, "model.zip", true);
}
Run Code Online (Sandbox Code Playgroud)

如果model.zip不存在,我稍后会在中间件中创建它。如何将其添加到PredictionEnginePool注入的内容中?

没有通过 加载模型的选项PredictionEnginePool,并且实例化或注入 aPredictionEnginePoolBuilder不是它所需要的选项IServiceCollection(因此必须在 期间配置Startup.ConfigureServices)。

目前我能看到的唯一选择是,如果启动时文件不存在,则设置一个标志,然后在稍后在中间件中创建model.zipIApplicationLifetime.StopApplication后重新启动服务(使用),但我真的不这样做像这样作为一个选项。

asp.net-core-middleware ml.net

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

在 DATE 列上使用“MERGE INTO”和“SELECT FROM Dual”时出现 ORA-00904“无效标识符”错误

我在 Oracle 数据库上有以下 PL/SQL 存储过程:

PROCEDURE MyProcedure (
    p_id IN NUMBER
  , p_date IN DATE
  , p_num IN NUMBER) 
  AS
  BEGIN
    MERGE INTO MY_TABLE mytable
    USING (SELECT
            p_id,
            p_date,
            p_num
          FROM dual) temp
    ON (mytable.myid = temp.p_id AND mytable.mydate = temp.p_date)
  WHEN MATCHED THEN
    UPDATE SET
      DIFFERENCE = temp.p_num,
  WHEN NOT MATCHED THEN
    INSERT VALUES (
      MY_TABLEIDSEQ.NEXTVAL,
      temp.p_id,
      temp.p_date,
      temp.p_num);
END MyProcedure;
Run Code Online (Sandbox Code Playgroud)

MY_TABLE表定义如下:

CREATE TABLE "MY_DBO"."MY_TABLE" 
   (
     "MYTABLEID" NUMBER(38,0),
     "MYID" NUMBER(38,0),
     "MYDATE" DATE,
     "MYNUM" NUMBER(25,4)
   )
Run Code Online (Sandbox Code Playgroud)

但是,当我使用输入字段的有效值运行存储过程时,出现以下错误:

ORA-00904: "TEMP"."P_DATE": 无效标识符 …

oracle merge date ora-00904 dual-table

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

如何使WPF Expander向上扩展,同时保持标题固定

我正在尝试创建一个扩展器,其中标题保持固定,内容显示在标题上方,覆盖上面的任何其他控件。在 Canvas 中设置ExpandDirection="Up"和放置 Expander 可以实现一半的效果 - 内容相对于标题向上展开,并覆盖其他控件(尽管在下面),但标题向下移动。

有什么方法可以做到这一点,但将标题保持在固定位置,以便内容最终覆盖上面的控件?

这是我到目前为止所发布的内容:

<Window x:Class="Sandbox.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="900" Width="1100">
  <StackPanel>

    <StackPanel Margin="20,0,0,0">
      <RadioButton Content="Choice One"/>
      <RadioButton Content="Choice Two"/>
      <RadioButton Content="Choice Three"/>
      <RadioButton Content="Choice Four"/>
      <RadioButton Content="Choice Five"/>
      <RadioButton Content="Choice Six"/>
    </StackPanel>

    <Canvas MinHeight="25" Panel.ZIndex="99">
      <Expander Header="This must stay fixed" ExpandDirection="Up" Width="175">
        <Grid Background="Cornsilk">
          <Grid.BitmapEffect>
            <DropShadowBitmapEffect />
          </Grid.BitmapEffect>

          <TextBlock TextWrapping="Wrap" Margin="5">
            This must expand upwards, not downwards.
            The header must remain exactly where it is.
            This TextBlock must appear above the header …
Run Code Online (Sandbox Code Playgroud)

wpf overlay canvas fixed expander

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

使用 ReadOnlyCollection&lt;T&gt; 与 List&lt;T&gt; 与数组作为返回类型

前段时间我发了一个关于参数的类似问题,它引用了一篇这个问题更相关的文章该文章提倡使用IReadOnlyCollection<T>over IEnumerable<T>

最近,我一直在考虑回归的利弊 IEnumerable<T>

从好的方面来说,它与接口一样小,因此它使您作为方法作者比承诺更重的替代方案(如IList<T>或(天堂禁止)数组)具有更大的灵活性。

然而,正如我在一篇文章中概述的那样,IEnumerable<T>返回会诱使调用者违反Liskov 替换原则。这太容易让他们使用LINQ扩展方法,如Last()Count(),其语义IEnumerable<T>不答应。

需要的是一种更好的方法来锁定返回的集合,而不会使这种诱惑如此突出。(我想起了 Barney Fife 以艰难的方式学习这一课。)

输入IReadOnlyCollection<T>, .NET 4.5 中的新内容。它只向IEnumerable<T>:Count属性添加了一个属性。通过承诺计数,您可以向呼叫者保证您IEnumerable<T>确实有终点站。然后他们可以Last()问心无愧地使用 LINQ 扩展方法。

但是,本文提倡ReadOnlyCollection<T>在您想要保护成员的情况下使用(和其他替代方法)。

所以,我和一个同事讨论过这个问题,我们有不同的意见。

他建议一个方法应该返回它所拥有的任何东西(例如 aList<T>或数组),如果该方法产生它并且调用者之后更改它不会对其他任何东西产生影响(即,它不是成员并且不属于任何生命周期大于方法调用)。

我的观点是ReadOnlyCollection<T>向调用者表明集合通常应保持原样。如果他们想改变它,那么他们有责任明确地将它转换为 aIList<T>或调用ToList它。

微软的准则在特定的状态: …

c# arrays list return-type readonly-collection

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