Запросы в sql: основные операторы, виды, синтаксис, написание, создание базы данных, примеры простых и сложных команд

Создание SQL запросов

В том случае, если встроенного языка запросов ZuluGIS недостаточно, запросы могут
выполняться с использованием OGC расширения языка SQL.

В программе используется диалект языка SQL основанный на диалекте Transact-SQL,
разработанном компаниями Microsoft и Sybase (см. http://msdn.microsoft.com/en-us/library/bb510741(SQL.100).aspx и http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.sqlug/html/sqlug/title.htm). Используемый диалект дополнен в соответствии с OGC расширением языка SQL, информация о
котором приводится по адресам http://www.opengeospatial.org/standards/sfa (общая
архитектура) и http://www.opengeospatial.org/standards/sfs (SQL
расширение).

IntelliSense — технология автодополнения, дописывает название функции при вводе начальных
букв. Кроме прямого назначения IntelliSense используется для доступа к документации и для
устранения неоднозначности в именах переменных, функций и методов. Подсветка синтаксиса —
выделение синтаксических конструкций текста с использованием различных цветов, шрифтов и
начертаний. Обычно применяется для облегчения чтения исходного текста компьютерных программ,
улучшения визуального восприятия.

Рисунок 694. Написание SQL запроса с IntelliSense


Для вызова диалога формирования SQL запросов выполните команду меню
Карта|Запрос|SQL запрос, либо нажмите кнопку панели инструментов.

Рисунок 695. Диалог SQL запроса


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

Примечание

Для быстрого поиска нужных полей в списке Источник, введите начало названия требуемого
поля в поисковой строке над списком, в списке будут отображаться только поля, начинающиеся с
введенных символов.

Для отображения реальных названий полей базы данных в области полей сделайте щелчок правой
кнопкой мыши и в контекстном меню выберите Реальные имена полей. Для
возврата к пользовательским названиям надо снять опцию Реальные имена
полей.

После задания текста запроса нажмите кнопку Выполнить панели
инструментов, в области Ответ в нижней части диалога отобразится панель
данных с результатами запроса. Панель можно открепить от диалога запроса для дальнейшей работы с
результатами, для этого наведите указатель мыши на заголовок панели, нажмите левую кнопку мыши,
не отпуская ее, переместите мышь в произвольную часть окна программы ZuluGIS, после чего
отпустите кнопку мыши. Подробнее о панели данных см. «Панель данных».

В диалоге SQL запросов предусмотрено сохранение текущего запроса в файл, открытие запроса из
файла и создание нового запроса:

  • Для открытия запроса из файла (в формате .sql) выполните команду меню
    Файл|Открыть, или нажмите кнопку панели инструментов – и выберите требуемый файл в стандартном диалоге выбора файлов;

  • Для сохранения текущего запроса в файле (формата . sql) выполните команду меню
    Файл|Сохранить, или нажмите кнопку панели инструментов – и задайте требуемое название файла в стандартном диалоге сохранения
    файлов.

  • Для создания нового запроса выполните команду меню Файл|Новый запрос,
    либо нажмите кнопку панели инструментов .

Сложные SQL-запросы

Сложные SQL-запросы




Пожалуйста, включите JavaScript в браузере!

Сложные SQL-запросы

С помощью строки поиска вы можете вручную создавать SQL-запросы любой сложности для фильтрации событий.

Чтобы сформировать SQL-запрос вручную:

  1. Перейдите в раздел События веб-интерфейса KUMA.

    Откроется форма с полем ввода.

  2. Введите SQL-запрос в поле ввода.
  3. Нажмите на кнопку .

Отобразится таблица событий, соответствующих условиям вашего запроса. При необходимости вы можете отфильтровать события по периоду.

