Хобрук: Ваш путь к мастерству в программировании

Есть ли способ установить параметры запроса (переменные) в отдельных файлах?

У меня есть несколько запросов SQL, которые используют общий набор параметров (переменных). В настоящее время параметры находятся set вверху каждого файла. При изменении любого параметра его необходимо изменить в каждом файле. Было бы полезно иметь возможность хранить параметры в отдельном файле и изменять их только в одном месте.

Как это можно сделать?

Я понимаю, что могу использовать параметр --var для impala-shell, но это означает, что их нужно вводить несколько раз.

Я вижу несколько вариантов того, как это может произойти:

  1. impala-shell может поддерживать несколько аргументов -f: это было бы очень элегантно, но это не так.

  2. Запросы могут быть cat объединены вместе и переданы в impala-shell. Это полезно, но неэлегантно.

  3. Псевдоним может быть установлен для impala-shell с указанными --var аргументами. Это потенциально трудно исправить.

Очевидно, что № 1 будет лучшим решением, но есть ли другие варианты или советы.

Не совсем связано: Выполнение нескольких запросов в cloudera impala

28.09.2018

Ответы:


1

Пожалуйста, проверьте документацию по Impala: https://www.cloudera.com/documentation/enterprise/5-15-x/topics/impala_shell_options.html#shell_options

Вставка здесь соответствующей части:

-f файл_запроса или --query_file=файл_запроса

Передает SQL-запрос из файла. Несколько операторов должны быть разделены точкой с запятой (;). В CDH 5.5 / Impala 2.3 и выше вы можете указать имя файла - для представления стандартного ввода. Эта функция делает удобным использование impala-shell как части конвейера Unix, где операторы SQL динамически генерируются другими инструментами.

Как видите, Impala может анализировать больше файлов запросов, разделенных точкой с запятой (;). Таким образом, и с аргументом --var вы можете выполнить свой 1-й случай.

12.10.2018
  • Не совсем то, на что я надеялся, но это кажется лучшим решением и удовлетворяет варианту № 2 (исправен, но неэлегантен). 31.10.2018

  • 2

    3a. Автоматически сгенерируйте аргументы командной строки --var из файла конфигурации.

    Попробуйте эту функцию bash...

    function impala-with-conf {
      if [[ -z "$1" || ! -r "$1" ]] ; then
        echo "1st argument must be a properties file" >&2
        return 1
      fi
      typeset AllVarArgs=''
      while IFS='' read -r Line || [[ -n "$Line" ]]; do
        KeyValue=$(echo "$Line" | sed -e 's/^[ \t]*//' -e 's/[ \t]*=[ \t]*/=/' -e 's/[ \t]*$//')
        AllVarArgs="$AllVarArgs --var $KeyValue" 
      done < "$1"
      shift
      impala-shell $AllVarArgs $@
    }
    

    (на основе Прочитайте файл построчно присваивая значение переменной )

    Будет работать с файлами свойств, такими как

    alpha_beta = some-text-without-spaces-or-quotes
    epsilon=12
    

    Демо:

    cat x.sql
    select '${VAR:alpha_beta}' as ab , ${VAR:epsilon} as e

    impala-with-conf x.conf -q x.sql
    Query: select 'some-text-without-spaces-or-quotes' as ab , 12 as e
    +------------------------------------+----+
    | ab | e |
    +------------------------------------+----+
    | some-text-without-spaces-or-quotes | 12 |
    +------------------------------------+----+

    02.10.2018
    Новые материалы

    Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
    LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

    Структуры данных в C ++ - Часть 1
    Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

    Как я опубликовал свое первое приложение в App Store в 13 лет
    Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..

    Что в лицо
    Очерк о возвращении физиогномики и о том, почему мы должны это приветствовать. История начинается со странной науки. Р. Тора Бьорнсдоттир, Николас О. Рул. Видимость социального класса по..

    Почему шаблоны проектирования и почему нет?
    Сложность — мать всех проблем в программировании. Программное обеспечение должно быть разработано с точки зрения того, кто его поддерживает, а не того, кто его пишет, потому что программное..

    Создание дизайна обуви с помощью машинного обучения
    Обувь. Что подождать? Я думал, что речь пойдет о машинном обучении! Ну это так. Если бы вы пошли на Amazon, сколько обуви вы бы нашли? Наверное, много, не так ли? Но много ли в них..

    GraalVM в 2022 году: итоги года
    2022 год был очень продуктивным для проекта и сообщества GraalVM. Вместе мы разработали множество новых функций, выпустили GraalVM для последних версий Java и новых платформ и увидели несколько..