表格中的计算字段,以查找第一行是成功还是失败

时间:2019-04-01 13:55:40

标签: sql-server

我有以下数据(来自表),其中包含TransactionDate,UserID和StatusDesc字段。我的目标是要显示userID,其中UserID不会在成功登录的同一天发生登录失败(由statusDesc列-“拒绝”指示)(状态为Status列-“成功”指示成功登录) ')。

实际数据

import tensorflow as tf

def perform_blockwise_dct_tf(img):
    shape = tf.shape(img)
    x, y, c = shape[0], shape[1], shape[2]
    img_res = tf.reshape(img, [x // 8, 8, y // 8, 8, c])
    img_dct1 = tf.spectral.dct(tf.transpose(img_res, [0, 1, 2, 4, 3]), norm='ortho')
    img_dct2 = tf.spectral.dct(tf.transpose(img_dct1, [0, 2, 4, 3, 1]), norm='ortho')
    out = tf.reshape(tf.transpose(img_dct2, [0, 4, 1, 2, 3]), shape)
    return out

预期结果

import numpy as np
from scipy.fftpack import dct

def perform_blockwise_dct(img):
    imsize = img.shape
    dct_blocks = np.zeros(imsize, dtype=img.dtype)
    for i in np.r_[:imsize[0]:8]:
        for j in np.r_[:imsize[1]:8]:
            dct_blocks[i:(i+8), j:(j+8), 0] = dct(dct(img[i:(i+8), j:(j+8), 0].T, norm='ortho').T, norm='ortho')
            dct_blocks[i:(i+8), j:(j+8), 1] = dct(dct(img[i:(i+8), j:(j+8), 1].T, norm='ortho').T, norm='ortho')
            dct_blocks[i:(i+8), j:(j+8), 2] = dct(dct(img[i:(i+8), j:(j+8), 2].T, norm='ortho').T, norm='ortho')
    return dct_blocks

np.random.seed(100)
# DCT in TensorFlow only supports float32
img = np.random.rand(128, 256, 3).astype(np.float32)
out1 = perform_blockwise_dct(img)
with tf.Graph().as_default(), tf.Session() as sess:
    out2 = sess.run(perform_blockwise_dct_tf(img))
# There is a bit of error
print(np.allclose(out1, out2, rtol=1e-5, atol=1e-6))
# True

1 个答案:

答案 0 :(得分:3)

您可以在计算字段中使用LOD (Level of Detail) expression。起初,LOD很难缠住你的头,但是一旦使用了几次,它们就会变得非常方便。

  1. 在“维度”下创建一个新的计算字段,称为“一天的首次拒绝”。这将是用户当天第一次拒绝的时间戳,如果没有拒绝,则为null。使用以下代码:

{ FIXED [UserId], DATE([TransactionDate]) : MIN(
    IF [StatusDesc] = "Rejected" THEN
      [TransactionDate]
    END
  )
}

  1. 创建另一个计算的字段,称为“具有优先拒绝权”。使用以下代码:

ISNULL([First Rejection of Day]) = FALSE AND [First Rejection of Day] <= [TransactionDate]

  1. 将“过滤器”具有“先拒绝”,然后选择“ False”。这将筛选出所有先前被拒绝的记录。

Screenshot in Tableau