Поддерживаемые функции и операторы

  • SELECT – поля событий, которые следует возвращать.

    Для SELECT в программе поддержаны следующие функции и операторы:

    • Функции агрегации: count, avg, max, min, sum.
    • Арифметические операторы: +, -, *, /, <, >, =, !=, >=, <=.

      Вы можете комбинировать эти функции и операторы.

      Если вы используете в запросе функции агрегации, настройка отображения таблицы событий, сортировка событий по возрастанию и убыванию, получение статистики, а также ретроспективная проверка недоступны.

  • FROM – источник данных.

    При создании запроса в качестве источника данных вам нужно указать значение events.

  • WHERE – условия фильтрации событий.
    • AND, OR, NOT, =, !=, >, >=, <, <=
    • IN
    • BETWEEN
    • LIKE
    • ILIKE
    • inSubnet
    • match (в запросах используется синтаксис регулярных выражений re2)
  • GROUP BY – поля событий или псевдонимы, по которым следует группировать возвращаемые данные.

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

  • ORDER BY – столбцы, по которым следует сортировать возвращаемые данные.

    Возможные значения:

    • DESC – по убыванию.
    • ASC – по возрастанию.
  • OFFSET – пропуск указанного количества строк перед выводом результатов запроса.
  • LIMIT – количество отображаемых в таблице строк.

    Значение по умолчанию – 250.

    Если при фильтрации событий по пользовательскому периоду количество строк в результатах поиска превышает заданное значение, вы можете отобразить в таблице дополнительные строки, нажав на кнопку Показать больше записей. Кнопка не отображается при фильтрации событий по стандартному периоду.


    Примеры запросов:

    • SELECT * FROM `events` WHERE Type IN ('Base', 'Audit') ORDER BY Timestamp DESC LIMIT 250

      Все события таблицы events с типом Base и Audit, отсортированные по столбцу Timestamp в порядке убывания. Количество отображаемых в таблице строк – 250.

    • SELECT * FROM `events` WHERE BytesIn BETWEEN 1000 AND 2000 ORDER BY Timestamp ASC LIMIT 250

      Все события таблицы events, для которых в поле BytesIn значение полученного трафика находится в диапазоне от 1000 до 2000 байт, отсортированные по столбцу Timestamp в порядке возрастания. Количество отображаемых в таблице строк – 250.

    • SELECT * FROM `events` WHERE Message LIKE '%ssh:%' ORDER BY Timestamp DESC LIMIT 250

      Все события таблицы events, которые в поле Message содержат данные, соответствующие заданному шаблону %ssh:% в нижнем регистре, и отсортированы по столбцу Timestamp в порядке убывания. Количество отображаемых в таблице строк – 250.

    • SELECT * FROM `events` WHERE inSubnet(DeviceAddress, '10.0.0.1/24') ORDER BY Timestamp DESC LIMIT 250

      Все события таблицы events для хостов, которые входят в подсеть 10.0.0.1/24, отсортированные по столбцу Timestamp в порядке убывания. Количество отображаемых в таблице строк – 250.

    • SELECT * FROM `events` WHERE match(Message, 'ssh.*') ORDER BY Timestamp DESC LIMIT 250

      Все события таблицы events, которые в поле Message содержат текст, соответствующий шаблону ssh.*, и отсортированы по столбцу Timestamp в порядке убывания. Количество отображаемых в таблице строк – 250.

    • SELECT max(BytesOut) / 1024 FROM `events`

      Максимальный размер исходящего трафика (КБ) за выбранный период времени.

    • SELECT count(ID) AS "Count", SourcePort AS "Port" FROM `events` GROUP BY SourcePort ORDER BY Port ASC LIMIT 250

      Количество событий и номер порта. События сгруппированы по номеру порта и отсортированы по столбцу Port в порядке возрастания. Количество отображаемых в таблице строк – 250.

      Столбцу ID в таблице событий присвоено имя Count, столбцу SourcePort присвоено имя Port.

Если вы хотите указать в запросе специальный символ, вам требуется экранировать его, поместив перед ним обратную косую черту (\).


Пример:

SELECT * FROM `events` WHERE match(Message, 'ssh:\'connection.*') ORDER BY Timestamp DESC LIMIT 250

Все события таблицы events, которые в поле Message содержат текст, соответствующий шаблону ssh: 'connection', и отсортированы по столбцу Timestamp в порядке убывания. Количество отображаемых в таблице строк – 250.

При переключении на конструктор параметры запроса, введенного вручную в строке поиска, не переносятся в конструктор: вам требуется создать запрос заново. При этом запрос, созданный в конструкторе, не перезаписывает запрос, введенный в строке поиска, пока вы не нажмете на кнопку Применить в окне конструктора.

После обновления KUMA до версии 1.6 при фильтрации событий с помощью SQL-запроса, содержащего условие inSubnet, может возвращаться ошибка Code: 441. DB::Exception: Invalid IPv4 value. В таких случаях необходимо на серверах хранилища (на каждой машине кластера ClickHouse) в файле /opt/kaspersky/kuma/clickhouse/cfg/config.d/users.xml в разделе profiles → default добавить директиву <cast_ipv4_ipv6_default_on_conversion_error>true</cast_ipv4_ipv6_default_on_conversion_error>.

