Таблица: агрегация булевых условий (кодируется как строки)

Я новичок в Spring, но я обнаружил это рабочее решение. Скажите, пожалуйста, если это неприемлемо.

Я делаю Spring applicationContext в этом компоненте:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

@Component
public class SpringUtils {

    public static ApplicationContext ctx;

    /**
     * Make Spring inject the application context
     * and save it on a static variable,
     * so that it can be accessed from any point in the application. 
     */
    @Autowired
    private void setApplicationContext(ApplicationContext applicationContext) {
        ctx = applicationContext;       
    }
}

Вы можете поместить этот код в основную класс приложения, если вы хотите.

Другие классы могут использовать его следующим образом:

MyBean myBean = (MyBean)SpringUtils.ctx.getBean(MyBean.class);

Таким образом, любой bean-компонент может быть получен любым объектом в приложении (также запутанным с new) и статическим способом.

2
задан Alex Blakemore 25 March 2019 в 18:45
поделиться

1 ответ

Было бы немного проще, если бы вы использовали булевы значения вместо строк - также это обеспечило бы наличие только двух допустимых значений. Если ваше поле, скажем, оно называется Завершено , содержит логические значения (т. Е. Либо ИСТИНА, либо ЛОЖЬ), то, чтобы показать, все ли записи были заполнены, т.е. Если в столбце «Завершено» указано значение «ИСТИНА», вы просто используете MIN([Completed]).

Это работает, потому что Tableau рассматривает True как большее, чем False, поэтому MIN (условие) имеет значение true тогда и только тогда, когда условие имеет значение True для каждой записи, игнорируя нули. MAX (условие) истинно тогда и только тогда, когда существует хотя бы одна запись с условием, установленным в True. Так что для логических значений вы можете прочитать MIN () как «каждый» и MAX () как «любой».

Единственный недостаток - если ваше логическое поле допускает нулевые значения. Если это так, вы можете выбрать один из нескольких вариантов. Вы можете использовать поведение по умолчанию, которое заключается в том, чтобы игнорировать пустые значения, как если бы они не существовали, или вы можете заключить ссылку на поле в вызов IFNULL (), чтобы предоставить значение по умолчанию по вашему выбору для замены пустых значений. Действительно то же самое для любого типа данных и функции агрегирования.

Этот метод полезен в нескольких ситуациях, включая определение условий для множеств.

Наконец, если ваш набор данных должен использовать строки, такие как «YES» и «NO» вместо логических значений, вы можете легко преобразовать в логические значения, определив новое вычисляемое поле, такое как «Completed» как [Completed-Original] = “YES”

0
ответ дан Alex Blakemore 25 March 2019 в 18:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: