Skip to content

Instantly share code, notes, and snippets.

@qnkhuat
qnkhuat / 18_to_24.js
Last active May 23, 2023 09:43
Metabase migrate from 18 to 24 logic
const mapping = [
{
start: 0,
end: 0,
},
{
start: 1,
end: 2,
},
{
@qnkhuat
qnkhuat / reverse_18_to_24.clj
Last active May 29, 2023 07:15
Reverse engineer the mapping logic from 18 to 24
;;; ------------------------- Implementation by Sasha converted to clojure ------------------------- ;;;
(def mapping {0 {:start 0 :end 0}
1 {:start 1 :end 2}
2 {:start 3 :end 3}
3 {:start 4 :end 4}
4 {:start 5 :end 6}
5 {:start 7 :end 7}
6 {:start 8 :end 8}
7 {:start 9 :end 10}
8 {:start 11 :end 11}
@qnkhuat
qnkhuat / migrate_18_to_24.py
Last active June 15, 2023 10:44
experiement migrating dashboard with grid 18 to 24 and back using excel
import random
import subprocess
from openpyxl import *
from openpyxl.styles import Side, Border, PatternFill
from openpyxl.utils import get_column_letter
# set to true if you dont' want to draw box in forward migration,
# used to set going from 24 -> 18 only
NO_FORWARD = False
import requests, time, argparse
parser = argparse.ArgumentParser()
parser.add_argument("-n", type=int, default=100)
parser.add_argument("--host", type=str, default='http://localhost:3000', help="HOST")
args = parser.parse_args()
ORDER_QS_ID = None
PEOPLE_QS_ID = None
HOST = args.host
@qnkhuat
qnkhuat / metabase_quartz.clj
Last active May 6, 2024 17:11
Quartz misfire policy bug
;; NOTE: need to update org.quartz.threadPool.threadCount to 1 in resources/quartz.properties
(require
'[metabase.task :as task]
'[metabase.util.log :as log]
'[metabase.test :as mt]
'[clojurewerkz.quartzite.scheduler :as qs]
'[clojurewerkz.quartzite.conversion :as qc]
'[clojurewerkz.quartzite.matchers :as quart.match]
'[clojurewerkz.quartzite.jobs :as jobs]
(ns stress-big-dashboard
(:require
[clojure.java.shell :as sh]
[metabase.test :as mt]
[toucan2.core :as t2]
[toucan2.tools.with-temp :as t2.with-temp]))
(defn create-cards
[n]
(let [tables (t2/select :model/Table :db_id (mt/id))
(ns oom-big-dashboard
(:require
[clojure.java.shell :as sh]
[metabase.test :as mt]
[metabase.util.log :as log]
[toucan2.core :as t2]
[toucan2.tools.with-temp :as t2.with-temp]))
(defn create-cards
[n]
import exec from 'k6/execution';
import http from 'k6/http'
import { check, sleep } from 'k6';
import { uuidv4 } from 'https://jslib.k6.io/k6-utils/1.4.0/index.js';
import { vu } from 'k6/execution';
export const options = {
scenarios: {
contacts: {
executor: 'constant-vus',
CREATE TABLE IF NOT EXISTS table_1 (table_0_integer0 integer,table_0_integer1 integer,table_0_integer2 integer,table_0_integer3 integer,table_0_integer4 integer,table_0_integer5 integer,table_0_integer6 integer,table_0_integer7 integer,table_0_integer8 integer,table_0_integer9 integer,table_0_integer10 integer,table_0_integer11 integer,table_0_integer12 integer,table_0_integer13 integer,table_0_integer14 integer,table_0_integer15 integer,table_0_integer16 integer,table_0_integer17 integer,table_0_integer18 integer,table_0_integer19 integer,table_0_integer20 integer,table_0_integer21 integer,table_0_integer22 integer,table_0_integer23 integer,table_0_integer24 integer,table_0_integer25 integer,table_0_integer26 integer,table_0_integer27 integer,table_0_integer28 integer,table_0_integer29 integer,table_0_varchar0 varchar,table_0_varchar1 varchar,table_0_varchar2 varchar,table_0_varchar3 varchar,table_0_varchar4 varchar,table_0_varchar5 varchar,table_0_varchar6 varchar,table_0_varchar7 varchar,table_0_varchar8 v
(ns stress-big-dashboard
(:require
[clojure.java.shell :as sh]
[metabase.sync :as sync]
[metabase.test :as mt]
[toucan2.core :as t2]
[toucan2.tools.with-temp :as t2.with-temp]))
"""
##