Подробнее об SQL см. в справке ClickHouse.

В начало

Что такое запрос в SQL?

SQL означает язык структурированных запросов. Он используется в компьютерном программировании для обработки или управления базами данных. Мы используем запросы в SQL для обработки баз данных. Запрос больше похож на вопрос или просьбу простыми словами. Предположим, у вас есть запрос — Пожалуйста, предоставьте мне идентификатор сотрудника всех сотрудников, работающих в бухгалтерии. Или запрос вроде — сколько мест забронировано на шоу? Следовательно, мы запрашиваем или запрашиваем для некоторой информации.

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

Прежде чем углубляться в запросы, давайте кратко рассмотрим SQL.

Краткий обзор SQL

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

Давайте взглянем на обязательное использование SQL для сбора, хранения и обработки данных и т. д. —

  • SQL можно использовать для выполнения (или выполнения) запросов к базе данных.
  • SQL может вставлять, обновлять, удалять или извлекать данные из баз данных.
  • SQL может создавать новые таблицы или хранимые процедуры, представления и т. д.
  • SQL может устанавливать разрешения для таблиц, процедур и представлений.

Зачем использовать SQL-запрос?

SQL Query используется для запроса или извлечения информации из баз данных. Мы можем выполнять следующие операции с помощью SQL-запроса:

  • Использовать SQL-запрос для создания новой базы данных и вставки данных в базу данных
  • .

  • Используйте SQL-запрос для извлечения (или извлечения) данных из базы данных. Кроме того, для изменения или обновления существующих данных в базе данных.
  • Чтобы удалить или удалить данные или таблицу из базы данных с помощью SQL-запроса . Кроме того, после этого мы можем создать новую таблицу,
  • .

  • Использование SQL-запроса для установки разрешений для таблиц, представлений и процедур. Также для создания функций, представлений и хранимых процедур.

Как написать SQL-запрос?

Основой запроса в SQL Server является предложение SELECT , которое позволяет выбрать отображаемые данные.

Оператор SQL SELECT извлекает записи из таблицы базы данных согласно пунктам (например, FROM и WHERE ), которые определяют критерии, на основании которых будут выбираться наши данные. Синтаксис оператора SQL SELECT:

 
 SELECT столбец1, столбец2.
ИЗ таблицы1, таблицы2
ГДЕ столбец1 = 'xyz' и столбец2 = 'abc';
 

В приведенном выше операторе SQL:

  • Предложение SELECT указывает один или несколько столбцов, которые необходимо получить из базы данных. Чтобы указать несколько столбцов, мы должны использовать запятую и пробел между именами столбцов. Однако, если мы хотим получить все столбцы, мы можем использовать подстановочный знак * (звездочка) SELECT * FROM . .. .
  • Предложение FROM указывает одну или несколько таблиц, которые должны быть запрошены . Мы можем использовать запятую и пробел между именами таблиц при указании нескольких таблиц, например, FROM Names, Addresses, Phone_Numbers , где Names, Addresses и т. д. — это имена таблиц.
  • Предложение WHERE выбирает только те строки , в которых указанный столбец содержит указанное значение. WHERE позволяет отфильтровать запрос, чтобы сделать его более конкретным. Значение обычно заключается в одинарные кавычки (например, WHERE color = ‘teal’ ).
  • Точка с запятой (;) является терминатором оператора . Однако если у вас есть однострочный оператор SQL-запроса, вы можете пропустить точку с запятой (;). Но это обязательно, если у вас многострочный запрос. Как правило, рекомендуется включать точку с запятой после каждого завершающего оператора SQL-запроса.

В приведенном выше объяснении и синтаксисе мы использовали заглавные буквы для каждого предложения SQL. Однако обратите внимание, что SQL не чувствителен к регистру . То есть SELECT совпадает с select , FROM совпадает с из и т. д.

Примеры SQL-запросов

Давайте рассмотрим несколько примеров, чтобы лучше понять SQL-запросы. Предположим, у нас есть таблица с именем Customers . Давайте выполним некоторые операции SQL для извлечения данных из нашей таблицы и управления ими.

Пример 1. Оператор SELECT

Чтобы получить все столбцы нашего SQL из таблицы «Клиенты», мы можем использовать следующий оператор SQL:

 
 SELECT * FROM Customers;
 

После выполнения вышеуказанного запроса мы получим следующий вывод:

