Пример фильтров метабазы
Я использую метабазу, интегрированную с Mysql для отчетности цели. Я просмотрел документацию, но не смог найти ни одного примера, объясняющего, как применять фильтры в SQL-ответах.
Единственный пример, который я нашел, касался диапазона дат и полевых фильтров, но не текста и цифр.
Может ли кто-нибудь предоставить документацию или какой-либо пример использования текстовых фильтров.
Я использую версию метабазы v0.24.2
Запрос, который я пытаюсь запустить, это
SELECT @a:[email protected]+1 "Serial Number", ssk_transaction.transactionId AS "TranId",
t2.typeName AS "Transaction Type",
ssk_transaction.createdTime AS "GenDate", t3.deviceName AS "Machine Name",
t3.deviceLocation AS "Machine Location", t9.eventApiName AS 'API Name' ,
t8.vendorResultCode AS 'Last API Response',
(SELECT createdTime FROM ssk_transaction_event_detail t4 WHERE t4.transactionId
= ssk_transaction.transactionId ORDER BY id DESC LIMIT 1) AS "Last API Called",
(SELECT IFNULL(SUM(t5.itemName * t4.itemCount), 0) FROM
ssk_transaction_cash_detail t4
LEFT JOIN ssk_inventory_item t5 ON (t4.itemId = t5.itemId)
LEFT JOIN ssk_inventory_category t10 ON (t5.categoryId = t10.categoryId)
WHERE t4.transactionId = ssk_transaction.transactionId AND t10.categoryName = 'acceptor') "Cash In",
(SELECT IFNULL(SUM(t5.itemName * t4.itemCount), 0) FROM ssk_transaction_cash_detail t4
LEFT JOIN ssk_inventory_item t5 ON (t4.itemId = t5.itemId)
LEFT JOIN ssk_inventory_category t10 ON (t5.categoryId = t10.categoryId)
WHERE t4.transactionId = ssk_transaction.transactionId AND t10.categoryName = 'dispenser') "Cash Returned",
IFNULL((SELECT "Cash In"), 0) - IFNULL((SELECT "Cash Returned"), 0) AS "Amount of Activity",
(SELECT t8.vendorResultCode FROM ssk_transaction_event_detail t8 WHERE t8.transactionId = ssk_transaction.transactionId AND t8.eventId = 6 ORDER BY id DESC LIMIT 1) AS "Sim Status",
'Completed' AS "Transaction Status",
ssk_transaction.customerMsisdn AS MSISDN,
ssk_transaction.customerCNIC AS CNIC
FROM (SELECT @a:=0) initvars, ssk_transaction
LEFT JOIN ssk_transaction_type t2 ON (ssk_transaction.typeId = t2.typeId)
LEFT JOIN ssk_device t3 ON (ssk_transaction.deviceUUID = t3.deviceUUID)
LEFT JOIN ssk_transaction_cash_detail t6 ON (ssk_transaction.transactionId = t6.transactionId )
LEFT JOIN ssk_inventory_item t7 ON (t6.itemId = t7.itemId)
LEFT JOIN ssk_transaction_event_detail t8 ON (ssk_transaction.transactionId = t8.transactionId AND t8.eventId = 10)
LEFT JOIN ssk_transaction_event t9 ON (t9.eventId = t8.eventId)
WHERE {{created_at}} AND {{id}} [[AND ssk_transaction.customerMsisdn= {{msisdn}}]] AND {{cnic}} and t2.typeId = 3 AND t8.eventId = 10 AND t8.vendorResultCode = '405000000'
GROUP BY ssk_transaction.transactionId
ORDER BY ssk_transaction.createdTime ASC
Ответы
Ответ 1
Откройте проблему на странице github под номером версии, которую вы используете. Участники помогут вам с вашим запросом или даже предоставят запрашиваемую документацию /wiki.
Возможно, это может вам помочь:
try to use CONCAT('%',{{variable}},'%') such as:
WHERE 1=1 [[ AND test LIKE CONCAT('%',{{variable}},'%') ]]
Ответ 2
Чтобы создать переменную, просто напишите свой запрос и определите заполнители для ваших переменных в формате {{variablename}}, когда вы сделаете это, Metabase автоматически отобразит панель Variables справа, и вы должны выбрать тип этой переменной ( вы также можете пометить переменную по мере необходимости, если вы указали значение по умолчанию).
Вы не должны упускать переменную-заполнителя в своем запросе (поэтому CONCAT ('%', {{variable}}, '%') не работает), и вы можете пометить целое выражение как необязательное его окружение двойным -brackets.
Ниже приведен пример запроса:
выберите * из pg_tables, где schemaname = {{schemaname}} [[и tablename = {{tablename}}]]
В этом примере весь фильтр табуляций будет проигнорирован, если вы не указали значение для переменной tablename. Обратите внимание, что обе переменные помечены текстом типа.
![sql query с переменной]()