Вывод:

Следовательно, использование * (звездочка) дает нам в качестве вывода всю таблицу.

Теперь предположим, что мы хотим получить на выходе только имя, фамилию и страну, в которой они живут. Для этого мы выполним следующий SQL-запрос:

 
 ВЫБЕРИТЕ имя, фамилию, страну ИЗ Клиентов;
 

Выполнение вышеуказанного запроса даст нам следующий вывод:

Вывод:

first_name last_name country
John Doe USA
Robert Luna USA
David Robinson UK
John Рейнхардт UK
Betty DOE ULE
. после выполнения вышеуказанного запроса. Это связано с тем, что мы указали только эти имена столбцов в нашем запросе на выборку.

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

 
 ВЫБЕРИТЕ страну, customer_id
ОТ клиентов;
 

Вывод:

Следовательно, мы можем заключить, что изменение порядка имен таблиц в операторе select на противоположное также меняет порядок в выводе.

Пример 2. Пункт FROM

Предположим, у нас есть другая таблица Orders . Во-первых, давайте посмотрим содержимое таблицы Orders.

Код:

 
 ВЫБЕРИТЕ * ИЗ Заказов;
 

Вывод:

Итак, приведенное выше является содержимым таблицы Orders. Давайте выполним некоторые операции, объединив таблицы Customers и Orders, чтобы узнать больше о работе предложения FROM.

Код:

 
 ВЫБЕРИТЕ first_name как имя, last_name как фамилия, пункт
ОТ клиентов, заказов;
 

Вывод:

80168
Имя Фамилия Пункт
John Doe Keyboard
John Doe Mouse
John Doe Monitor
John Doe Keyboard
Джон Доу Коврик для мыши
Роберт Луна Клавиатура
Роберт Мышь

Robert Luna Monitor
Robert Luna Keyboard
Robert Luna Mousepad
David Robinson Keyboard
David Робинсон Мышь
Дэвид Робинсон Монитор
Дэвид Робинсон Keyboard
David Robinson Mousepad
John Reinhardt Keyboard
John Reinhardt Mouse
John Reinhardt Monitor
Джон Райнхардт Клавиатура
Джон Рейнхардт Коврик для мыши
Betty Doe Keyboard
Betty Doe Mouse
Betty Doe Monitor
Betty Doe Keyboard
Betty Doe Коврик для мыши

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

Кроме того, мы использовали ‘как’ , который используется как псевдоним. Команда AS используется для переименования столбца или таблицы с помощью псевдонима. Псевдоним существует только на время выполнения запроса. Следовательно, после этого запроса имена столбцов/имена таблиц будут такими же, как и в оригинале.

Следует заметить, что в обеих таблицах есть общее имя столбца, которое представляет собой столбец идентификатора клиента . Таким образом, для отображения идентификатора клиента нам нужно явно указать имя таблицы, за которым следует оператор точки (.), а затем указать имя столбца. Давайте посмотрим на это на примере.

Код:

 
 ВЫБЕРИТЕ Customers.customer_id в качестве идентификатора, first_name в качестве имени, элемент
ОТ клиентов, заказов;
 

Вывод:

68

6

ID Name item
1 John Keyboard
1 John Mouse
1 John Monitor
1 John Keyboard
1 John Mousepad
2 Robert Keyboard
2 Robert Mouse
2 Robert Монитор
2 Роберт Клавиатура
2 Роберт 39 16

Коврик для мыши David Keyboard
3 David Mouse
3 David Monitor
3 David Keyboard
3 David Mousepad
4 John Keyboard
4 John Mouse
4 John Monitor
4 John Keyboard
4 John Mousepad
5 Betty Keyboard
5 Betty Mouse
5 Бетти Монитор
5 Бетти Клавиатура
5 Мышь

0163

Следовательно, в приведенном выше примере кода после явного упоминания идентификатора клиента с именем его таблицы мы можем получить приведенный выше вывод. Если бы мы не упомянули Customers.customer_id , то получили бы ошибку Error: ambiguous column name: customer_id .

Давайте также рассмотрим пример использования DISTINCT. Оператор SELECT DISTINCT используется для возврата только различных или отличающихся значений. Внутри таблицы столбец иногда содержит много повторяющихся значений, и вам часто нужно перечислить только разные значения. Итак, давайте посмотрим на его использование.

Код:

 
 ВЫБЕРИТЕ РАЗЛИЧНУЮ позицию, количество
ОТ Заказов;
 

Вывод:

В приведенном выше выводе мы получили только разные значения товара и суммы. Мы не получили никаких значений, которые были бы дублированы повсюду.

Пример 3. Предложение WHERE

Наконец, давайте подробнее рассмотрим использование предложения where. Как вы уже знаете, предложение WHERE используется для фильтрации записей. Он используется для извлечения только тех записей, которые удовлетворяют заданному условию.

Код:

 
 ВЫБЕРИТЕ имя, страну, предмет, сумму
ОТ клиентов, заказы
ГДЕ сумма > 400;
 

Вывод:

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

Давайте напишем еще несколько запросов, используя предложение WHERE с использованием И, ИЛИ и НЕ.

Код:

 
 ВЫБЕРИТЕ имя, страну, предмет, сумму
ОТ клиентов, заказы
ГДЕ страна НЕ "США" И сумма < 400;
 

Вывод:

В приведенном выше примере мы использовали оператор И. Оператор AND отображает запись, если все условия, разделенные оператором AND, ИСТИННЫ.

Код:

 
 ВЫБЕРИТЕ имя, страну, товар, сумму
ОТ клиентов, заказы
ГДЕ Customers.customer_id = Orders. customer_id;
 

Вывод:

В приведенном выше примере мы получили только клиентов, которые приобрели товары с помощью оператора сравнения '=' . Мы сравнили идентификаторы клиентов с их заказами.

Давайте посмотрим на последний пример, где мы удаляем некоторые данные из нашей таблицы.

Код:

 
 УДАЛИТЬ ИЗ Customers WHERE first_name='John';
 

Вывод:

Оператор DELETE используется для удаления существующих записей в таблице. В приведенном выше примере все записи с именем first_name равны 9.0003 "Джон" удален.

Заключение

  • SQL означает язык структурированных запросов. Это язык, который используется для получения информации из баз данных.
  • Оператор SQL SELECT извлекает записи из таблицы базы данных в соответствии с предложениями (например, FROM и WHERE), которые определяют критерии. Возвращенные данные сохраняются в таблице результатов, называемой набором результатов.
  • Предложение FROM указывает одну или несколько таблиц для запроса. Предложение WHERE выбирает только те строки, в которых указанный столбец содержит заданное значение.
  • Мы можем выполнять все операции создания, чтения, обновления и удаления с помощью SQL-запросов. Кроме того, мы также можем установить разрешения для таблиц, представлений и процедур.
  • Мы можем выполнять различные операции, такие как И, ИЛИ, НЕ, В и многие другие при выполнении запросов к нашим базам данных.

Подключение к пользовательскому SQL-запросу

Для большинства баз данных можно подключить
к конкретному запросу, а не ко всему набору данных. Поскольку базы данных имеют немного отличающийся друг от друга синтаксис SQL, пользовательский SQL, который вы используете для подключения к одной базе данных, может отличаться от пользовательского SQL, который вы можете использовать для подключения к другой базе данных. Однако использование пользовательского SQL может быть полезным, если вы точно знаете, какая информация вам нужна, и понимаете, как писать SQL-запросы.

Хотя существует несколько распространенных причин, по которым вы можете использовать пользовательский SQL, вы можете использовать пользовательский SQL для объединения ваших данных между таблицами, преобразования полей для выполнения соединений между базами данных, реструктуризации или уменьшения размера ваших данных для анализа и т. д.

Для источников данных Excel и текстовых файлов этот параметр доступен только в книгах, созданных до Tableau Desktop 8.2, или при использовании Tableau Desktop в Windows с устаревшим подключением. Чтобы подключиться к Excel или текстовым файлам с помощью устаревшего подключения, подключитесь к файлу и в диалоговом окне «Открыть» щелкните раскрывающееся меню «Открыть», а затем выберите «Открыть с помощью устаревшего подключения».

ПРИМЕЧАНИЕ. Начиная с Tableau 2020.2, устаревшие соединения Excel и Text больше не поддерживаются. См. документ «Альтернативы устаревшего подключения» в сообществе Tableau, чтобы узнать об альтернативах использованию устаревшего подключения.

Подключение к пользовательскому SQL-запросу

  1. После подключения к данным дважды щелкните параметр «Новый пользовательский SQL» на странице «Источник данных».

  2. Введите или вставьте запрос в текстовое поле. Запрос должен быть одним оператором SELECT*.

  3. Когда закончите, нажмите OK.

Когда вы нажмете OK, запрос запустится, и на логическом уровне холста появится пользовательская таблица SQL-запросов. Только релевантные поля
из пользовательского SQL-запроса, отображаемого в сетке данных на странице «Источник данных».

Дополнительные сведения о логических и физических слоях холста см. в разделе Модель данных Tableau.

Примеры пользовательских SQL-запросов

Объединение таблиц по вертикали (объединение)

Если вам нужно добавить данные друг к другу, вы можете использовать опцию объединения на физическом уровне холста в Tableau. В некоторых случаях ваша база данных не поддерживает эту опцию, поэтому вместо нее вы можете использовать собственный SQL.

Например, предположим, что у вас есть следующие две таблицы: ноябрь и декабрь.

Ноябрь декабрь

Вы можете использовать следующий пользовательский SQL-запрос, чтобы добавить вторую таблицу, декабрь, к первой таблице, ноябрь:

SELECT * FROM ноября UNION ALL SELECT * FROM декабря

Результат запроса в таблице данных выглядит следующим образом:

Дополнительные сведения об опции объединения см. в разделе Объединение ваших данных.

Измените тип данных поля, чтобы выполнить соединение между базами данных

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

Например, предположим, что вы хотите соединить две таблицы, основную и вспомогательную, используя поля Root и ID соответственно. Поле Root представляет собой числовой тип, а поле ID – строковый тип. Вы можете использовать следующий пользовательский SQL-запрос, чтобы изменить тип данных Root с числа на строку, чтобы можно было соединить основные и вспомогательные таблицы с помощью полей Root и ID.

ВЫБЕРИТЕ
[Main].[Root] AS [Root_Number]
CAST([Main].[Root] AS INT] AS [Root_String]

ОТ [Основной]

Результат этого запроса показывает исходное поле Root и поле Root, преобразованное в строку.

Дополнительные сведения о соединениях и соединениях между базами данных см. в разделе Объединение ваших данных.

Уменьшите размер ваших данных

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

Например, предположим, что у вас есть большая таблица с именем FischerIris. Вы можете использовать следующий пользовательский SQL-запрос для извлечения указанных столбцов и записей, тем самым уменьшая размер набора данных, к которому вы подключаетесь из Tableau.

ВЫБЕРИТЕ

[FischerIris].[Виды] AS [Виды],

[FischerIris].[Ширина] AS [Ширина лепестка],

COUNT([FischerIris].[ID]) AS [Количество видов]

ОТ [FischerIris]

ГДЕ [FischerIris].[Орган] = 'Лепесток'

И [FischerIris].[Ширина] > 15,0000

ГРУППА ПО [FischerIris].[Виды], [FischerIris].[Ширина]

Реструктуризация данных (основной)

В некоторых случаях вы можете работать с таблицей, которую необходимо реструктурировать перед анализом. Хотя этот тип задач можно выполнить на физическом уровне холста в Tableau с помощью таких параметров, как поворот, ваша база данных может не поддерживать его. В этом случае вместо этого вы можете использовать собственный SQL.

Например, предположим, что у вас есть следующая таблица:

Чтобы изменить его структуру и оптимизировать данные для анализа в Tableau, вы можете использовать следующий пользовательский SQL-запрос:

SELECT Table1.Season ID AS [Season ID],

Table1.Items - Не нравится AS [Количество],

"Не нравится" AS [Причина]

ИЗ таблицы 1

СОЕДИНЕНИЕ ВСЕ

ВЫБРАТЬ Table1.Season ID AS [Season ID],

Table.Items - Дефект AS [Количество],

"Дефектный" AS [Причина]

ИЗ таблицы 1

СОЕДИНЕНИЕ ВСЕ

ВЫБРАТЬ Table1.Season ID AS [Season ID],

Table1.Items — Слишком большой AS [Количество],

"Слишком большой" AS [Причина]

ИЗ таблицы 1

СОЕДИНЕНИЕ ВСЕ

SELECT Table1. Season ID AS ID сезона,

Table1.Items — Слишком мал AS [Количество]

"Слишком маленький" AS [Причина]

ИЗ таблицы 1

Результат запроса в таблице данных выглядит следующим образом:

Дополнительные сведения о параметре сводки см. в разделе Сведение данных из столбцов в строки.

Объединить (объединить) и агрегировать данные

Если вам нужно объединить таблицы и агрегировать данные, вы можете использовать параметры типа объединения и агрегации по умолчанию на физическом уровне холста в Tableau. В некоторых случаях вам может понадобиться вместо этого использовать пользовательский SQL.

Например, предположим, что у вас есть следующие две таблицы: Orders и Vendors.

Заказы Продавцы

Вы можете использовать следующий пользовательский SQL-запрос, чтобы подсчитать количество заказов и выполнить левое соединение в таблицах Orders и Vendors:

ВЫБЕРИТЕ Vendors. Name,COUNT(Orders.Order) AS количество заказов

ОТ Заказы

ЛЕВОЕ СОЕДИНЕНИЕ Поставщики

ON Заказы.VendorID=Vendors.VendorID

ГРУППИРОВАТЬ ПО Имени;

Результат запроса выглядит так:

Дополнительные сведения о объединениях см. в разделе Объединение ваших данных.

Ошибки при ссылке на повторяющиеся столбцы

Если ваш пользовательский запрос SQL ссылается
дублировать столбцы, вы можете получить ошибки при попытке использовать один из
столбцы в вашем анализе в Tableau. Это произойдет, даже если запрос действителен.
Например, рассмотрим следующий запрос:

ВЫБЕРИТЕ * ИЗ
авторы, название автора ГДЕ authors.au_id = titleauthor.au_id

запрос корректен, но поле au_id неоднозначно
потому что в этом случае он существует как в таблице "authors", так и в таблице "titleauthor"
стол. Tableau подключится к запросу, но вы получите сообщение об ошибке в любое время
вы пытаетесь использовать поле au_id. Это потому что
Tableau не знает, о какой таблице вы говорите.

Примечание: . Рекомендуется по возможности определять псевдонимы столбцов с предложением AS в пользовательском SQL-запросе. Это связано с тем, что каждая база данных имеет свои собственные правила автоматического создания имени столбца всякий раз, когда псевдоним не используется.

Редактирование пользовательского SQL-запроса

Редактирование пользовательского SQL-запроса

  1. На странице источника данных на холсте дважды щелкните пользовательский запрос SQL в логическом слое.
  2. Наведите указатель мыши на настраиваемую таблицу SQL на физическом уровне, пока не появится стрелка.
  3. Щелкните стрелку и выберите Изменить пользовательский запрос SQL.
  4. В диалоговом окне отредактируйте пользовательский запрос SQL.

Чтобы изменить имя пользовательского запроса SQL

Когда вы перетаскиваете пользовательский SQL-запрос на логический слой холста, Tableau присваивает ему имя по умолчанию: Пользовательский SQL-запрос, Пользовательский SQL-запрос1 и т. д. Вы можете изменить имя по умолчанию на более значимое.

  1. На странице источника данных в логическом слое холста выберите стрелку раскрывающегося списка в пользовательской таблице SQL-запросов и выберите «Переименовать».

  2. Введите имя, которое вы хотите использовать для своего пользовательского SQL-запроса.

Использование параметров в пользовательском запросе SQL

Параметры в пользовательском операторе запроса SQL можно использовать для замены постоянного значения динамическим значением. Затем вы можете обновить параметр в книге, чтобы изменить соединение. Например, вы можете подключиться к пользовательскому SQL-запросу, который предоставляет данные о веб-трафике для конкретной страницы, указанной идентификатором страницы. Вместо использования постоянного значения для значения pageID в SQL-запросе вы можете вставить параметр. Затем, после завершения подключения, вы можете отобразить элемент управления параметрами в рабочей книге. Используйте элемент управления параметрами, чтобы отключить идентификатор страницы и получить данные для каждой интересующей страницы без необходимости редактирования или дублирования соединения.

В Tableau Desktop можно создать параметр непосредственно из диалогового окна Пользовательский SQL или использовать любые параметры, являющиеся частью рабочей книги. Если вы создаете новый параметр, он становится доступным для использования в рабочей книге, как и любой другой параметр. См. раздел Создание параметров, чтобы узнать больше.

Для веб-разработки (в Tableau Cloud или Tableau Server) вы можете использовать существующий параметр, опубликованный из Tableau Desktop. Вы не можете создать новый параметр в веб-разработке.

Чтобы добавить параметр в пользовательский запрос SQL

  1. На странице источника данных на холсте наведите указатель мыши на таблицу, пока не отобразится значок редактирования, а затем нажмите кнопку редактирования.
  2. В нижней части диалогового окна нажмите «Вставить параметр».
  3. Выберите постоянное значение в операторе SQL, а затем в раскрывающемся меню «Вставить параметр» выберите параметр, который вы хотите использовать вместо этого. Если вы еще не создали параметр, выберите Создать новый параметр. Следуйте инструкциям в разделе Создание параметров, чтобы создать параметр.

Примечание.  Параметры могут заменять только буквальные значения. Они не могут заменить выражения или идентификаторы, такие как имена таблиц.

В приведенном ниже примере пользовательский запрос SQL возвращает все заказы, отмеченные как срочные. В пользовательском операторе SQL приоритет порядка является постоянным значением. Если вы хотите изменить соединение, чтобы увидеть заказы с высоким приоритетом, вам придется отредактировать источник данных.

Вместо того, чтобы создавать и поддерживать множество вариантов одного и того же запроса, вы можете заменить постоянное значение приоритета порядка параметром. Параметр должен содержать все возможные значения приоритета заказа.

После создания параметра его можно вставить в оператор SQL, чтобы заменить постоянное значение.

После того, как вы закончите редактирование соединения, новый параметр появится в списке в области «Параметры» в нижней части панели «Данные», а элемент управления параметром отобразится в правой части экрана. При выборе других значений соединение обновляется.

Примечание: Если вы используете выписку, вы должны обновить выписку, чтобы отразить изменения в параметре. Публикация источника данных, использующего пользовательские параметры SQL, включает в себя параметры. Параметры передаются во все рабочие книги, подключенные к источнику данных.

Поддержка каталога Tableau для пользовательского SQL

Начиная с 2019.3, каталог Tableau доступен как часть предложения по управлению данными для Tableau Server и Tableau Cloud. Дополнительные сведения о каталоге Tableau см. в разделе «О каталоге Tableau» в справке Tableau Server или Tableau Cloud.

Поддерживаемые запросы

Каталог поддерживает пользовательские запросы SQL, соответствующие стандарту ANSI SQL-2003, за тремя известными исключениями:

  • Выражения часовых поясов
  • Мультимножественные выражения
  • Параметры таблицы

Начиная с 2021. 4, каталог Tableau также поддерживает использование диалекта Transact-SQL (T-SQL) в пользовательском SQL со следующими исключениями:

  • Советы
  • ЗА статьи
  • Функции OPENROWSET, OPENXML и OPENJSON
  • Скалярные функции ODBC
  • ДЛЯ СИСТЕМНОГО_ВРЕМЕНИ
  • TABLESAMPLE
  • ПОИСКПОЗ выражения
  • СОДЕРЖИТ выражение
  • Выражение FREETEXT

Поддерживаемые возможности и функции

Каталог поддерживает следующие дополнительные функции для источников данных, рабочих книг и потоков с подключениями, использующими драйверы MySQL или PostgreSQL, например, Amazon Aurora для MySQL, Amazon RedShift, Pivotal Greenplum Database, MemSQL, Denodo , и другие.

  • Функция MySQL GROUP_CONCAT
  • Массивы PostgreSQL
  • Функция PostgreSQL EXTRACT()

Другие пользовательские сценарии и функции SQL могут работать, но Tableau специально не тестирует и не поддерживает их.

Поддерживаемое происхождение

Когда актив использует пользовательский SQL, на вкладке Происхождение страницы актива появляется сообщение с кнопкой Показать пользовательский SQL-запрос. Нажмите кнопку, чтобы увидеть пользовательский SQL, используемый в соединении. Затем, если вы хотите скопировать пользовательский SQL в буфер обмена, нажмите «Копировать».

Некоторые типы пользовательского SQL могут привести к тому, что восходящая линия будет неполной. Когда это происходит, появляется сообщение с этой информацией. Карточки сведений о полях могут не содержать ссылок на связанные столбцы или вообще не отображать связанные столбцы. Карточки сведений о столбцах могут не содержать ссылок на поля, использующие столбец, или вообще не отображать никаких полей.

Если вы изучаете происхождение таблицы, обратите внимание, что Каталог не поддерживает отображение информации столбца в происхождении для метаданных таблицы, собранных с помощью пользовательского SQL. Однако, если другие активы используют ту же таблицу и не используют пользовательский SQL, каталог Tableau может отображать информацию о столбцах, обнаруженных с помощью этих других активов.

На следующем снимке экрана таблица factAccountOpportunityByQuarter была проиндексирована, поскольку она используется источником данных. Однако, поскольку на него ссылается пользовательский запрос SQL, информация о столбце недоступна.

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

Imacros | Все права защищены © 2021