diff --git a/categories/contains/index.html b/categories/contains/index.html index d2540691..85d5c671 100644 --- a/categories/contains/index.html +++ b/categories/contains/index.html @@ -90,6 +90,36 @@

+
+
+
+ + + +
+

How to query JSON in MySQL with JSON_CONTAINS

+ +
+
+
+
+ + +
diff --git a/categories/contains/index.xml b/categories/contains/index.xml index cae02ddf..f228b6da 100644 --- a/categories/contains/index.xml +++ b/categories/contains/index.xml @@ -6,8 +6,15 @@ Recent content in contains on ftisiot ideas about food and life Hugo -- gohugo.io en-us - Fri, 06 Jan 2023 16:39:26 +0100 + Fri, 01 Mar 2024 10:53:23 +0100 + + How to query JSON in MySQL with JSON_CONTAINS + https://ftisiot.net/mysqljson/query-json-contains-mysql/ + Fri, 01 Mar 2024 10:53:23 +0100 + https://ftisiot.net/mysqljson/query-json-contains-mysql/ + <p>You can query a JSON document in MySQL to find content within it with:</p> <ul> <li>The <code>JSON_CONTAINS</code> function that will return if a JSON document is contained within another JSON document. The function returns <code>1</code> if the document is contained, <code>0</code> elsewhere.</li> <li>The <code>JSON_CONTAINS</code> function that will return if a JSON document path is contained within another JSON document. The function returns <code>1</code> if the document is contained, <code>0</code> elsewhere.</li> </ul> + How to check if JSON contains in PostgreSQL®? https://ftisiot.net/postgresqljson/how-to-check-JSON-contains-postgresql/ diff --git a/categories/index.html b/categories/index.html index f5727bce..950c7aa1 100644 --- a/categories/index.html +++ b/categories/index.html @@ -96,17 +96,17 @@

@@ -122,17 +122,17 @@

@@ -148,17 +148,17 @@

@@ -174,17 +174,17 @@

@@ -200,17 +200,17 @@

@@ -226,17 +226,17 @@

@@ -252,17 +252,17 @@

@@ -278,17 +278,17 @@

@@ -304,17 +304,17 @@

@@ -330,17 +330,17 @@

diff --git a/categories/index.xml b/categories/index.xml index 98db9165..70d5a94a 100644 --- a/categories/index.xml +++ b/categories/index.xml @@ -6,8 +6,43 @@ Recent content in Categories on ftisiot ideas about food and life Hugo -- gohugo.io en-us - Thu, 29 Feb 2024 11:00:56 +0100 + Fri, 01 Mar 2024 10:53:23 +0100 + + contains + https://ftisiot.net/categories/contains/ + Fri, 01 Mar 2024 10:53:23 +0100 + https://ftisiot.net/categories/contains/ + + + + json + https://ftisiot.net/categories/json/ + Fri, 01 Mar 2024 10:53:23 +0100 + https://ftisiot.net/categories/json/ + + + + json_contains + https://ftisiot.net/categories/json_contains/ + Fri, 01 Mar 2024 10:53:23 +0100 + https://ftisiot.net/categories/json_contains/ + + + + json_contains_path + https://ftisiot.net/categories/json_contains_path/ + Fri, 01 Mar 2024 10:53:23 +0100 + https://ftisiot.net/categories/json_contains_path/ + + + + mysql + https://ftisiot.net/categories/mysql/ + Fri, 01 Mar 2024 10:53:23 +0100 + https://ftisiot.net/categories/mysql/ + + AI https://ftisiot.net/categories/ai/ @@ -71,13 +106,6 @@ https://ftisiot.net/categories/concatenation/ - - mysql - https://ftisiot.net/categories/mysql/ - Mon, 12 Feb 2024 14:43:29 +0100 - https://ftisiot.net/categories/mysql/ - - String https://ftisiot.net/categories/string/ @@ -99,13 +127,6 @@ https://ftisiot.net/categories/jq/ - - json - https://ftisiot.net/categories/json/ - Fri, 02 Feb 2024 11:25:54 +0100 - https://ftisiot.net/categories/json/ - - DataLoad https://ftisiot.net/categories/dataload/ @@ -463,13 +484,6 @@ https://ftisiot.net/categories/parse/ - - contains - https://ftisiot.net/categories/contains/ - Fri, 06 Jan 2023 16:39:26 +0100 - https://ftisiot.net/categories/contains/ - - Evaluation https://ftisiot.net/categories/evaluation/ diff --git a/categories/json/index.html b/categories/json/index.html index ff3536ab..44aec765 100644 --- a/categories/json/index.html +++ b/categories/json/index.html @@ -90,6 +90,36 @@

+
+
+
+ + + +
+

How to query JSON in MySQL with JSON_CONTAINS

+ +
+
+
+
+

+ +
diff --git a/categories/json/index.xml b/categories/json/index.xml index ee11f846..8b0c4bea 100644 --- a/categories/json/index.xml +++ b/categories/json/index.xml @@ -6,8 +6,15 @@ Recent content in json on ftisiot ideas about food and life Hugo -- gohugo.io en-us - Fri, 02 Feb 2024 11:25:54 +0100 + Fri, 01 Mar 2024 10:53:23 +0100 + + How to query JSON in MySQL with JSON_CONTAINS + https://ftisiot.net/mysqljson/query-json-contains-mysql/ + Fri, 01 Mar 2024 10:53:23 +0100 + https://ftisiot.net/mysqljson/query-json-contains-mysql/ + <p>You can query a JSON document in MySQL to find content within it with:</p> <ul> <li>The <code>JSON_CONTAINS</code> function that will return if a JSON document is contained within another JSON document. The function returns <code>1</code> if the document is contained, <code>0</code> elsewhere.</li> <li>The <code>JSON_CONTAINS</code> function that will return if a JSON document path is contained within another JSON document. The function returns <code>1</code> if the document is contained, <code>0</code> elsewhere.</li> </ul> + How to load JSON data in PostgreSQL with the COPY command https://ftisiot.net/postgresqljson/load-json-data-with-postgresql-copy/ diff --git a/categories/json/page/2/index.html b/categories/json/page/2/index.html index 6fc2a3b0..4dd5693e 100644 --- a/categories/json/page/2/index.html +++ b/categories/json/page/2/index.html @@ -90,6 +90,38 @@

+ +

+ +
diff --git a/categories/json/page/3/index.html b/categories/json/page/3/index.html index 787efe2f..c2c065e6 100644 --- a/categories/json/page/3/index.html +++ b/categories/json/page/3/index.html @@ -90,6 +90,32 @@

+
+
+
+ + + +
+

How to concatenate two JSON documents in PostgreSQL®?

+ +
+
+
+
+ + +
diff --git a/categories/json/page/4/index.html b/categories/json/page/4/index.html index 17b33b6c..b9271486 100644 --- a/categories/json/page/4/index.html +++ b/categories/json/page/4/index.html @@ -90,6 +90,32 @@

+
+ +
+ + +
diff --git a/categories/json_contains/index.html b/categories/json_contains/index.html new file mode 100644 index 00000000..6b4e2ee7 --- /dev/null +++ b/categories/json_contains/index.html @@ -0,0 +1,173 @@ + + + + + + + + + + + Categories • ftisiot ideas about food and life + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+

json_contains

+

+ + + + +

+
+ + + + + + +
+
+ +
+ +
+
+ + + + +
+
+
+
+ + + +
+

How to query JSON in MySQL with JSON_CONTAINS

+ +
+
+
+
+
+ + + +
+
+ +
+ + + + + +
+ +
+ + +
+

+ Story logo +

+

+ © 2024 +

+
+ + + + + + + + diff --git a/categories/json_contains/index.xml b/categories/json_contains/index.xml new file mode 100644 index 00000000..fbed5e8b --- /dev/null +++ b/categories/json_contains/index.xml @@ -0,0 +1,19 @@ + + + + json_contains on ftisiot ideas about food and life + https://ftisiot.net/categories/json_contains/ + Recent content in json_contains on ftisiot ideas about food and life + Hugo -- gohugo.io + en-us + Fri, 01 Mar 2024 10:53:23 +0100 + + + How to query JSON in MySQL with JSON_CONTAINS + https://ftisiot.net/mysqljson/query-json-contains-mysql/ + Fri, 01 Mar 2024 10:53:23 +0100 + https://ftisiot.net/mysqljson/query-json-contains-mysql/ + <p>You can query a JSON document in MySQL to find content within it with:</p> <ul> <li>The <code>JSON_CONTAINS</code> function that will return if a JSON document is contained within another JSON document. The function returns <code>1</code> if the document is contained, <code>0</code> elsewhere.</li> <li>The <code>JSON_CONTAINS</code> function that will return if a JSON document path is contained within another JSON document. The function returns <code>1</code> if the document is contained, <code>0</code> elsewhere.</li> </ul> + + + diff --git a/categories/json_contains/page/1/index.html b/categories/json_contains/page/1/index.html new file mode 100644 index 00000000..8f3d0f0b --- /dev/null +++ b/categories/json_contains/page/1/index.html @@ -0,0 +1,10 @@ + + + + https://ftisiot.net/categories/json_contains/ + + + + + + diff --git a/categories/json_contains_path/index.html b/categories/json_contains_path/index.html new file mode 100644 index 00000000..059ad2c0 --- /dev/null +++ b/categories/json_contains_path/index.html @@ -0,0 +1,173 @@ + + + + + + + + + + + Categories • ftisiot ideas about food and life + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+

json_contains_path

+

+ + + + +

+
+ + + + + + +
+
+ +
+ +
+
+ + + + +
+
+
+
+ + + +
+

How to query JSON in MySQL with JSON_CONTAINS

+ +
+
+
+
+
+ + + +
+
+ +
+ + + + + +
+ +
+ + +
+

+ Story logo +

+

+ © 2024 +

+
+ + + + + + + + diff --git a/categories/json_contains_path/index.xml b/categories/json_contains_path/index.xml new file mode 100644 index 00000000..da49f555 --- /dev/null +++ b/categories/json_contains_path/index.xml @@ -0,0 +1,19 @@ + + + + json_contains_path on ftisiot ideas about food and life + https://ftisiot.net/categories/json_contains_path/ + Recent content in json_contains_path on ftisiot ideas about food and life + Hugo -- gohugo.io + en-us + Fri, 01 Mar 2024 10:53:23 +0100 + + + How to query JSON in MySQL with JSON_CONTAINS + https://ftisiot.net/mysqljson/query-json-contains-mysql/ + Fri, 01 Mar 2024 10:53:23 +0100 + https://ftisiot.net/mysqljson/query-json-contains-mysql/ + <p>You can query a JSON document in MySQL to find content within it with:</p> <ul> <li>The <code>JSON_CONTAINS</code> function that will return if a JSON document is contained within another JSON document. The function returns <code>1</code> if the document is contained, <code>0</code> elsewhere.</li> <li>The <code>JSON_CONTAINS</code> function that will return if a JSON document path is contained within another JSON document. The function returns <code>1</code> if the document is contained, <code>0</code> elsewhere.</li> </ul> + + + diff --git a/categories/json_contains_path/page/1/index.html b/categories/json_contains_path/page/1/index.html new file mode 100644 index 00000000..d3af8bc3 --- /dev/null +++ b/categories/json_contains_path/page/1/index.html @@ -0,0 +1,10 @@ + + + + https://ftisiot.net/categories/json_contains_path/ + + + + + + diff --git a/categories/mysql/index.html b/categories/mysql/index.html index 166e108c..433823d3 100644 --- a/categories/mysql/index.html +++ b/categories/mysql/index.html @@ -90,6 +90,36 @@

+
+
+
+ + + +
+

How to query JSON in MySQL with JSON_CONTAINS

+ +
+
+
+
+

+ +
diff --git a/categories/mysql/index.xml b/categories/mysql/index.xml index 864d6ec4..f10ab57b 100644 --- a/categories/mysql/index.xml +++ b/categories/mysql/index.xml @@ -6,8 +6,15 @@ Recent content in mysql on ftisiot ideas about food and life Hugo -- gohugo.io en-us - Mon, 12 Feb 2024 14:43:29 +0100 + Fri, 01 Mar 2024 10:53:23 +0100 + + How to query JSON in MySQL with JSON_CONTAINS + https://ftisiot.net/mysqljson/query-json-contains-mysql/ + Fri, 01 Mar 2024 10:53:23 +0100 + https://ftisiot.net/mysqljson/query-json-contains-mysql/ + <p>You can query a JSON document in MySQL to find content within it with:</p> <ul> <li>The <code>JSON_CONTAINS</code> function that will return if a JSON document is contained within another JSON document. The function returns <code>1</code> if the document is contained, <code>0</code> elsewhere.</li> <li>The <code>JSON_CONTAINS</code> function that will return if a JSON document path is contained within another JSON document. The function returns <code>1</code> if the document is contained, <code>0</code> elsewhere.</li> </ul> + How to CONCAT in MySQL https://ftisiot.net/posts/mysql-concat/ diff --git a/categories/mysql/page/2/index.html b/categories/mysql/page/2/index.html index 9ec15a16..8cbf9366 100644 --- a/categories/mysql/page/2/index.html +++ b/categories/mysql/page/2/index.html @@ -90,6 +90,32 @@

+ +

+ +
diff --git a/categories/page/10/index.html b/categories/page/10/index.html index 6889fd94..1b819540 100644 --- a/categories/page/10/index.html +++ b/categories/page/10/index.html @@ -90,6 +90,58 @@

+ +

+ + +
+ +
+ +
diff --git a/categories/page/2/index.html b/categories/page/2/index.html index 87bb7dc0..c93121eb 100644 --- a/categories/page/2/index.html +++ b/categories/page/2/index.html @@ -96,17 +96,17 @@

@@ -122,17 +122,17 @@

@@ -148,17 +148,17 @@

@@ -174,17 +174,17 @@

@@ -200,17 +200,17 @@

@@ -226,17 +226,17 @@

@@ -252,17 +252,17 @@

@@ -278,17 +278,17 @@

@@ -304,17 +304,17 @@

@@ -330,17 +330,17 @@

diff --git a/categories/page/3/index.html b/categories/page/3/index.html index 446fdff0..272408b3 100644 --- a/categories/page/3/index.html +++ b/categories/page/3/index.html @@ -96,17 +96,17 @@

@@ -122,17 +122,17 @@

@@ -148,17 +148,17 @@

@@ -174,17 +174,17 @@

@@ -200,17 +200,17 @@

@@ -226,17 +226,17 @@

@@ -252,17 +252,17 @@

@@ -278,17 +278,17 @@

@@ -304,17 +304,17 @@

@@ -330,17 +330,17 @@

diff --git a/categories/page/4/index.html b/categories/page/4/index.html index 8a56f1c7..9ec823fa 100644 --- a/categories/page/4/index.html +++ b/categories/page/4/index.html @@ -96,17 +96,17 @@

@@ -122,17 +122,17 @@

@@ -148,17 +148,17 @@

@@ -174,17 +174,17 @@

@@ -200,17 +200,17 @@

@@ -226,17 +226,17 @@

@@ -252,17 +252,17 @@

@@ -278,17 +278,17 @@

@@ -304,17 +304,17 @@

@@ -330,17 +330,17 @@

diff --git a/categories/page/5/index.html b/categories/page/5/index.html index a11470d7..de9bdfa5 100644 --- a/categories/page/5/index.html +++ b/categories/page/5/index.html @@ -96,17 +96,17 @@

@@ -122,17 +122,17 @@

@@ -148,17 +148,17 @@

@@ -174,17 +174,17 @@

@@ -200,17 +200,17 @@

@@ -226,17 +226,17 @@

@@ -252,17 +252,17 @@

@@ -278,17 +278,17 @@

@@ -304,17 +304,17 @@

@@ -330,17 +330,17 @@

diff --git a/categories/page/6/index.html b/categories/page/6/index.html index 9c67a830..a89e6752 100644 --- a/categories/page/6/index.html +++ b/categories/page/6/index.html @@ -96,17 +96,17 @@

@@ -122,17 +122,17 @@

@@ -148,17 +148,17 @@

@@ -174,17 +174,17 @@

@@ -200,17 +200,17 @@

@@ -226,17 +226,17 @@

@@ -252,17 +252,17 @@

@@ -278,17 +278,17 @@

@@ -304,17 +304,17 @@

@@ -330,17 +330,17 @@

diff --git a/categories/page/7/index.html b/categories/page/7/index.html index 1a14196d..3ff76da5 100644 --- a/categories/page/7/index.html +++ b/categories/page/7/index.html @@ -96,17 +96,17 @@

@@ -122,17 +122,17 @@

@@ -148,17 +148,17 @@

@@ -174,17 +174,17 @@

@@ -200,17 +200,17 @@

@@ -226,17 +226,17 @@

@@ -252,17 +252,17 @@

@@ -278,17 +278,17 @@

@@ -304,17 +304,17 @@

@@ -330,17 +330,17 @@

diff --git a/categories/page/8/index.html b/categories/page/8/index.html index 4ba866c1..43e6b05a 100644 --- a/categories/page/8/index.html +++ b/categories/page/8/index.html @@ -96,17 +96,17 @@

@@ -122,17 +122,17 @@

@@ -148,17 +148,17 @@

@@ -174,17 +174,17 @@

@@ -200,17 +200,17 @@

@@ -226,17 +226,17 @@

@@ -252,17 +252,17 @@

@@ -278,17 +278,17 @@

@@ -304,17 +304,17 @@

@@ -330,17 +330,17 @@

diff --git a/categories/page/9/index.html b/categories/page/9/index.html index a5b9e1c1..fd190561 100644 --- a/categories/page/9/index.html +++ b/categories/page/9/index.html @@ -96,17 +96,17 @@

@@ -122,17 +122,17 @@

@@ -148,17 +148,17 @@

@@ -174,17 +174,17 @@

@@ -200,17 +200,17 @@

@@ -226,17 +226,17 @@

@@ -252,17 +252,17 @@

@@ -278,17 +278,17 @@

@@ -304,17 +304,17 @@

@@ -330,17 +330,17 @@

diff --git a/index.html b/index.html index 4dc8de9d..e6bc117b 100644 --- a/index.html +++ b/index.html @@ -89,6 +89,36 @@

+
+
+
+
+ + + +
+

How to query JSON in MySQL with JSON_CONTAINS

+ +
+
+
+
+
+ +
@@ -327,32 +357,6 @@

-
-
-
-
- - - -
-

re:Invent: Accelerate Generative AI development with Integrated Data Platforms

- -
-
-
-
-
- -

diff --git a/index.json b/index.json index 9610ff0a..7763c1aa 100644 --- a/index.json +++ b/index.json @@ -1 +1 @@ -[{"categories":null,"content":"","keywords":null,"title":"AI","uri":"https://ftisiot.net/categories/ai/"},{"categories":null,"content":"","keywords":null,"title":"Categories","uri":"https://ftisiot.net/categories/"},{"categories":null,"content":"Mastodon Francesco comes from Verona, Italy 🇮🇹 and works as a Staff Developer Advocate at Aiven. With his many years of experience as a data analyst, he has stories to tell and advice for data-wranglers everywhere. Francesco loves sharing knowledge with others as a speaker and writer, and is on a mission to defend the world from bad Italian food!!","keywords":null,"title":"Francesco Tisiot Ideas!","uri":"https://ftisiot.net/"},{"categories":["PostgreSQL","AI","Projects","Resources"],"content":"Everyone is now talking about AI, and modern databases like PostgreSQL® are increasingly being adopted in companies’ AI journey as sources of data or key pieces of the AI infrastructure. Moreover there’s a new set projects that are solving PostgreSQL problems with AI.\n","keywords":null,"title":"List of PostgreSQL® AI Projects and Resources","uri":"https://ftisiot.net/posts/list-of-postgresql-ai-resources/"},{"categories":null,"content":"","keywords":null,"title":"postgresql","uri":"https://ftisiot.net/categories/postgresql/"},{"categories":null,"content":"","keywords":null,"title":"Posts","uri":"https://ftisiot.net/posts/"},{"categories":null,"content":"","keywords":null,"title":"Projects","uri":"https://ftisiot.net/categories/projects/"},{"categories":null,"content":"","keywords":null,"title":"Resources","uri":"https://ftisiot.net/categories/resources/"},{"categories":["PostgreSQL","SQL",null,"isnull","coalesce"],"content":"A boolean value should only contain two values, True or False, but is it correct? Usually people assume so, but sometimes miss the fact that there could be the absence of the value all-together. In databases this is absence is usually stored as NULL and this blog showcases how to find them, use them properly and 11 lessons to learn to be a NULL Pro!\nKeep in mind, it’s not only booleans that can contain NULL values, it’s all the columns where you don’t define a NOT NULL constraint!\n","keywords":null,"title":"11 Lessons to learn when using NULLs in PostgreSQL®","uri":"https://ftisiot.net/posts/postgresql-isnull/"},{"categories":null,"content":"","keywords":null,"title":"coalesce","uri":"https://ftisiot.net/categories/coalesce/"},{"categories":null,"content":"","keywords":null,"title":"isnull","uri":"https://ftisiot.net/categories/isnull/"},{"categories":null,"content":"","keywords":null,"title":"SQL","uri":"https://ftisiot.net/categories/sql/"},{"categories":null,"content":"","keywords":null,"title":"Concat","uri":"https://ftisiot.net/categories/concat/"},{"categories":null,"content":"","keywords":null,"title":"Concatenation","uri":"https://ftisiot.net/categories/concatenation/"},{"categories":["MySQL","Concatenation","Concat","String"],"content":"One of the most common tasks with strings is concatenation! This blog post showcases several techniques to perform it with MySQL.\n","keywords":null,"title":"How to CONCAT in MySQL","uri":"https://ftisiot.net/posts/mysql-concat/"},{"categories":null,"content":"","keywords":null,"title":"mysql","uri":"https://ftisiot.net/categories/mysql/"},{"categories":null,"content":"","keywords":null,"title":"String","uri":"https://ftisiot.net/categories/string/"},{"categories":null,"content":"","keywords":null,"title":"COPY","uri":"https://ftisiot.net/categories/copy/"},{"categories":["PostgreSQL","JSON","COPY","jq"],"content":"You have a JSON dataset that you want to upload to a PostgreSQL table containing properly formatted rows and columns… How do you do it?\nAll the main sources like my own blog and others tell you to load the JSON in a dedicated temporary table containing a unique JSON column, then parse it and load into the target table. However there could be another way, avoiding the temp table!\n","keywords":null,"title":"How to load JSON data in PostgreSQL with the COPY command","uri":"https://ftisiot.net/postgresqljson/load-json-data-with-postgresql-copy/"},{"categories":null,"content":"","keywords":null,"title":"jq","uri":"https://ftisiot.net/categories/jq/"},{"categories":null,"content":"","keywords":null,"title":"json","uri":"https://ftisiot.net/categories/json/"},{"categories":null,"content":"","keywords":null,"title":"DataLoad","uri":"https://ftisiot.net/categories/dataload/"},{"categories":["PostgreSQL","StackOverflow","StackExchange","DataLoad"],"content":"How to load StackOverflow StackExchange data in a PostgreSQL® database!\n","keywords":null,"title":"Load StackOverflow’s StackExchange data in Postgresql®","uri":"https://ftisiot.net/posts/stackoverflow-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"StackExchange","uri":"https://ftisiot.net/categories/stackexchange/"},{"categories":null,"content":"","keywords":null,"title":"StackOverflow","uri":"https://ftisiot.net/categories/stackoverflow/"},{"categories":["MySQL","Sorting","1brows"],"content":"Earlier this month I wrote a piece on solving Gunnar Morling interesting 1 billion rows challenge in PostgreSQL and ClickHouse. Since Aiven provides also MySQL, I wanted to give it a try. TLDR; The results are much slower than PG and ClickHouse, do you have any suggestion on how to improve?\n","keywords":null,"title":"1 billion rows challenge in MySQL","uri":"https://ftisiot.net/posts/1browsmysql/"},{"categories":null,"content":"","keywords":null,"title":"1brows","uri":"https://ftisiot.net/categories/1brows/"},{"categories":null,"content":"","keywords":null,"title":"Sorting","uri":"https://ftisiot.net/categories/sorting/"},{"categories":["PostgreSQL","substr"],"content":"Need to extract a specific substring out of a text in PostgreSQL®? Read here how!\n","keywords":null,"title":"How to use PostgreSQL® SUBSTRING","uri":"https://ftisiot.net/posts/postgresql-substr/"},{"categories":null,"content":"","keywords":null,"title":"substr","uri":"https://ftisiot.net/categories/substr/"},{"categories":null,"content":"Why PostgreSQL matters in the AI space as source, central component and target.\n","keywords":null,"title":"Finding PostgreSQL’s fit in the AI space","uri":"https://ftisiot.net/talks/postgresql-fit-ai/"},{"categories":null,"content":"","keywords":null,"title":"Talks","uri":"https://ftisiot.net/talks/"},{"categories":["PostgreSQL","ClickHouse","Sorting"],"content":"Last week the good old Gunnar Morling launched an interesting challenge about ordering 1 billion rows in Java. Like my ex colleague and friend Robin Moffat, I’m not at all a Java expert, and while Robin used DuckDB to solve the challenge, I did the same with PostgreSQL and ClickHouse.\n","keywords":null,"title":"1 billion rows challenge in PostgreSQL and ClickHouse","uri":"https://ftisiot.net/posts/1brows/"},{"categories":null,"content":"","keywords":null,"title":"ClickHouse","uri":"https://ftisiot.net/categories/clickhouse/"},{"categories":null,"content":"Generative AI is revolutionizing how we work and interact. Yet for generative AI applications relying on private, regulated, or commercially valuable data, feeding the model with the right information is crucial. Failure could result in adverse consequences such as poor performance, confidential information exposure, or regulatory requirement breaches. An integrated data platform is a powerful way to accelerate the development of generative AI applications by providing real-time data feeds, consolidating inputs from different sources, and defining clear information boundaries.","keywords":null,"title":"Accelerate Generative AI development with Integrated Data Platforms","uri":"https://ftisiot.net/talks/accelerate-gen-ai-integrated-data-platform/"},{"categories":null,"content":"When attacking any system, taking control of its central nervous system is the first step in infiltrating the core infrastructure and gaining control over its vital functions. Translating this to organization data, a clear target is Apache Kafka, the data hub increasingly adopted for mission-critical systems. This session explores the topic of attacking and defending Apache Kafka, shedding light on potential threats, attack vectors, and countermeasures.\nInitially, we’ll focus on understanding the potential attack surface of Apache Kafka.","keywords":null,"title":"Attacking (and defending) Apache Kafka","uri":"https://ftisiot.net/talks/attack-defend-apache-kafka/"},{"categories":null,"content":"","keywords":null,"title":"ElasticSearch","uri":"https://ftisiot.net/categories/elasticsearch/"},{"categories":null,"content":"","keywords":null,"title":"Kafka Connect","uri":"https://ftisiot.net/categories/kafka-connect/"},{"categories":["Kafka Connect","OpenSearch","ElasticSearch","timestamp","unix time"],"content":"When sinking unix timestamps from Apache Kafka to OpenSearch/ElasticSearch using the dedicated connector, they are not recognized by default as timestamp in the target tech.\n","keywords":null,"title":"Kafka Connect sink to OpenSearch/ElasticSearch: how to sink unix timestamps","uri":"https://ftisiot.net/posts/kafka_connect_sink_elasticsearch_opensearch_timestamp/"},{"categories":null,"content":"","keywords":null,"title":"OpenSearch","uri":"https://ftisiot.net/categories/opensearch/"},{"categories":null,"content":"","keywords":null,"title":"timestamp","uri":"https://ftisiot.net/categories/timestamp/"},{"categories":null,"content":"","keywords":null,"title":"unix time","uri":"https://ftisiot.net/categories/unix-time/"},{"categories":null,"content":"","keywords":null,"title":"Apache Kafka","uri":"https://ftisiot.net/categories/apache-kafka/"},{"categories":["Apache Kafka","REST APIs","Karapace"],"content":"You have an Apache Kafka topic that you want to consume via REST APIs (think curl or just a web browser), how to do it?\nThe reply is Karapace an Open Source (Apache 2.0) tool providing Schema Registry and REST proxy functionality.\nLet’s check out how to quickly run it on Docker.\nStep 1: the Apache Kafka® Cluster You need an Apache Kafka cluster up \u0026 running, if you have one already you can skip to the next section.","keywords":null,"title":"Consume Apache Kafka® messages via REST APIs","uri":"https://ftisiot.net/posts/kafka-consume-http/"},{"categories":null,"content":"","keywords":null,"title":"Karapace","uri":"https://ftisiot.net/categories/karapace/"},{"categories":null,"content":"","keywords":null,"title":"REST APIs","uri":"https://ftisiot.net/categories/rest-apis/"},{"categories":null,"content":"\nUseful Links Aiven Signup Code examples to run with Aiven for Apache Flink Flink JDBC SQL Connector Flink SQL CDC Connecto for PostgreSQL ","keywords":null,"title":"From Batch to Streaming Data Pipeline Evolution","uri":"https://ftisiot.net/talks/from-batch-to-streaming-data-pipeline-evolution/"},{"categories":["mysql","json","tabulate"],"content":"You can tabulate a JSON document (retrieve it as a row) in MySQL with the JSON_TABLE function.\n","keywords":null,"title":"How to tabulate a JSON document in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-tabulate-JSON-document-mysql/"},{"categories":null,"content":"","keywords":null,"title":"tabulate","uri":"https://ftisiot.net/categories/tabulate/"},{"categories":["mysql","json","remove"],"content":"You can remove a field from JSON document in MySQL with the JSON_REMOVE function.\n","keywords":null,"title":"How to remove a field in a JSON document in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-remove-field-JSON-document-mysql/"},{"categories":null,"content":"","keywords":null,"title":"remove","uri":"https://ftisiot.net/categories/remove/"},{"categories":["mysql","json","insert"],"content":"You can insert a field in a JSON document in MySQL with the JSON_INSERT function.\n","keywords":null,"title":"How to insert a field in a JSON document in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-insert-field-JSON-document-mysql/"},{"categories":null,"content":"","keywords":null,"title":"insert","uri":"https://ftisiot.net/categories/insert/"},{"categories":null,"content":"","keywords":null,"title":"edit","uri":"https://ftisiot.net/categories/edit/"},{"categories":["mysql","json","edit"],"content":"You can edit a JSON document in MySQL with:\nThe JSON_SET function that will replace values for JSON paths that exists and add values for the ones that don’t exist. The JSON_REPLACE function that will replace values for JSON paths that exists and ignore the ones that don’t exist. ","keywords":null,"title":"How to edit a JSON document in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-edit-JSON-document-mysql/"},{"categories":["mysql","json","merge"],"content":"You can merge two JSON documents in MySQL with:\nthe JSON_MERGE_PRESERVE function to concatenate the document values the JSON_MERGE_PATCH function to keep the latest value for each key ","keywords":null,"title":"How to merge JSON documents in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-merge-JSON-documents-mysql/"},{"categories":null,"content":"","keywords":null,"title":"merge","uri":"https://ftisiot.net/categories/merge/"},{"categories":null,"content":"","keywords":null,"title":"create","uri":"https://ftisiot.net/categories/create/"},{"categories":["mysql","json","create"],"content":"You can create a JSON document from fields in Mysql® with the JSON_OBJECT function\n","keywords":null,"title":"How to create a JSON document from fields in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-create-JSON-document-from-fields-mysql/"},{"categories":null,"content":"","keywords":null,"title":"extract","uri":"https://ftisiot.net/categories/extract/"},{"categories":["mysql","json","extract","types"],"content":"To get the type of a JSON item in MySQL you need to use the JSON_TYPE function.\n","keywords":null,"title":"How to get the JSON field types in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-get-json-field-types-mysql/"},{"categories":null,"content":"","keywords":null,"title":"types","uri":"https://ftisiot.net/categories/types/"},{"categories":null,"content":"","keywords":null,"title":"array","uri":"https://ftisiot.net/categories/array/"},{"categories":["mysql","json","extract","array"],"content":"To extract an item from an array in MySQL you need to use the -\u003e operator and the [item_number] JSON Path Syntax.\n","keywords":null,"title":"How to extract an item from an array in a JSON object in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-extract-field-from-array-json-mysql/"},{"categories":["mysql","json","extract","JSON_EXTRACT"],"content":"MySQL® offers three ways to extract fields from a JSON object:\nthe -\u003e operator to extract the field as JSON the -\u003e\u003e operator to extract the field as text the JSON_EXTRACT function Both operators use the JSON Path Syntax\n","keywords":null,"title":"How to extract a field from a JSON object in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-extract-field-from-json-mysql/"},{"categories":null,"content":"","keywords":null,"title":"JSON_EXTRACT","uri":"https://ftisiot.net/categories/json_extract/"},{"categories":["mysql","json","load"],"content":"To load JSON data into a MySQL column you need to include it as string.\n","keywords":null,"title":"How to load JSON data in MySQL?","uri":"https://ftisiot.net/mysqljson/how-to-load-json-mysql/"},{"categories":null,"content":"","keywords":null,"title":"load","uri":"https://ftisiot.net/categories/load/"},{"categories":["mysql","json","howto"],"content":"This series covers how to solve common problems on JSON datasets with MySQL and it includes (links will appear once the target pages are up):\n","keywords":null,"title":"How to JSON in MySQL","uri":"https://ftisiot.net/mysqljson/main/"},{"categories":null,"content":"","keywords":null,"title":"howto","uri":"https://ftisiot.net/categories/howto/"},{"categories":null,"content":"","keywords":null,"title":"Data","uri":"https://ftisiot.net/categories/data/"},{"categories":null,"content":"","keywords":null,"title":"Data Pipelines","uri":"https://ftisiot.net/categories/data-pipelines/"},{"categories":null,"content":"","keywords":null,"title":"Platforms","uri":"https://ftisiot.net/categories/platforms/"},{"categories":["Data","Platforms","Data Pipelines"],"content":"In the modern world, it’s rare to have the data in the same shape and platform from the beginning till the end of its journey. Yes, some technologies can achieve quite a good range of functionalities but sometimes at the expense of precision, developer experience or performance. Therefore, to achieve better or faster results, people might select a new tool for a precise task and start an implementation and integration process to move the data around.","keywords":null,"title":"Pros and Cons of Multi Step Data Platforms","uri":"https://ftisiot.net/posts/pros-and-cons-of-multi-step-data-platforms/"},{"categories":null,"content":"","keywords":null,"title":"DevRel","uri":"https://ftisiot.net/categories/devrel/"},{"categories":null,"content":"","keywords":null,"title":"Growth","uri":"https://ftisiot.net/categories/growth/"},{"categories":["DevRel","Growth"],"content":" So… what does a Staff Developer Advocate do, and how is it different from the Senior Developer Advocate role you were doing before?\nI got this question three times in the last two weeks after my promotion from Senior to Staff (🎉🎉🎉🎉), from various people in my network.\n","keywords":null,"title":"So… what does a Staff Developer Advocate do?","uri":"https://ftisiot.net/posts/staff-da/"},{"categories":null,"content":"How and Why using Schema Registry with Apache Kafka\n","keywords":null,"title":"Boost Apache Kafka with Schema Registry","uri":"https://ftisiot.net/talks/boost-kafka-schemas/"},{"categories":null,"content":"A talk about JSON handling in PostgreSQL: from data loading to query to indexing.\n","keywords":null,"title":"Learn PostgreSQL JSON with Pizza","uri":"https://ftisiot.net/talks/pg-json/"},{"categories":null,"content":"Strings are one of the most used types in databases; they can store pretty much any data and don’t enforce any rules on the inserted input. This talk showcases the risk of using strings and how to mitigate them to ensure data quality.\n","keywords":null,"title":"Fix Your Strings!","uri":"https://ftisiot.net/talks/fix-your-strings/"},{"categories":["postgresql","json","jsonb","index","query"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB. This doc showcases how to load JSON data into a column.\n","keywords":null,"title":"How to load JSON data in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-load-json-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"index","uri":"https://ftisiot.net/categories/index/"},{"categories":null,"content":"","keywords":null,"title":"jsonb","uri":"https://ftisiot.net/categories/jsonb/"},{"categories":null,"content":"","keywords":null,"title":"query","uri":"https://ftisiot.net/categories/query/"},{"categories":null,"content":"","keywords":null,"title":"data-platforms","uri":"https://ftisiot.net/categories/data-platforms/"},{"categories":null,"content":"","keywords":null,"title":"design","uri":"https://ftisiot.net/categories/design/"},{"categories":null,"content":"","keywords":null,"title":"soft","uri":"https://ftisiot.net/categories/soft/"},{"categories":["soft","data-platforms","design"],"content":"This page contains all the links related to the SOFT (Scalable Observable Fast Trustworthy) methodology for defining robust data platforms.\n","keywords":null,"title":"SOFT Methodology","uri":"https://ftisiot.net/soft/"},{"categories":null,"content":"","keywords":null,"title":"scalability","uri":"https://ftisiot.net/categories/scalability/"},{"categories":["scalability","data-platforms"],"content":"Technical scalability is one of the main drivers of a data platform, as mentioned in the SOFT methodology. But what are the options? In this blog we’ll evaluate the direction of scalability and the tradeoffs you might encounter in the decision process.\n","keywords":null,"title":"What are the directions of technical data platforms scalability?","uri":"https://ftisiot.net/posts/tech-scalability/"},{"categories":null,"content":"","keywords":null,"title":"fields","uri":"https://ftisiot.net/categories/fields/"},{"categories":["postgresql","json","jsonb","remove","fields"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, and provides two different ways to tabulate a JSON to a record:\n","keywords":null,"title":"How to tabulate a JSON to a record in PostgreSQL®","uri":"https://ftisiot.net/postgresqljson/how-to-tabulate-json-document-to-a-record-postgresql/"},{"categories":["postgresql","json","jsonb","remove","fields"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, and provides two different ways to tabulate a JSON to a recordset:\n","keywords":null,"title":"How to tabulate a JSON to a recordset in PostgreSQL®","uri":"https://ftisiot.net/postgresqljson/how-to-tabulate-json-document-to-a-recordset-postgresql/"},{"categories":["postgresql","json","jsonb","edit"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the jsonb_set function to remove the null values for JSONB columns.\n","keywords":null,"title":"How to edit a JSON object in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-edit-json-postgresql/"},{"categories":["postgresql","json","jsonb","remove","items","array"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the - operator to remove an item from an array.\n","keywords":null,"title":"How to remove an item from a JSON array in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-remove-items-from-json-array-postgresql/"},{"categories":["postgresql","json","jsonb","remove","fields"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, and provides two different ways to remove fields from a JSON document:\n","keywords":null,"title":"How to remove fields from a JSON document in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-remove-fields-from-json-postgresql/"},{"categories":["postgresql","json","jsonb","remove","nulls"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the json_strip_nulls (jsonb_strip_nulls for JSONB) function to remove the null values.\n","keywords":null,"title":"How to remove nulls JSON object in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-remove-nulls-from-json-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"items","uri":"https://ftisiot.net/categories/items/"},{"categories":null,"content":"","keywords":null,"title":"nulls","uri":"https://ftisiot.net/categories/nulls/"},{"categories":null,"content":"","keywords":null,"title":"concatenate","uri":"https://ftisiot.net/categories/concatenate/"},{"categories":["postgresql","json","jsonb","concatenate"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the opearator || to concatenate two JSON objects.\n","keywords":null,"title":"How to concatenate two JSON documents in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-concatenate-two-json-docs-postgresql/"},{"categories":["postgresql","json","jsonb","create","array","key","value"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the function json_object (jsonb_object for JSONB) to create a JSON object from an array of key/value pairs.\n","keywords":null,"title":"How to create a JSON object from array of key/value pairs in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/howto-create-json-from-array-key-value-pairs-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"key","uri":"https://ftisiot.net/categories/key/"},{"categories":null,"content":"","keywords":null,"title":"value","uri":"https://ftisiot.net/categories/value/"},{"categories":["postgresql","json","jsonb","create","array","key","value"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the function json_object (jsonb_object for JSONB) to create a JSON object from two arrays of keys and values.\n","keywords":null,"title":"How to create a JSON object from keys and values arrays in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/howto-create-json-from-keys-and-values-arrays-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"convert","uri":"https://ftisiot.net/categories/convert/"},{"categories":["postgresql","json","jsonb","convert","array"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the function array_to_json (array_to_jsonb for JSONB) to create a JSON array from an existing array.\n","keywords":null,"title":"How to convert an array to a JSON array in PostgreSQL","uri":"https://ftisiot.net/postgresqljson/howto-convert-array-to-json-array-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"elements","uri":"https://ftisiot.net/categories/elements/"},{"categories":["postgresql","json","jsonb","elements","array"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the function json_build_array (jsonb_build_array for JSONB) to create a JSON array from a list of elements.\n","keywords":null,"title":"How to build a JSON array from a list of elements in PostgreSQL®","uri":"https://ftisiot.net/postgresqljson/how-to-build-json-array-from-elements-postgresql/"},{"categories":["postgresql","json","jsonb","keys"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use several functions to extract the keys and related values in tabular format.\n","keywords":null,"title":"How to parse JSON keys in PostgreSQL®","uri":"https://ftisiot.net/postgresqljson/how-to-parse-json-keys-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"keys","uri":"https://ftisiot.net/categories/keys/"},{"categories":["postgresql","json","jsonb","row","convert"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the function to_json (to_jsonb for JSONB) to convert a table row to a JSON object.\n","keywords":null,"title":"How to convert a table row to JSON in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-convert-table-row-json-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"row","uri":"https://ftisiot.net/categories/row/"},{"categories":["postgresql","json","jsonb","prettify"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the function json_pretty (jsonb_pretty for JSONB) to prettify the output.\n","keywords":null,"title":"How to prettify the JSON output in PostgreSQL®","uri":"https://ftisiot.net/postgresqljson/how-to-prettify-json-output-in-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"prettify","uri":"https://ftisiot.net/categories/prettify/"},{"categories":["postgresql","json","jsonb","parse","array"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, and provides several different ways to parse arrays from a JSON document:\n","keywords":null,"title":"How to parse JSON arrays in PostgreSQL?","uri":"https://ftisiot.net/postgresqljson/how-to-parse-json-arrays-in-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"parse","uri":"https://ftisiot.net/categories/parse/"},{"categories":["postgresql","json","jsonb"],"content":"","keywords":null,"title":"How to JSON in MySQL","uri":"https://ftisiot.net/mysqljson/"},{"categories":["postgresql","json","jsonb"],"content":"","keywords":null,"title":"How to JSON in PostgreSQL®","uri":"https://ftisiot.net/postgresqljson/"},{"categories":["postgresql","json","jsonb"],"content":"This series covers how to solve common problems on JSON datasets with PostgreSQL® and it includes (links will appear once the target pages are up):\n","keywords":null,"title":"How to JSON in PostgreSQL®","uri":"https://ftisiot.net/postgresqljson/main/"},{"categories":["postgresql","json","jsonb","extract"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, and provides several different ways to extract fields from a JSON document:\n","keywords":null,"title":"How to extract a field from a JSON object in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-extract-field-from-json-postgresql/"},{"categories":["postgresql","json","jsonb","types"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the function json_typeof (jsonb_typeof for JSONB) to extract the fields type.\n","keywords":null,"title":"How to get the JSON field types in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-get-json-field-types-postgresql/"},{"categories":["postgresql","json","jsonb","index","query"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB. This doc showcases how to index a JSONB column with a GIN index.\n","keywords":null,"title":"How to index and query a JSON object in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-index-and-query-json-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"contains","uri":"https://ftisiot.net/categories/contains/"},{"categories":["postgresql","json","jsonb","contains"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, and provides several different ways to check if a value/field from a JSON document:\n","keywords":null,"title":"How to check if JSON contains in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-check-JSON-contains-postgresql/"},{"categories":["postgresql","json","jsonb"],"content":"PostgreSQL® offers two types of data types to handle JSON data:\nJSON stores the JSON as text, performing a validation on the correctness of the JSON syntax JSONB optimizes the JSON storage in a custom binary format. Therefore, on top of validating the correctness of the JSON format, time is spent to properly parse and store the content. ","keywords":null,"title":"What are the differences between JSON or JSONB in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/what-are-the-differences-json-jsonb-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"Evaluation","uri":"https://ftisiot.net/categories/evaluation/"},{"categories":["Design","Data Platforms","Evaluation"],"content":"Companies are in a continuous motion: new requirements, new data streams, new technologies are popping up every day. When designing new data platforms supporting the needs of your company, failing to perform a complete assessment of the options available can have disastrous effects on a company’s capability to innovate, and making sure their data assets usable and reusable in the long term.\n","keywords":null,"title":"From data stack to data stuck: the risks of not asking the right data questions","uri":"https://ftisiot.net/posts/from-data-stack-to-data-stuck/"},{"categories":null,"content":"","keywords":null,"title":"Community","uri":"https://ftisiot.net/categories/community/"},{"categories":["PostgreSQL","Community"],"content":"I started following the #PGSQLPhriday initiative a couple months back but never had the time to properly sit down and write due to conference traveling. Therefore I was super happy to be at home this week and find out that PGSQL Phriday #003 theme is about the PostgreSQL community!\n","keywords":null,"title":"PostgreSQL Community and you","uri":"https://ftisiot.net/posts/postgresql-community/"},{"categories":null,"content":"","keywords":null,"title":"abstract","uri":"https://ftisiot.net/categories/abstract/"},{"categories":null,"content":"","keywords":null,"title":"conference","uri":"https://ftisiot.net/categories/conference/"},{"categories":["conference","abstract","writing"],"content":"If you’re reading this, there are good chances you’re thinking, writing or iterating over an abstract for a conference. The post is about little tips I learnt in more than 8 years of prepping for conferences and in 1 year or reviewing internal abstracts at Aiven before they are submitted for a conference.\n","keywords":null,"title":"Tips for Successful Conference Abstracts","uri":"https://ftisiot.net/posts/tips-for-abstract-writing/"},{"categories":null,"content":"","keywords":null,"title":"writing","uri":"https://ftisiot.net/categories/writing/"},{"categories":["InfluxDB","Query"],"content":"Sometimes you want to query a remote InfluxDB server to understand the data in it. This can be done via cURL as explained in the InfluxDB docs\n","keywords":null,"title":"How to query remote InfluxDB via cURL","uri":"https://ftisiot.net/posts/query_influxb_curl/"},{"categories":null,"content":"","keywords":null,"title":"InfluxDB","uri":"https://ftisiot.net/categories/influxdb/"},{"categories":null,"content":"Extract metadata from your existing data tools and build a queryable graph interface in PostgreSQL®\n","keywords":null,"title":"Put PostgreSQL at the center of your (meta)data universe!","uri":"https://ftisiot.net/talks/pg-metadata/"},{"categories":null,"content":"A deep dive into Kafka connect settings and pitfalls, analysing several tips to have a better experience when setting up a connector.\n","keywords":null,"title":"Breathe in Breathe out: get Kafka Connect settings right!","uri":"https://ftisiot.net/talks/breathe-in-breathe-out-kafka-connect/"},{"categories":null,"content":"","keywords":null,"title":"ApacheFlink","uri":"https://ftisiot.net/categories/apacheflink/"},{"categories":["ApacheFlink","Timestamps"],"content":"Sometimes when defining an Apache Flink® table using SQL we need to map an epoch timestamp and use it as record/message timestamp, this blog contains few tricks to get it right.\n","keywords":null,"title":"Convert Epoch to Timestamps in Apache Flink with \u003ccode\u003eTO_TIMESTAMP_LTZ\u003c/code\u003e","uri":"https://ftisiot.net/posts/apache-flink-to-timestamp-ltz/"},{"categories":null,"content":"","keywords":null,"title":"Timestamps","uri":"https://ftisiot.net/categories/timestamps/"},{"categories":null,"content":"","keywords":null,"title":"Connections","uri":"https://ftisiot.net/categories/connections/"},{"categories":["PGAdmin4","PostgreSQL","Connections","Import","JSON"],"content":"How to define a database connection in a JSON file that can be imported in PG Admin 4\n","keywords":null,"title":"Define a PostgreSQL database connection in JSON and import it in PGAdmin 4","uri":"https://ftisiot.net/posts/create_json_connection_pg_admin4/"},{"categories":null,"content":"","keywords":null,"title":"Import","uri":"https://ftisiot.net/categories/import/"},{"categories":null,"content":"","keywords":null,"title":"PGAdmin4","uri":"https://ftisiot.net/categories/pgadmin4/"},{"categories":null,"content":"","keywords":null,"title":"Activities","uri":"https://ftisiot.net/categories/activities/"},{"categories":null,"content":"","keywords":null,"title":"Food","uri":"https://ftisiot.net/categories/food/"},{"categories":["Verona","Food","Activities"],"content":"Now and then I get asked what to do and where to eat nearby Verona, so there, you have the list. I’ll update the list whenever needed\n","keywords":null,"title":"Suggestions on places/activities near Verona","uri":"https://ftisiot.net/suggestions-verona/"},{"categories":null,"content":"","keywords":null,"title":"Verona","uri":"https://ftisiot.net/categories/verona/"},{"categories":null,"content":"Collect, analyze, query your metadata to keep control over your data assets\n","keywords":null,"title":"Don’t get lost in data: Metadata to the rescue!","uri":"https://ftisiot.net/talks/metadata-parser-uptime/"},{"categories":null,"content":"A streaming anomaly detection system with Apache Kafka® and Apache Flink®\n","keywords":null,"title":"No pineapple on pizza! Streaming anomaly detection with Apache Kafka® and Apache Flink®","uri":"https://ftisiot.net/talks/anomaly-detection/"},{"categories":null,"content":"","keywords":null,"title":"Presenting","uri":"https://ftisiot.net/categories/presenting/"},{"categories":null,"content":"","keywords":null,"title":"Slides","uri":"https://ftisiot.net/categories/slides/"},{"categories":null,"content":"","keywords":null,"title":"Tips","uri":"https://ftisiot.net/categories/tips/"},{"categories":["Presenting","Tips","Slides"],"content":"Every time someone talks about slides design a great debate is generated. People have opinions and, guess what? Specifically in the area of public speaking, they seem to be quite vocal about them 🤣.\n","keywords":null,"title":"Yep, my slides are useless!","uri":"https://ftisiot.net/posts/useless-slides/"},{"categories":null,"content":"","keywords":null,"title":"apache-kafka","uri":"https://ftisiot.net/tag/apache-kafka/"},{"categories":null,"content":"","keywords":null,"title":"event-driven-applications","uri":"https://ftisiot.net/tag/event-driven-applications/"},{"categories":null,"content":"","keywords":null,"title":"flask","uri":"https://ftisiot.net/tag/flask/"},{"categories":null,"content":"\nUseful Links Apache Kafka docs GitHub Repo Aiven for Apache Kafka ","keywords":null,"title":"Flask Kafka","uri":"https://ftisiot.net/talks/flask-kafka/"},{"categories":null,"content":"","keywords":null,"title":"Tag","uri":"https://ftisiot.net/tag/"},{"categories":null,"content":"\nUseful Links Knapsack Problem Knapsack in PostgreSQL PostgreSQL 14 Search and Cycle Features Aiven ","keywords":null,"title":"Solving the Knapsack Problem with Recursive Queries and PostgreSQL","uri":"https://ftisiot.net/talks/knapsack-problem-pg/"},{"categories":null,"content":"\nUseful Links Talk recording JDBC source connector docs Debezium docs How to Debezium in Aiven docs JDBC source connector example Debezium source connector example Aiven ","keywords":null,"title":"JDBC Source Connector: What Could Go Wrong?","uri":"https://ftisiot.net/talks/kafka-jdbc-what-can-go-wrong/"},{"categories":["Apache Kafka","kcat","jq"],"content":"I was working on some demos recently on the Apache Kafka source connectors (hi #KafkaSummit!), and trying to display the stream of changes in the resulting Apache Kafka topic.\n","keywords":null,"title":"Beautify \u003ccode\u003ekcat\u003c/code\u003e consumer output by piping to \u003ccode\u003ejq\u003c/code\u003e","uri":"https://ftisiot.net/posts/jq-kcat-consumer/"},{"categories":null,"content":"","keywords":null,"title":"kcat","uri":"https://ftisiot.net/categories/kcat/"},{"categories":null,"content":"\nUseful Links Apache Kafka docs Apache Flink docs Apache Fink SQL client on Docker Build a Streaming data pipeline with Apache Kafka and Flink blog JDBC source connector example Debezium source connector example Aiven for Apache Kafka ","keywords":null,"title":"Apache Kafka and Flink: Stateful Streaming Data Pipelines made easy with SQL","uri":"https://ftisiot.net/talks/kafka-flink-sql/"},{"categories":null,"content":"","keywords":null,"title":"apache-flink","uri":"https://ftisiot.net/tag/apache-flink/"},{"categories":null,"content":"","keywords":null,"title":"sql","uri":"https://ftisiot.net/tag/sql/"},{"categories":null,"content":"","keywords":null,"title":"cdc","uri":"https://ftisiot.net/tag/cdc/"},{"categories":null,"content":"","keywords":null,"title":"debezium","uri":"https://ftisiot.net/tag/debezium/"},{"categories":null,"content":"\nUseful Links Apache Kafka docs Debezium docs How to Debezium in Aiven docs JDBC source connector example Debezium source connector example JDBC Source Connector: what could go wrong? Aiven for PostgreSQL ","keywords":null,"title":"I Don’t Want to Miss a Thing - Track Database Changes with Apache Kafka","uri":"https://ftisiot.net/talks/track-database-changes/"},{"categories":["work"],"content":"A month has already gone since my start at Aiven.io and it’s time for a first, and brief, look back at my experience so far together with few suggestions (even if nobody asks) for anyone that will follow my steps.\nTL;DR: The journey has been great, met several amazing people and learnt lots using cool tech! A bit shocked about food choices… but that’s life 🤌 !\n","keywords":null,"title":"A Month in Aiven.io","uri":"https://ftisiot.net/2021/01/27/a_month_in_aiven/"},{"categories":null,"content":"","keywords":null,"title":"work","uri":"https://ftisiot.net/categories/work/"},{"categories":["work"],"content":"Hi, I’m Francesco and recently joined Aiven.io as Developer Advocate!\nIn this first blog post, we’ll have a look at how to install and login to Aiven’s resources using the command line client.\nIf you’re new to Aiven or if you already know the platform but want to automate some tasks, the client allows you to perform the same tasks available on Aiven’s web console but from your preferred terminal.\n","keywords":null,"title":"First Steps within Aiven… the CLI!","uri":"https://ftisiot.net/2021/01/15/aiven_cli/"},{"categories":["work"],"content":"Now… What?\nMy previous post was looking back in my 8 years of Rittman Mead experience… But now it’s 2021… so… what’s next?\nI’m joining Aiven as Developer Advocate!\n","keywords":null,"title":"Looking Forward","uri":"https://ftisiot.net/2021/01/04/looking_forward/"},{"categories":["work"],"content":"It was February 2012 when I was meant to take a flight from a foggy Treviso Airport direction London Stansted. The fog created several problems, all passengers were taken by bus to Venice and we had to wait 3 hours before boarding on the plane. The flight 🛬 landed with an overall 4h of delay, not great if the scheduled arrival time was 8PM! I then caught a bus to Liverpool street and finally got lost while trying to reach my hotel.","keywords":null,"title":"Looking Back","uri":"https://ftisiot.net/2020/11/26/looking_back/"},{"categories":null,"content":"","keywords":null,"title":"public speaking","uri":"https://ftisiot.net/categories/public-speaking/"},{"categories":null,"content":"","keywords":null,"title":"Tech","uri":"https://ftisiot.net/categories/tech/"},{"categories":["public speaking","Tech"],"content":"Las week I shared a personal experience of talking to a small online audience (just one person) and how that episode made me think about my commitment to public talking and understanding that performing at best is still key for both the speaker and the audience.\nOne of the items that I explored was the Reflection bit: trying to understand what/why the paper/abstract didn’t work, why it didn’t attract people and what can be done to improve it.","keywords":null,"title":"What’s My (Talk) Age Again?","uri":"https://ftisiot.net/2020/11/02/whats-my-talk-age-again/"},{"categories":["conferences","public speaking","Tech"],"content":"2020 hasn’t been a great year, with Covid forcing people home and all major events moving from physical to virtual. At the same time, now is the perfect time for attendees: everyone is creating and sharing content via videos, blogs or talks in conferences. People that before had to choose wisely the “1 conference” where to spend their budget on, now can access for free (or reduced fees) content coming from a huge variety of organisations and speakers.","keywords":null,"title":"A Talk For One","uri":"https://ftisiot.net/2020/10/26/a-talk-for-one/"},{"categories":null,"content":"","keywords":null,"title":"conferences","uri":"https://ftisiot.net/categories/conferences/"},{"categories":null,"content":"","keywords":null,"title":"Analytics","uri":"https://ftisiot.net/categories/analytics/"},{"categories":["Analytics","Tech"],"content":"Oracle Analytics Server is out since several months and a common ask is to provide SSO with Kerberos Authentication.\nThe “old” OBIEE12c style Kerberos configuration is not working with OAS.\nOracle provided a solution to implement it via Apache Server and Oracle Access Manager Identity Asserter. All the info are published in Doc ID 2707401.1","keywords":null,"title":"Oracle Analytics Server and Kerberos Authentication","uri":"https://ftisiot.net/2020/09/18/oracle-analytics-server-and-kerberos-authentication/"},{"categories":null,"content":" ","keywords":null,"title":"Analytics Everywhere!","uri":"https://ftisiot.net/analytics-everywhere-webinar/"},{"categories":["Analytics","Tech"],"content":"I created a short video showing how you can register in Oracle Analytics Cloud 5.7 some Machine Learning models created in the Oracle Database and score data with a simple Data Flow, check it out\nhttps://www.youtube.com/watch?v=GZubKpWUA0U","keywords":null,"title":"Oracle Analytics Cloud 5.7: Use ML Models in the Database","uri":"https://ftisiot.net/2020/08/10/oracle-analytics-cloud-5-7-use-ml-models-in-the-database/"},{"categories":null,"content":"The 2019 end-of-year holiday period is approaching, before closing the laptop for few days it’s good to look back how the year went. It has been very busy working wise: client work, conference preparation and talks, blog posts and videos kept my time well occupied. I also had an amazing news in June, when, during Kscope 19, I was invited on the stage and announced as Oracle ACE Director\nCongratulations to new Oracle ACE Directors @ftisiot @thtechnology @fdmeeguru!","keywords":null,"title":"2019 a Year of Conferences and Much More!","uri":"https://ftisiot.net/2019/12/13/2019-a-year-of-conferences-and-much-more/"},{"categories":["conferences"],"content":"If you read this now and you wanted to submit for ITOUG Tech Days 2020…. well, bad luck, you’re too late! ITOUG Tech Days 2020 was closed last week with an astonishing record of submissions! This post will analyse a bit the numbers of the submissions using the magic Oracle Analytics Cloud.\nFirst of all, uploading the data and fixing the column settings. For example, we want to properly convert to Date our Submission Date (Data di invio in Italian).","keywords":null,"title":"ITOUG Call for Papers Submission Analysis","uri":"https://ftisiot.net/2019/07/30/itoug-call-for-papers-submission-analysis/"},{"categories":["Analytics","Tech"],"content":"Hello! After a long time I’m back to my personal blog! You can find all my Rittman Mead related blog posts here!\nRecently I’ve been doing some personal study around various areas including streaming, machine learning and data visualization and one of the tools that got my attention is Looker. I’ve initially heard about Looker from a Drill to Detail podcast from Mark Rittman and increasingly been hearing about it in conferences and use cases together with other cloud solutions like BigQuery, Snowflake and Fivetran.","keywords":null,"title":"Looker for OBIEE Experts: Introduction and Concepts","uri":"https://ftisiot.net/2018/08/23/looker-for-obiee-experts-introduction-and-concepts/"},{"categories":null,"content":"","keywords":null,"title":"itoug","uri":"https://ftisiot.net/categories/itoug/"},{"categories":["conferences","itoug"],"content":"I’m pleased to announce that, for the first time, a BI/Analytics track will be present at ITOUG!\nITOUG, the recently created Italian Oracle User Group, has been so far almost 100% DBA orientated. At the next event, which will be held on 8th June 2017 at UNA Century Hotel in Milan, we are opening a new BI/Analytics streams and looking for speakers.\nCall for papers is already open, visit http://www.itoug.it for more informations.","keywords":null,"title":"ITOUG Call for Papers is Open!","uri":"https://ftisiot.net/2017/02/28/itoug-call-for-papers-is-open/"},{"categories":null,"content":"For anybody on OBIEE 12c wanting to enable full SSL, Oracle provided within the OBIEE Documentation an explanation on how to set it up using demo certificates.\nHowever the usage of demo certificates gives the end user the annoying problem of needing to accept an exception to enter the website since the demo certificate wasn’t created for the server/domain where OBIEE is located (the same problem arises also with Smartview).","keywords":null,"title":"OBI12c SSL with Custom Certificates","uri":"https://ftisiot.net/2016/10/16/obi12c-ssl-with-custom-certificates/"},{"categories":["Analytics","Tech"],"content":"For anybody interested in how to remove or add Data Visualisation (also known as Visual Analyser) option to a specific role in OBIEE 12c, Oracle released Doc ID 2102444.1 which gives the detail about the procedure using WLST and the RevokeDVPermission.py (or GrantDVPermission.py) that should be present in the OBIEE12c Installation Middleware home by default.","keywords":null,"title":"Remove OBI12c Data Visualisation from OBIEE","uri":"https://ftisiot.net/2016/10/13/remove-obi12c-data-visualisation-from-obiee/"},{"categories":null,"content":"I’ve been working on OBIEE and Oracle products in general since 2008, it has been so far a great experience with an enormous amount of information being available freely in internet.\nWhen trying to solve problems this amount of information can be a treasure but also a risk since the information contained in any website can be partial, not relevant or in some cases completely wrong for the subject searched. As an unexperienced person (but also for experienced) it’s difficult to distinguish whether the content of a website can be followed and trusted and sometimes even replies to public forums can’t be a valid source since different problems provide the similar wrong behaviour and can be confused.","keywords":null,"title":"How to search the Cause of Errors","uri":"https://ftisiot.net/2016/10/12/how-to-search-the-cause-of-errors/"},{"categories":null,"content":"Hi All,\nI thought that including a post on the OBI related blogs and the owner twitter accounts, may be useful. The list will be enriched over time\n* [rittmanmead.com](http://www.rittmanmead.com): My company's blog, always source of good OBI articles * [rmoff.net](http://rmoff.net): [Robin Moffat](https://twitter.com/rmoff)'s (Oracle ACE) personal blog * [gianniceresa.com](https://gianniceresa.com): [Gianni Ceresa](https://twitter.com/G_Ceresa)'s personal blog * [dimensionality.ch](http://dimensionality.ch): [Christian Berg](https://twitter.com/Nephentur)'s (Oracle ACE Associate) personal blog * [gerardnico.com](http://gerardnico.com/): Nicolas Gerard's personal blog * [bisoftdiary.com](https://bisoftdiary.com/): [Andrew Fomin](https://twitter.","keywords":null,"title":"OBI Blogs to follow","uri":"https://ftisiot.net/2016/09/29/obi-blogs-to-follow/"},{"categories":null,"content":"Hi All,\nIf you already migrated to OBI12c you could experience, when printing to PDF a dashboard or analysis including performance tiles that the layout is not what expected.\n[caption width=“300” id=“attachment_37” align=“aligncenter”] Original Dashboard Layout[/caption] [caption width=“300” id=“attachment_36” align=“aligncenter”] PDF Print[/caption]The good news is that this has been recognised as a bug and if you are on 12.2.1.0.0 there is a patch available “Patch 22759083: BIEE 12C DASHBOARD PRINT TO PDF MISSING PERFORMANCE TILES FROM THE REPORT”.","keywords":null,"title":"OBI12c Performance Tiles PDF Print Error","uri":"https://ftisiot.net/2016/09/29/obi12c-performance-tiles-pdf-print-error/"},{"categories":null,"content":"","keywords":null,"title":"presentation","uri":"https://ftisiot.net/tag/presentation/"},{"categories":null,"content":"Check out Past and Future Speaking Activities!\nPlanned Speaking Activities Event Date Talk Pg Day Nordics 21st March Put PostgreSQL at the center of your metadata universe Pg Day Paris 23rd March Fix your strings Previous Speaking Activities 2022 Event Date Talk PG Conf EU 24th-29th October Put PostgreSQL at the center of your (meta)data universe! Quix Meetup 24th October 🎥 Breathe In, Breathe Out: Get Kafka Connect Configs Right! Current (ex Kafka Summit) 4th-5th October 🎥 Breathe In, Breathe Out: Get Kafka Connect Configs Right!","keywords":null,"title":"Speaking Activities","uri":"https://ftisiot.net/speaking-activities/"},{"categories":null,"content":"","keywords":null,"title":"speaking-activities","uri":"https://ftisiot.net/tag/speaking-activities/"},{"categories":null,"content":"","keywords":null,"title":"talks","uri":"https://ftisiot.net/tag/talks/"},{"categories":null,"content":"","keywords":null,"title":"FrancescoTisiot","uri":"https://ftisiot.net/tag/francescotisiot/"},{"categories":null,"content":"","keywords":null,"title":"FrancescoTisiot","uri":"https://ftisiot.net/categories/francescotisiot/"},{"categories":null,"content":"","keywords":null,"title":"ftisiot","uri":"https://ftisiot.net/tag/ftisiot/"},{"categories":null,"content":"","keywords":null,"title":"ftisiot","uri":"https://ftisiot.net/categories/ftisiot/"},{"categories":["whoamI","ftisiot","FrancescoTisiot"],"content":"Francesco Tisiot Ciao!\nI’m Francesco Tisiot, Senior Developer Advocate at Aiven. You can find me on twitter at @ftisiot and on LinkedIn Some more resources:\nMy previous and next Speaking activities in the dedicated page My series of blog post for Aiven The slides of my previous speaking engagements on SpeakerDeck My previous company (Rittman Mead) related articles in Rittman Mead’s blog This is my personal blog! Stay tuned for ideas, tests and opinions related to my work.","keywords":null,"title":"Who is Francesco Tisiot?","uri":"https://ftisiot.net/who/"},{"categories":null,"content":"","keywords":null,"title":"whoamI","uri":"https://ftisiot.net/tag/whoami/"},{"categories":null,"content":"","keywords":null,"title":"whoamI","uri":"https://ftisiot.net/categories/whoami/"},{"categories":null,"content":"Hi All!\nWelcome to my blog! If time and perseverance will assist me I’ll try to post here about my findings and ideas at work and about life in general, so stay tuned!\nFrancesco","keywords":null,"title":"Welcome","uri":"https://ftisiot.net/2016/09/28/first-blog-post/"},{"categories":null,"content":" 👉 Need a FREE MySQL database?👈\n🦀 Check Aiven’s FREE plans! 🦀\n⚡️ Need to optimize your SQL query with AI? ⚡️ 🐧 Check EverSQL! 🐧 ","keywords":null,"title":"","uri":"https://ftisiot.net/components/mysqllink/"},{"categories":null,"content":" 👉 Need a FREE PostgreSQL database?👈\n🦀 Check Aiven’s FREE plans! 🦀 ⚡️ Need to optimize your SQL query with AI? ⚡️ 🐧 Check EverSQL! 🐧 ","keywords":null,"title":"","uri":"https://ftisiot.net/components/pglink/"},{"categories":null,"content":"","keywords":null,"title":"Components","uri":"https://ftisiot.net/components/"},{"categories":null,"content":"","keywords":null,"title":"Search","uri":"https://ftisiot.net/search/"}] \ No newline at end of file +[{"categories":null,"content":"","keywords":null,"title":"Categories","uri":"https://ftisiot.net/categories/"},{"categories":null,"content":"","keywords":null,"title":"contains","uri":"https://ftisiot.net/categories/contains/"},{"categories":null,"content":"Mastodon Francesco comes from Verona, Italy 🇮🇹 and works as a Staff Developer Advocate at Aiven. With his many years of experience as a data analyst, he has stories to tell and advice for data-wranglers everywhere. Francesco loves sharing knowledge with others as a speaker and writer, and is on a mission to defend the world from bad Italian food!!","keywords":null,"title":"Francesco Tisiot Ideas!","uri":"https://ftisiot.net/"},{"categories":["mysql","json","contains","json_contains","json_contains_path"],"content":"You can query a JSON document in MySQL to find content within it with:\nThe JSON_CONTAINS function that will return if a JSON document is contained within another JSON document. The function returns 1 if the document is contained, 0 elsewhere. The JSON_CONTAINS function that will return if a JSON document path is contained within another JSON document. The function returns 1 if the document is contained, 0 elsewhere. ","keywords":null,"title":"How to query JSON in MySQL with JSON_CONTAINS","uri":"https://ftisiot.net/mysqljson/query-json-contains-mysql/"},{"categories":null,"content":"","keywords":null,"title":"json","uri":"https://ftisiot.net/categories/json/"},{"categories":null,"content":"","keywords":null,"title":"json_contains","uri":"https://ftisiot.net/categories/json_contains/"},{"categories":null,"content":"","keywords":null,"title":"json_contains_path","uri":"https://ftisiot.net/categories/json_contains_path/"},{"categories":null,"content":"","keywords":null,"title":"mysql","uri":"https://ftisiot.net/categories/mysql/"},{"categories":null,"content":"","keywords":null,"title":"AI","uri":"https://ftisiot.net/categories/ai/"},{"categories":["PostgreSQL","AI","Projects","Resources"],"content":"Everyone is now talking about AI, and modern databases like PostgreSQL® are increasingly being adopted in companies’ AI journey as sources of data or key pieces of the AI infrastructure. Moreover there’s a new set projects that are solving PostgreSQL problems with AI.\n","keywords":null,"title":"List of PostgreSQL® AI Projects and Resources","uri":"https://ftisiot.net/posts/list-of-postgresql-ai-resources/"},{"categories":null,"content":"","keywords":null,"title":"postgresql","uri":"https://ftisiot.net/categories/postgresql/"},{"categories":null,"content":"","keywords":null,"title":"Posts","uri":"https://ftisiot.net/posts/"},{"categories":null,"content":"","keywords":null,"title":"Projects","uri":"https://ftisiot.net/categories/projects/"},{"categories":null,"content":"","keywords":null,"title":"Resources","uri":"https://ftisiot.net/categories/resources/"},{"categories":["PostgreSQL","SQL",null,"isnull","coalesce"],"content":"A boolean value should only contain two values, True or False, but is it correct? Usually people assume so, but sometimes miss the fact that there could be the absence of the value all-together. In databases this is absence is usually stored as NULL and this blog showcases how to find them, use them properly and 11 lessons to learn to be a NULL Pro!\nKeep in mind, it’s not only booleans that can contain NULL values, it’s all the columns where you don’t define a NOT NULL constraint!\n","keywords":null,"title":"11 Lessons to learn when using NULLs in PostgreSQL®","uri":"https://ftisiot.net/posts/postgresql-isnull/"},{"categories":null,"content":"","keywords":null,"title":"coalesce","uri":"https://ftisiot.net/categories/coalesce/"},{"categories":null,"content":"","keywords":null,"title":"isnull","uri":"https://ftisiot.net/categories/isnull/"},{"categories":null,"content":"","keywords":null,"title":"SQL","uri":"https://ftisiot.net/categories/sql/"},{"categories":null,"content":"","keywords":null,"title":"Concat","uri":"https://ftisiot.net/categories/concat/"},{"categories":null,"content":"","keywords":null,"title":"Concatenation","uri":"https://ftisiot.net/categories/concatenation/"},{"categories":["MySQL","Concatenation","Concat","String"],"content":"One of the most common tasks with strings is concatenation! This blog post showcases several techniques to perform it with MySQL.\n","keywords":null,"title":"How to CONCAT in MySQL","uri":"https://ftisiot.net/posts/mysql-concat/"},{"categories":null,"content":"","keywords":null,"title":"String","uri":"https://ftisiot.net/categories/string/"},{"categories":null,"content":"","keywords":null,"title":"COPY","uri":"https://ftisiot.net/categories/copy/"},{"categories":["PostgreSQL","JSON","COPY","jq"],"content":"You have a JSON dataset that you want to upload to a PostgreSQL table containing properly formatted rows and columns… How do you do it?\nAll the main sources like my own blog and others tell you to load the JSON in a dedicated temporary table containing a unique JSON column, then parse it and load into the target table. However there could be another way, avoiding the temp table!\n","keywords":null,"title":"How to load JSON data in PostgreSQL with the COPY command","uri":"https://ftisiot.net/postgresqljson/load-json-data-with-postgresql-copy/"},{"categories":null,"content":"","keywords":null,"title":"jq","uri":"https://ftisiot.net/categories/jq/"},{"categories":null,"content":"","keywords":null,"title":"DataLoad","uri":"https://ftisiot.net/categories/dataload/"},{"categories":["PostgreSQL","StackOverflow","StackExchange","DataLoad"],"content":"How to load StackOverflow StackExchange data in a PostgreSQL® database!\n","keywords":null,"title":"Load StackOverflow’s StackExchange data in Postgresql®","uri":"https://ftisiot.net/posts/stackoverflow-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"StackExchange","uri":"https://ftisiot.net/categories/stackexchange/"},{"categories":null,"content":"","keywords":null,"title":"StackOverflow","uri":"https://ftisiot.net/categories/stackoverflow/"},{"categories":["MySQL","Sorting","1brows"],"content":"Earlier this month I wrote a piece on solving Gunnar Morling interesting 1 billion rows challenge in PostgreSQL and ClickHouse. Since Aiven provides also MySQL, I wanted to give it a try. TLDR; The results are much slower than PG and ClickHouse, do you have any suggestion on how to improve?\n","keywords":null,"title":"1 billion rows challenge in MySQL","uri":"https://ftisiot.net/posts/1browsmysql/"},{"categories":null,"content":"","keywords":null,"title":"1brows","uri":"https://ftisiot.net/categories/1brows/"},{"categories":null,"content":"","keywords":null,"title":"Sorting","uri":"https://ftisiot.net/categories/sorting/"},{"categories":["PostgreSQL","substr"],"content":"Need to extract a specific substring out of a text in PostgreSQL®? Read here how!\n","keywords":null,"title":"How to use PostgreSQL® SUBSTRING","uri":"https://ftisiot.net/posts/postgresql-substr/"},{"categories":null,"content":"","keywords":null,"title":"substr","uri":"https://ftisiot.net/categories/substr/"},{"categories":null,"content":"Why PostgreSQL matters in the AI space as source, central component and target.\n","keywords":null,"title":"Finding PostgreSQL’s fit in the AI space","uri":"https://ftisiot.net/talks/postgresql-fit-ai/"},{"categories":null,"content":"","keywords":null,"title":"Talks","uri":"https://ftisiot.net/talks/"},{"categories":["PostgreSQL","ClickHouse","Sorting"],"content":"Last week the good old Gunnar Morling launched an interesting challenge about ordering 1 billion rows in Java. Like my ex colleague and friend Robin Moffat, I’m not at all a Java expert, and while Robin used DuckDB to solve the challenge, I did the same with PostgreSQL and ClickHouse.\n","keywords":null,"title":"1 billion rows challenge in PostgreSQL and ClickHouse","uri":"https://ftisiot.net/posts/1brows/"},{"categories":null,"content":"","keywords":null,"title":"ClickHouse","uri":"https://ftisiot.net/categories/clickhouse/"},{"categories":null,"content":"Generative AI is revolutionizing how we work and interact. Yet for generative AI applications relying on private, regulated, or commercially valuable data, feeding the model with the right information is crucial. Failure could result in adverse consequences such as poor performance, confidential information exposure, or regulatory requirement breaches. An integrated data platform is a powerful way to accelerate the development of generative AI applications by providing real-time data feeds, consolidating inputs from different sources, and defining clear information boundaries.","keywords":null,"title":"Accelerate Generative AI development with Integrated Data Platforms","uri":"https://ftisiot.net/talks/accelerate-gen-ai-integrated-data-platform/"},{"categories":null,"content":"When attacking any system, taking control of its central nervous system is the first step in infiltrating the core infrastructure and gaining control over its vital functions. Translating this to organization data, a clear target is Apache Kafka, the data hub increasingly adopted for mission-critical systems. This session explores the topic of attacking and defending Apache Kafka, shedding light on potential threats, attack vectors, and countermeasures.\nInitially, we’ll focus on understanding the potential attack surface of Apache Kafka.","keywords":null,"title":"Attacking (and defending) Apache Kafka","uri":"https://ftisiot.net/talks/attack-defend-apache-kafka/"},{"categories":null,"content":"","keywords":null,"title":"ElasticSearch","uri":"https://ftisiot.net/categories/elasticsearch/"},{"categories":null,"content":"","keywords":null,"title":"Kafka Connect","uri":"https://ftisiot.net/categories/kafka-connect/"},{"categories":["Kafka Connect","OpenSearch","ElasticSearch","timestamp","unix time"],"content":"When sinking unix timestamps from Apache Kafka to OpenSearch/ElasticSearch using the dedicated connector, they are not recognized by default as timestamp in the target tech.\n","keywords":null,"title":"Kafka Connect sink to OpenSearch/ElasticSearch: how to sink unix timestamps","uri":"https://ftisiot.net/posts/kafka_connect_sink_elasticsearch_opensearch_timestamp/"},{"categories":null,"content":"","keywords":null,"title":"OpenSearch","uri":"https://ftisiot.net/categories/opensearch/"},{"categories":null,"content":"","keywords":null,"title":"timestamp","uri":"https://ftisiot.net/categories/timestamp/"},{"categories":null,"content":"","keywords":null,"title":"unix time","uri":"https://ftisiot.net/categories/unix-time/"},{"categories":null,"content":"","keywords":null,"title":"Apache Kafka","uri":"https://ftisiot.net/categories/apache-kafka/"},{"categories":["Apache Kafka","REST APIs","Karapace"],"content":"You have an Apache Kafka topic that you want to consume via REST APIs (think curl or just a web browser), how to do it?\nThe reply is Karapace an Open Source (Apache 2.0) tool providing Schema Registry and REST proxy functionality.\nLet’s check out how to quickly run it on Docker.\nStep 1: the Apache Kafka® Cluster You need an Apache Kafka cluster up \u0026 running, if you have one already you can skip to the next section.","keywords":null,"title":"Consume Apache Kafka® messages via REST APIs","uri":"https://ftisiot.net/posts/kafka-consume-http/"},{"categories":null,"content":"","keywords":null,"title":"Karapace","uri":"https://ftisiot.net/categories/karapace/"},{"categories":null,"content":"","keywords":null,"title":"REST APIs","uri":"https://ftisiot.net/categories/rest-apis/"},{"categories":null,"content":"\nUseful Links Aiven Signup Code examples to run with Aiven for Apache Flink Flink JDBC SQL Connector Flink SQL CDC Connecto for PostgreSQL ","keywords":null,"title":"From Batch to Streaming Data Pipeline Evolution","uri":"https://ftisiot.net/talks/from-batch-to-streaming-data-pipeline-evolution/"},{"categories":["mysql","json","tabulate"],"content":"You can tabulate a JSON document (retrieve it as a row) in MySQL with the JSON_TABLE function.\n","keywords":null,"title":"How to tabulate a JSON document in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-tabulate-JSON-document-mysql/"},{"categories":null,"content":"","keywords":null,"title":"tabulate","uri":"https://ftisiot.net/categories/tabulate/"},{"categories":["mysql","json","remove"],"content":"You can remove a field from JSON document in MySQL with the JSON_REMOVE function.\n","keywords":null,"title":"How to remove a field in a JSON document in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-remove-field-JSON-document-mysql/"},{"categories":null,"content":"","keywords":null,"title":"remove","uri":"https://ftisiot.net/categories/remove/"},{"categories":["mysql","json","insert"],"content":"You can insert a field in a JSON document in MySQL with the JSON_INSERT function.\n","keywords":null,"title":"How to insert a field in a JSON document in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-insert-field-JSON-document-mysql/"},{"categories":null,"content":"","keywords":null,"title":"insert","uri":"https://ftisiot.net/categories/insert/"},{"categories":null,"content":"","keywords":null,"title":"edit","uri":"https://ftisiot.net/categories/edit/"},{"categories":["mysql","json","edit"],"content":"You can edit a JSON document in MySQL with:\nThe JSON_SET function that will replace values for JSON paths that exists and add values for the ones that don’t exist. The JSON_REPLACE function that will replace values for JSON paths that exists and ignore the ones that don’t exist. ","keywords":null,"title":"How to edit a JSON document in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-edit-JSON-document-mysql/"},{"categories":["mysql","json","merge"],"content":"You can merge two JSON documents in MySQL with:\nthe JSON_MERGE_PRESERVE function to concatenate the document values the JSON_MERGE_PATCH function to keep the latest value for each key ","keywords":null,"title":"How to merge JSON documents in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-merge-JSON-documents-mysql/"},{"categories":null,"content":"","keywords":null,"title":"merge","uri":"https://ftisiot.net/categories/merge/"},{"categories":null,"content":"","keywords":null,"title":"create","uri":"https://ftisiot.net/categories/create/"},{"categories":["mysql","json","create"],"content":"You can create a JSON document from fields in Mysql® with the JSON_OBJECT function\n","keywords":null,"title":"How to create a JSON document from fields in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-create-JSON-document-from-fields-mysql/"},{"categories":null,"content":"","keywords":null,"title":"extract","uri":"https://ftisiot.net/categories/extract/"},{"categories":["mysql","json","extract","types"],"content":"To get the type of a JSON item in MySQL you need to use the JSON_TYPE function.\n","keywords":null,"title":"How to get the JSON field types in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-get-json-field-types-mysql/"},{"categories":null,"content":"","keywords":null,"title":"types","uri":"https://ftisiot.net/categories/types/"},{"categories":null,"content":"","keywords":null,"title":"array","uri":"https://ftisiot.net/categories/array/"},{"categories":["mysql","json","extract","array"],"content":"To extract an item from an array in MySQL you need to use the -\u003e operator and the [item_number] JSON Path Syntax.\n","keywords":null,"title":"How to extract an item from an array in a JSON object in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-extract-field-from-array-json-mysql/"},{"categories":["mysql","json","extract","JSON_EXTRACT"],"content":"MySQL® offers three ways to extract fields from a JSON object:\nthe -\u003e operator to extract the field as JSON the -\u003e\u003e operator to extract the field as text the JSON_EXTRACT function Both operators use the JSON Path Syntax\n","keywords":null,"title":"How to extract a field from a JSON object in MySQL","uri":"https://ftisiot.net/mysqljson/how-to-extract-field-from-json-mysql/"},{"categories":null,"content":"","keywords":null,"title":"JSON_EXTRACT","uri":"https://ftisiot.net/categories/json_extract/"},{"categories":["mysql","json","load"],"content":"To load JSON data into a MySQL column you need to include it as string.\n","keywords":null,"title":"How to load JSON data in MySQL?","uri":"https://ftisiot.net/mysqljson/how-to-load-json-mysql/"},{"categories":null,"content":"","keywords":null,"title":"load","uri":"https://ftisiot.net/categories/load/"},{"categories":["mysql","json","howto"],"content":"This series covers how to solve common problems on JSON datasets with MySQL and it includes (links will appear once the target pages are up):\n","keywords":null,"title":"How to JSON in MySQL","uri":"https://ftisiot.net/mysqljson/main/"},{"categories":null,"content":"","keywords":null,"title":"howto","uri":"https://ftisiot.net/categories/howto/"},{"categories":null,"content":"","keywords":null,"title":"Data","uri":"https://ftisiot.net/categories/data/"},{"categories":null,"content":"","keywords":null,"title":"Data Pipelines","uri":"https://ftisiot.net/categories/data-pipelines/"},{"categories":null,"content":"","keywords":null,"title":"Platforms","uri":"https://ftisiot.net/categories/platforms/"},{"categories":["Data","Platforms","Data Pipelines"],"content":"In the modern world, it’s rare to have the data in the same shape and platform from the beginning till the end of its journey. Yes, some technologies can achieve quite a good range of functionalities but sometimes at the expense of precision, developer experience or performance. Therefore, to achieve better or faster results, people might select a new tool for a precise task and start an implementation and integration process to move the data around.","keywords":null,"title":"Pros and Cons of Multi Step Data Platforms","uri":"https://ftisiot.net/posts/pros-and-cons-of-multi-step-data-platforms/"},{"categories":null,"content":"","keywords":null,"title":"DevRel","uri":"https://ftisiot.net/categories/devrel/"},{"categories":null,"content":"","keywords":null,"title":"Growth","uri":"https://ftisiot.net/categories/growth/"},{"categories":["DevRel","Growth"],"content":" So… what does a Staff Developer Advocate do, and how is it different from the Senior Developer Advocate role you were doing before?\nI got this question three times in the last two weeks after my promotion from Senior to Staff (🎉🎉🎉🎉), from various people in my network.\n","keywords":null,"title":"So… what does a Staff Developer Advocate do?","uri":"https://ftisiot.net/posts/staff-da/"},{"categories":null,"content":"How and Why using Schema Registry with Apache Kafka\n","keywords":null,"title":"Boost Apache Kafka with Schema Registry","uri":"https://ftisiot.net/talks/boost-kafka-schemas/"},{"categories":null,"content":"A talk about JSON handling in PostgreSQL: from data loading to query to indexing.\n","keywords":null,"title":"Learn PostgreSQL JSON with Pizza","uri":"https://ftisiot.net/talks/pg-json/"},{"categories":null,"content":"Strings are one of the most used types in databases; they can store pretty much any data and don’t enforce any rules on the inserted input. This talk showcases the risk of using strings and how to mitigate them to ensure data quality.\n","keywords":null,"title":"Fix Your Strings!","uri":"https://ftisiot.net/talks/fix-your-strings/"},{"categories":["postgresql","json","jsonb","index","query"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB. This doc showcases how to load JSON data into a column.\n","keywords":null,"title":"How to load JSON data in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-load-json-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"index","uri":"https://ftisiot.net/categories/index/"},{"categories":null,"content":"","keywords":null,"title":"jsonb","uri":"https://ftisiot.net/categories/jsonb/"},{"categories":null,"content":"","keywords":null,"title":"query","uri":"https://ftisiot.net/categories/query/"},{"categories":null,"content":"","keywords":null,"title":"data-platforms","uri":"https://ftisiot.net/categories/data-platforms/"},{"categories":null,"content":"","keywords":null,"title":"design","uri":"https://ftisiot.net/categories/design/"},{"categories":null,"content":"","keywords":null,"title":"soft","uri":"https://ftisiot.net/categories/soft/"},{"categories":["soft","data-platforms","design"],"content":"This page contains all the links related to the SOFT (Scalable Observable Fast Trustworthy) methodology for defining robust data platforms.\n","keywords":null,"title":"SOFT Methodology","uri":"https://ftisiot.net/soft/"},{"categories":null,"content":"","keywords":null,"title":"scalability","uri":"https://ftisiot.net/categories/scalability/"},{"categories":["scalability","data-platforms"],"content":"Technical scalability is one of the main drivers of a data platform, as mentioned in the SOFT methodology. But what are the options? In this blog we’ll evaluate the direction of scalability and the tradeoffs you might encounter in the decision process.\n","keywords":null,"title":"What are the directions of technical data platforms scalability?","uri":"https://ftisiot.net/posts/tech-scalability/"},{"categories":null,"content":"","keywords":null,"title":"fields","uri":"https://ftisiot.net/categories/fields/"},{"categories":["postgresql","json","jsonb","remove","fields"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, and provides two different ways to tabulate a JSON to a record:\n","keywords":null,"title":"How to tabulate a JSON to a record in PostgreSQL®","uri":"https://ftisiot.net/postgresqljson/how-to-tabulate-json-document-to-a-record-postgresql/"},{"categories":["postgresql","json","jsonb","remove","fields"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, and provides two different ways to tabulate a JSON to a recordset:\n","keywords":null,"title":"How to tabulate a JSON to a recordset in PostgreSQL®","uri":"https://ftisiot.net/postgresqljson/how-to-tabulate-json-document-to-a-recordset-postgresql/"},{"categories":["postgresql","json","jsonb","edit"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the jsonb_set function to remove the null values for JSONB columns.\n","keywords":null,"title":"How to edit a JSON object in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-edit-json-postgresql/"},{"categories":["postgresql","json","jsonb","remove","items","array"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the - operator to remove an item from an array.\n","keywords":null,"title":"How to remove an item from a JSON array in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-remove-items-from-json-array-postgresql/"},{"categories":["postgresql","json","jsonb","remove","fields"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, and provides two different ways to remove fields from a JSON document:\n","keywords":null,"title":"How to remove fields from a JSON document in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-remove-fields-from-json-postgresql/"},{"categories":["postgresql","json","jsonb","remove","nulls"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the json_strip_nulls (jsonb_strip_nulls for JSONB) function to remove the null values.\n","keywords":null,"title":"How to remove nulls JSON object in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-remove-nulls-from-json-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"items","uri":"https://ftisiot.net/categories/items/"},{"categories":null,"content":"","keywords":null,"title":"nulls","uri":"https://ftisiot.net/categories/nulls/"},{"categories":null,"content":"","keywords":null,"title":"concatenate","uri":"https://ftisiot.net/categories/concatenate/"},{"categories":["postgresql","json","jsonb","concatenate"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the opearator || to concatenate two JSON objects.\n","keywords":null,"title":"How to concatenate two JSON documents in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-concatenate-two-json-docs-postgresql/"},{"categories":["postgresql","json","jsonb","create","array","key","value"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the function json_object (jsonb_object for JSONB) to create a JSON object from an array of key/value pairs.\n","keywords":null,"title":"How to create a JSON object from array of key/value pairs in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/howto-create-json-from-array-key-value-pairs-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"key","uri":"https://ftisiot.net/categories/key/"},{"categories":null,"content":"","keywords":null,"title":"value","uri":"https://ftisiot.net/categories/value/"},{"categories":["postgresql","json","jsonb","create","array","key","value"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the function json_object (jsonb_object for JSONB) to create a JSON object from two arrays of keys and values.\n","keywords":null,"title":"How to create a JSON object from keys and values arrays in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/howto-create-json-from-keys-and-values-arrays-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"convert","uri":"https://ftisiot.net/categories/convert/"},{"categories":["postgresql","json","jsonb","convert","array"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the function array_to_json (array_to_jsonb for JSONB) to create a JSON array from an existing array.\n","keywords":null,"title":"How to convert an array to a JSON array in PostgreSQL","uri":"https://ftisiot.net/postgresqljson/howto-convert-array-to-json-array-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"elements","uri":"https://ftisiot.net/categories/elements/"},{"categories":["postgresql","json","jsonb","elements","array"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the function json_build_array (jsonb_build_array for JSONB) to create a JSON array from a list of elements.\n","keywords":null,"title":"How to build a JSON array from a list of elements in PostgreSQL®","uri":"https://ftisiot.net/postgresqljson/how-to-build-json-array-from-elements-postgresql/"},{"categories":["postgresql","json","jsonb","keys"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use several functions to extract the keys and related values in tabular format.\n","keywords":null,"title":"How to parse JSON keys in PostgreSQL®","uri":"https://ftisiot.net/postgresqljson/how-to-parse-json-keys-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"keys","uri":"https://ftisiot.net/categories/keys/"},{"categories":["postgresql","json","jsonb","row","convert"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the function to_json (to_jsonb for JSONB) to convert a table row to a JSON object.\n","keywords":null,"title":"How to convert a table row to JSON in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-convert-table-row-json-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"row","uri":"https://ftisiot.net/categories/row/"},{"categories":["postgresql","json","jsonb","prettify"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the function json_pretty (jsonb_pretty for JSONB) to prettify the output.\n","keywords":null,"title":"How to prettify the JSON output in PostgreSQL®","uri":"https://ftisiot.net/postgresqljson/how-to-prettify-json-output-in-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"prettify","uri":"https://ftisiot.net/categories/prettify/"},{"categories":["postgresql","json","jsonb","parse","array"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, and provides several different ways to parse arrays from a JSON document:\n","keywords":null,"title":"How to parse JSON arrays in PostgreSQL?","uri":"https://ftisiot.net/postgresqljson/how-to-parse-json-arrays-in-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"parse","uri":"https://ftisiot.net/categories/parse/"},{"categories":["postgresql","json","jsonb"],"content":"","keywords":null,"title":"How to JSON in MySQL","uri":"https://ftisiot.net/mysqljson/"},{"categories":["postgresql","json","jsonb"],"content":"","keywords":null,"title":"How to JSON in PostgreSQL®","uri":"https://ftisiot.net/postgresqljson/"},{"categories":["postgresql","json","jsonb"],"content":"This series covers how to solve common problems on JSON datasets with PostgreSQL® and it includes (links will appear once the target pages are up):\n","keywords":null,"title":"How to JSON in PostgreSQL®","uri":"https://ftisiot.net/postgresqljson/main/"},{"categories":["postgresql","json","jsonb","extract"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, and provides several different ways to extract fields from a JSON document:\n","keywords":null,"title":"How to extract a field from a JSON object in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-extract-field-from-json-postgresql/"},{"categories":["postgresql","json","jsonb","types"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, you can use the function json_typeof (jsonb_typeof for JSONB) to extract the fields type.\n","keywords":null,"title":"How to get the JSON field types in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-get-json-field-types-postgresql/"},{"categories":["postgresql","json","jsonb","index","query"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB. This doc showcases how to index a JSONB column with a GIN index.\n","keywords":null,"title":"How to index and query a JSON object in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-index-and-query-json-postgresql/"},{"categories":["postgresql","json","jsonb","contains"],"content":"PostgreSQL® offers two types of data types to handle JSON data, JSON and JSONB, and provides several different ways to check if a value/field from a JSON document:\n","keywords":null,"title":"How to check if JSON contains in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/how-to-check-JSON-contains-postgresql/"},{"categories":["postgresql","json","jsonb"],"content":"PostgreSQL® offers two types of data types to handle JSON data:\nJSON stores the JSON as text, performing a validation on the correctness of the JSON syntax JSONB optimizes the JSON storage in a custom binary format. Therefore, on top of validating the correctness of the JSON format, time is spent to properly parse and store the content. ","keywords":null,"title":"What are the differences between JSON or JSONB in PostgreSQL®?","uri":"https://ftisiot.net/postgresqljson/what-are-the-differences-json-jsonb-postgresql/"},{"categories":null,"content":"","keywords":null,"title":"Evaluation","uri":"https://ftisiot.net/categories/evaluation/"},{"categories":["Design","Data Platforms","Evaluation"],"content":"Companies are in a continuous motion: new requirements, new data streams, new technologies are popping up every day. When designing new data platforms supporting the needs of your company, failing to perform a complete assessment of the options available can have disastrous effects on a company’s capability to innovate, and making sure their data assets usable and reusable in the long term.\n","keywords":null,"title":"From data stack to data stuck: the risks of not asking the right data questions","uri":"https://ftisiot.net/posts/from-data-stack-to-data-stuck/"},{"categories":null,"content":"","keywords":null,"title":"Community","uri":"https://ftisiot.net/categories/community/"},{"categories":["PostgreSQL","Community"],"content":"I started following the #PGSQLPhriday initiative a couple months back but never had the time to properly sit down and write due to conference traveling. Therefore I was super happy to be at home this week and find out that PGSQL Phriday #003 theme is about the PostgreSQL community!\n","keywords":null,"title":"PostgreSQL Community and you","uri":"https://ftisiot.net/posts/postgresql-community/"},{"categories":null,"content":"","keywords":null,"title":"abstract","uri":"https://ftisiot.net/categories/abstract/"},{"categories":null,"content":"","keywords":null,"title":"conference","uri":"https://ftisiot.net/categories/conference/"},{"categories":["conference","abstract","writing"],"content":"If you’re reading this, there are good chances you’re thinking, writing or iterating over an abstract for a conference. The post is about little tips I learnt in more than 8 years of prepping for conferences and in 1 year or reviewing internal abstracts at Aiven before they are submitted for a conference.\n","keywords":null,"title":"Tips for Successful Conference Abstracts","uri":"https://ftisiot.net/posts/tips-for-abstract-writing/"},{"categories":null,"content":"","keywords":null,"title":"writing","uri":"https://ftisiot.net/categories/writing/"},{"categories":["InfluxDB","Query"],"content":"Sometimes you want to query a remote InfluxDB server to understand the data in it. This can be done via cURL as explained in the InfluxDB docs\n","keywords":null,"title":"How to query remote InfluxDB via cURL","uri":"https://ftisiot.net/posts/query_influxb_curl/"},{"categories":null,"content":"","keywords":null,"title":"InfluxDB","uri":"https://ftisiot.net/categories/influxdb/"},{"categories":null,"content":"Extract metadata from your existing data tools and build a queryable graph interface in PostgreSQL®\n","keywords":null,"title":"Put PostgreSQL at the center of your (meta)data universe!","uri":"https://ftisiot.net/talks/pg-metadata/"},{"categories":null,"content":"A deep dive into Kafka connect settings and pitfalls, analysing several tips to have a better experience when setting up a connector.\n","keywords":null,"title":"Breathe in Breathe out: get Kafka Connect settings right!","uri":"https://ftisiot.net/talks/breathe-in-breathe-out-kafka-connect/"},{"categories":null,"content":"","keywords":null,"title":"ApacheFlink","uri":"https://ftisiot.net/categories/apacheflink/"},{"categories":["ApacheFlink","Timestamps"],"content":"Sometimes when defining an Apache Flink® table using SQL we need to map an epoch timestamp and use it as record/message timestamp, this blog contains few tricks to get it right.\n","keywords":null,"title":"Convert Epoch to Timestamps in Apache Flink with \u003ccode\u003eTO_TIMESTAMP_LTZ\u003c/code\u003e","uri":"https://ftisiot.net/posts/apache-flink-to-timestamp-ltz/"},{"categories":null,"content":"","keywords":null,"title":"Timestamps","uri":"https://ftisiot.net/categories/timestamps/"},{"categories":null,"content":"","keywords":null,"title":"Connections","uri":"https://ftisiot.net/categories/connections/"},{"categories":["PGAdmin4","PostgreSQL","Connections","Import","JSON"],"content":"How to define a database connection in a JSON file that can be imported in PG Admin 4\n","keywords":null,"title":"Define a PostgreSQL database connection in JSON and import it in PGAdmin 4","uri":"https://ftisiot.net/posts/create_json_connection_pg_admin4/"},{"categories":null,"content":"","keywords":null,"title":"Import","uri":"https://ftisiot.net/categories/import/"},{"categories":null,"content":"","keywords":null,"title":"PGAdmin4","uri":"https://ftisiot.net/categories/pgadmin4/"},{"categories":null,"content":"","keywords":null,"title":"Activities","uri":"https://ftisiot.net/categories/activities/"},{"categories":null,"content":"","keywords":null,"title":"Food","uri":"https://ftisiot.net/categories/food/"},{"categories":["Verona","Food","Activities"],"content":"Now and then I get asked what to do and where to eat nearby Verona, so there, you have the list. I’ll update the list whenever needed\n","keywords":null,"title":"Suggestions on places/activities near Verona","uri":"https://ftisiot.net/suggestions-verona/"},{"categories":null,"content":"","keywords":null,"title":"Verona","uri":"https://ftisiot.net/categories/verona/"},{"categories":null,"content":"Collect, analyze, query your metadata to keep control over your data assets\n","keywords":null,"title":"Don’t get lost in data: Metadata to the rescue!","uri":"https://ftisiot.net/talks/metadata-parser-uptime/"},{"categories":null,"content":"A streaming anomaly detection system with Apache Kafka® and Apache Flink®\n","keywords":null,"title":"No pineapple on pizza! Streaming anomaly detection with Apache Kafka® and Apache Flink®","uri":"https://ftisiot.net/talks/anomaly-detection/"},{"categories":null,"content":"","keywords":null,"title":"Presenting","uri":"https://ftisiot.net/categories/presenting/"},{"categories":null,"content":"","keywords":null,"title":"Slides","uri":"https://ftisiot.net/categories/slides/"},{"categories":null,"content":"","keywords":null,"title":"Tips","uri":"https://ftisiot.net/categories/tips/"},{"categories":["Presenting","Tips","Slides"],"content":"Every time someone talks about slides design a great debate is generated. People have opinions and, guess what? Specifically in the area of public speaking, they seem to be quite vocal about them 🤣.\n","keywords":null,"title":"Yep, my slides are useless!","uri":"https://ftisiot.net/posts/useless-slides/"},{"categories":null,"content":"","keywords":null,"title":"apache-kafka","uri":"https://ftisiot.net/tag/apache-kafka/"},{"categories":null,"content":"","keywords":null,"title":"event-driven-applications","uri":"https://ftisiot.net/tag/event-driven-applications/"},{"categories":null,"content":"","keywords":null,"title":"flask","uri":"https://ftisiot.net/tag/flask/"},{"categories":null,"content":"\nUseful Links Apache Kafka docs GitHub Repo Aiven for Apache Kafka ","keywords":null,"title":"Flask Kafka","uri":"https://ftisiot.net/talks/flask-kafka/"},{"categories":null,"content":"","keywords":null,"title":"Tag","uri":"https://ftisiot.net/tag/"},{"categories":null,"content":"\nUseful Links Knapsack Problem Knapsack in PostgreSQL PostgreSQL 14 Search and Cycle Features Aiven ","keywords":null,"title":"Solving the Knapsack Problem with Recursive Queries and PostgreSQL","uri":"https://ftisiot.net/talks/knapsack-problem-pg/"},{"categories":null,"content":"\nUseful Links Talk recording JDBC source connector docs Debezium docs How to Debezium in Aiven docs JDBC source connector example Debezium source connector example Aiven ","keywords":null,"title":"JDBC Source Connector: What Could Go Wrong?","uri":"https://ftisiot.net/talks/kafka-jdbc-what-can-go-wrong/"},{"categories":["Apache Kafka","kcat","jq"],"content":"I was working on some demos recently on the Apache Kafka source connectors (hi #KafkaSummit!), and trying to display the stream of changes in the resulting Apache Kafka topic.\n","keywords":null,"title":"Beautify \u003ccode\u003ekcat\u003c/code\u003e consumer output by piping to \u003ccode\u003ejq\u003c/code\u003e","uri":"https://ftisiot.net/posts/jq-kcat-consumer/"},{"categories":null,"content":"","keywords":null,"title":"kcat","uri":"https://ftisiot.net/categories/kcat/"},{"categories":null,"content":"\nUseful Links Apache Kafka docs Apache Flink docs Apache Fink SQL client on Docker Build a Streaming data pipeline with Apache Kafka and Flink blog JDBC source connector example Debezium source connector example Aiven for Apache Kafka ","keywords":null,"title":"Apache Kafka and Flink: Stateful Streaming Data Pipelines made easy with SQL","uri":"https://ftisiot.net/talks/kafka-flink-sql/"},{"categories":null,"content":"","keywords":null,"title":"apache-flink","uri":"https://ftisiot.net/tag/apache-flink/"},{"categories":null,"content":"","keywords":null,"title":"sql","uri":"https://ftisiot.net/tag/sql/"},{"categories":null,"content":"","keywords":null,"title":"cdc","uri":"https://ftisiot.net/tag/cdc/"},{"categories":null,"content":"","keywords":null,"title":"debezium","uri":"https://ftisiot.net/tag/debezium/"},{"categories":null,"content":"\nUseful Links Apache Kafka docs Debezium docs How to Debezium in Aiven docs JDBC source connector example Debezium source connector example JDBC Source Connector: what could go wrong? Aiven for PostgreSQL ","keywords":null,"title":"I Don’t Want to Miss a Thing - Track Database Changes with Apache Kafka","uri":"https://ftisiot.net/talks/track-database-changes/"},{"categories":["work"],"content":"A month has already gone since my start at Aiven.io and it’s time for a first, and brief, look back at my experience so far together with few suggestions (even if nobody asks) for anyone that will follow my steps.\nTL;DR: The journey has been great, met several amazing people and learnt lots using cool tech! A bit shocked about food choices… but that’s life 🤌 !\n","keywords":null,"title":"A Month in Aiven.io","uri":"https://ftisiot.net/2021/01/27/a_month_in_aiven/"},{"categories":null,"content":"","keywords":null,"title":"work","uri":"https://ftisiot.net/categories/work/"},{"categories":["work"],"content":"Hi, I’m Francesco and recently joined Aiven.io as Developer Advocate!\nIn this first blog post, we’ll have a look at how to install and login to Aiven’s resources using the command line client.\nIf you’re new to Aiven or if you already know the platform but want to automate some tasks, the client allows you to perform the same tasks available on Aiven’s web console but from your preferred terminal.\n","keywords":null,"title":"First Steps within Aiven… the CLI!","uri":"https://ftisiot.net/2021/01/15/aiven_cli/"},{"categories":["work"],"content":"Now… What?\nMy previous post was looking back in my 8 years of Rittman Mead experience… But now it’s 2021… so… what’s next?\nI’m joining Aiven as Developer Advocate!\n","keywords":null,"title":"Looking Forward","uri":"https://ftisiot.net/2021/01/04/looking_forward/"},{"categories":["work"],"content":"It was February 2012 when I was meant to take a flight from a foggy Treviso Airport direction London Stansted. The fog created several problems, all passengers were taken by bus to Venice and we had to wait 3 hours before boarding on the plane. The flight 🛬 landed with an overall 4h of delay, not great if the scheduled arrival time was 8PM! I then caught a bus to Liverpool street and finally got lost while trying to reach my hotel.","keywords":null,"title":"Looking Back","uri":"https://ftisiot.net/2020/11/26/looking_back/"},{"categories":null,"content":"","keywords":null,"title":"public speaking","uri":"https://ftisiot.net/categories/public-speaking/"},{"categories":null,"content":"","keywords":null,"title":"Tech","uri":"https://ftisiot.net/categories/tech/"},{"categories":["public speaking","Tech"],"content":"Las week I shared a personal experience of talking to a small online audience (just one person) and how that episode made me think about my commitment to public talking and understanding that performing at best is still key for both the speaker and the audience.\nOne of the items that I explored was the Reflection bit: trying to understand what/why the paper/abstract didn’t work, why it didn’t attract people and what can be done to improve it.","keywords":null,"title":"What’s My (Talk) Age Again?","uri":"https://ftisiot.net/2020/11/02/whats-my-talk-age-again/"},{"categories":["conferences","public speaking","Tech"],"content":"2020 hasn’t been a great year, with Covid forcing people home and all major events moving from physical to virtual. At the same time, now is the perfect time for attendees: everyone is creating and sharing content via videos, blogs or talks in conferences. People that before had to choose wisely the “1 conference” where to spend their budget on, now can access for free (or reduced fees) content coming from a huge variety of organisations and speakers.","keywords":null,"title":"A Talk For One","uri":"https://ftisiot.net/2020/10/26/a-talk-for-one/"},{"categories":null,"content":"","keywords":null,"title":"conferences","uri":"https://ftisiot.net/categories/conferences/"},{"categories":null,"content":"","keywords":null,"title":"Analytics","uri":"https://ftisiot.net/categories/analytics/"},{"categories":["Analytics","Tech"],"content":"Oracle Analytics Server is out since several months and a common ask is to provide SSO with Kerberos Authentication.\nThe “old” OBIEE12c style Kerberos configuration is not working with OAS.\nOracle provided a solution to implement it via Apache Server and Oracle Access Manager Identity Asserter. All the info are published in Doc ID 2707401.1","keywords":null,"title":"Oracle Analytics Server and Kerberos Authentication","uri":"https://ftisiot.net/2020/09/18/oracle-analytics-server-and-kerberos-authentication/"},{"categories":null,"content":" ","keywords":null,"title":"Analytics Everywhere!","uri":"https://ftisiot.net/analytics-everywhere-webinar/"},{"categories":["Analytics","Tech"],"content":"I created a short video showing how you can register in Oracle Analytics Cloud 5.7 some Machine Learning models created in the Oracle Database and score data with a simple Data Flow, check it out\nhttps://www.youtube.com/watch?v=GZubKpWUA0U","keywords":null,"title":"Oracle Analytics Cloud 5.7: Use ML Models in the Database","uri":"https://ftisiot.net/2020/08/10/oracle-analytics-cloud-5-7-use-ml-models-in-the-database/"},{"categories":null,"content":"The 2019 end-of-year holiday period is approaching, before closing the laptop for few days it’s good to look back how the year went. It has been very busy working wise: client work, conference preparation and talks, blog posts and videos kept my time well occupied. I also had an amazing news in June, when, during Kscope 19, I was invited on the stage and announced as Oracle ACE Director\nCongratulations to new Oracle ACE Directors @ftisiot @thtechnology @fdmeeguru!","keywords":null,"title":"2019 a Year of Conferences and Much More!","uri":"https://ftisiot.net/2019/12/13/2019-a-year-of-conferences-and-much-more/"},{"categories":["conferences"],"content":"If you read this now and you wanted to submit for ITOUG Tech Days 2020…. well, bad luck, you’re too late! ITOUG Tech Days 2020 was closed last week with an astonishing record of submissions! This post will analyse a bit the numbers of the submissions using the magic Oracle Analytics Cloud.\nFirst of all, uploading the data and fixing the column settings. For example, we want to properly convert to Date our Submission Date (Data di invio in Italian).","keywords":null,"title":"ITOUG Call for Papers Submission Analysis","uri":"https://ftisiot.net/2019/07/30/itoug-call-for-papers-submission-analysis/"},{"categories":["Analytics","Tech"],"content":"Hello! After a long time I’m back to my personal blog! You can find all my Rittman Mead related blog posts here!\nRecently I’ve been doing some personal study around various areas including streaming, machine learning and data visualization and one of the tools that got my attention is Looker. I’ve initially heard about Looker from a Drill to Detail podcast from Mark Rittman and increasingly been hearing about it in conferences and use cases together with other cloud solutions like BigQuery, Snowflake and Fivetran.","keywords":null,"title":"Looker for OBIEE Experts: Introduction and Concepts","uri":"https://ftisiot.net/2018/08/23/looker-for-obiee-experts-introduction-and-concepts/"},{"categories":null,"content":"","keywords":null,"title":"itoug","uri":"https://ftisiot.net/categories/itoug/"},{"categories":["conferences","itoug"],"content":"I’m pleased to announce that, for the first time, a BI/Analytics track will be present at ITOUG!\nITOUG, the recently created Italian Oracle User Group, has been so far almost 100% DBA orientated. At the next event, which will be held on 8th June 2017 at UNA Century Hotel in Milan, we are opening a new BI/Analytics streams and looking for speakers.\nCall for papers is already open, visit http://www.itoug.it for more informations.","keywords":null,"title":"ITOUG Call for Papers is Open!","uri":"https://ftisiot.net/2017/02/28/itoug-call-for-papers-is-open/"},{"categories":null,"content":"For anybody on OBIEE 12c wanting to enable full SSL, Oracle provided within the OBIEE Documentation an explanation on how to set it up using demo certificates.\nHowever the usage of demo certificates gives the end user the annoying problem of needing to accept an exception to enter the website since the demo certificate wasn’t created for the server/domain where OBIEE is located (the same problem arises also with Smartview).","keywords":null,"title":"OBI12c SSL with Custom Certificates","uri":"https://ftisiot.net/2016/10/16/obi12c-ssl-with-custom-certificates/"},{"categories":["Analytics","Tech"],"content":"For anybody interested in how to remove or add Data Visualisation (also known as Visual Analyser) option to a specific role in OBIEE 12c, Oracle released Doc ID 2102444.1 which gives the detail about the procedure using WLST and the RevokeDVPermission.py (or GrantDVPermission.py) that should be present in the OBIEE12c Installation Middleware home by default.","keywords":null,"title":"Remove OBI12c Data Visualisation from OBIEE","uri":"https://ftisiot.net/2016/10/13/remove-obi12c-data-visualisation-from-obiee/"},{"categories":null,"content":"I’ve been working on OBIEE and Oracle products in general since 2008, it has been so far a great experience with an enormous amount of information being available freely in internet.\nWhen trying to solve problems this amount of information can be a treasure but also a risk since the information contained in any website can be partial, not relevant or in some cases completely wrong for the subject searched. As an unexperienced person (but also for experienced) it’s difficult to distinguish whether the content of a website can be followed and trusted and sometimes even replies to public forums can’t be a valid source since different problems provide the similar wrong behaviour and can be confused.","keywords":null,"title":"How to search the Cause of Errors","uri":"https://ftisiot.net/2016/10/12/how-to-search-the-cause-of-errors/"},{"categories":null,"content":"Hi All,\nI thought that including a post on the OBI related blogs and the owner twitter accounts, may be useful. The list will be enriched over time\n* [rittmanmead.com](http://www.rittmanmead.com): My company's blog, always source of good OBI articles * [rmoff.net](http://rmoff.net): [Robin Moffat](https://twitter.com/rmoff)'s (Oracle ACE) personal blog * [gianniceresa.com](https://gianniceresa.com): [Gianni Ceresa](https://twitter.com/G_Ceresa)'s personal blog * [dimensionality.ch](http://dimensionality.ch): [Christian Berg](https://twitter.com/Nephentur)'s (Oracle ACE Associate) personal blog * [gerardnico.com](http://gerardnico.com/): Nicolas Gerard's personal blog * [bisoftdiary.com](https://bisoftdiary.com/): [Andrew Fomin](https://twitter.","keywords":null,"title":"OBI Blogs to follow","uri":"https://ftisiot.net/2016/09/29/obi-blogs-to-follow/"},{"categories":null,"content":"Hi All,\nIf you already migrated to OBI12c you could experience, when printing to PDF a dashboard or analysis including performance tiles that the layout is not what expected.\n[caption width=“300” id=“attachment_37” align=“aligncenter”] Original Dashboard Layout[/caption] [caption width=“300” id=“attachment_36” align=“aligncenter”] PDF Print[/caption]The good news is that this has been recognised as a bug and if you are on 12.2.1.0.0 there is a patch available “Patch 22759083: BIEE 12C DASHBOARD PRINT TO PDF MISSING PERFORMANCE TILES FROM THE REPORT”.","keywords":null,"title":"OBI12c Performance Tiles PDF Print Error","uri":"https://ftisiot.net/2016/09/29/obi12c-performance-tiles-pdf-print-error/"},{"categories":null,"content":"","keywords":null,"title":"presentation","uri":"https://ftisiot.net/tag/presentation/"},{"categories":null,"content":"Check out Past and Future Speaking Activities!\nPlanned Speaking Activities Event Date Talk Pg Day Nordics 21st March Put PostgreSQL at the center of your metadata universe Pg Day Paris 23rd March Fix your strings Previous Speaking Activities 2022 Event Date Talk PG Conf EU 24th-29th October Put PostgreSQL at the center of your (meta)data universe! Quix Meetup 24th October 🎥 Breathe In, Breathe Out: Get Kafka Connect Configs Right! Current (ex Kafka Summit) 4th-5th October 🎥 Breathe In, Breathe Out: Get Kafka Connect Configs Right!","keywords":null,"title":"Speaking Activities","uri":"https://ftisiot.net/speaking-activities/"},{"categories":null,"content":"","keywords":null,"title":"speaking-activities","uri":"https://ftisiot.net/tag/speaking-activities/"},{"categories":null,"content":"","keywords":null,"title":"talks","uri":"https://ftisiot.net/tag/talks/"},{"categories":null,"content":"","keywords":null,"title":"FrancescoTisiot","uri":"https://ftisiot.net/tag/francescotisiot/"},{"categories":null,"content":"","keywords":null,"title":"FrancescoTisiot","uri":"https://ftisiot.net/categories/francescotisiot/"},{"categories":null,"content":"","keywords":null,"title":"ftisiot","uri":"https://ftisiot.net/tag/ftisiot/"},{"categories":null,"content":"","keywords":null,"title":"ftisiot","uri":"https://ftisiot.net/categories/ftisiot/"},{"categories":["whoamI","ftisiot","FrancescoTisiot"],"content":"Francesco Tisiot Ciao!\nI’m Francesco Tisiot, Senior Developer Advocate at Aiven. You can find me on twitter at @ftisiot and on LinkedIn Some more resources:\nMy previous and next Speaking activities in the dedicated page My series of blog post for Aiven The slides of my previous speaking engagements on SpeakerDeck My previous company (Rittman Mead) related articles in Rittman Mead’s blog This is my personal blog! Stay tuned for ideas, tests and opinions related to my work.","keywords":null,"title":"Who is Francesco Tisiot?","uri":"https://ftisiot.net/who/"},{"categories":null,"content":"","keywords":null,"title":"whoamI","uri":"https://ftisiot.net/tag/whoami/"},{"categories":null,"content":"","keywords":null,"title":"whoamI","uri":"https://ftisiot.net/categories/whoami/"},{"categories":null,"content":"Hi All!\nWelcome to my blog! If time and perseverance will assist me I’ll try to post here about my findings and ideas at work and about life in general, so stay tuned!\nFrancesco","keywords":null,"title":"Welcome","uri":"https://ftisiot.net/2016/09/28/first-blog-post/"},{"categories":null,"content":" 👉 Need a FREE MySQL database?👈\n🦀 Check Aiven’s FREE plans! 🦀\n⚡️ Need to optimize your SQL query with AI? ⚡️ 🐧 Check EverSQL! 🐧 ","keywords":null,"title":"","uri":"https://ftisiot.net/components/mysqllink/"},{"categories":null,"content":" 👉 Need a FREE PostgreSQL database?👈\n🦀 Check Aiven’s FREE plans! 🦀 ⚡️ Need to optimize your SQL query with AI? ⚡️ 🐧 Check EverSQL! 🐧 ","keywords":null,"title":"","uri":"https://ftisiot.net/components/pglink/"},{"categories":null,"content":"","keywords":null,"title":"Components","uri":"https://ftisiot.net/components/"},{"categories":null,"content":"","keywords":null,"title":"Search","uri":"https://ftisiot.net/search/"}] \ No newline at end of file diff --git a/index.xml b/index.xml index b02aa13c..cd7f3236 100644 --- a/index.xml +++ b/index.xml @@ -6,7 +6,7 @@ en-us Copyright (c) 2024 - 2024-02-29 11:00:56 +0100 CET + 2024-03-01 10:53:23 +0100 CET Posts diff --git a/mysqljson/how-to-create-JSON-document-from-fields-mysql/index.html b/mysqljson/how-to-create-JSON-document-from-fields-mysql/index.html index 11bbd4b1..8119dc1d 100644 --- a/mysqljson/how-to-create-JSON-document-from-fields-mysql/index.html +++ b/mysqljson/how-to-create-JSON-document-from-fields-mysql/index.html @@ -116,26 +116,26 @@

The dataset

The dataset is the following:

-
{
-    "id": 778,
-    "shop": "Luigis Pizza",
-    "name": "Edward Olson",
-    "phoneNumbers":
-        ["(935)503-3765x4154","(935)12345"],
-    "address": "Unit 9398 Box 2056 DPO AP 24022",
-    "image": null,
-    "pizzas": [
-        {
-            "pizzaName": "Salami",
-            "additionalToppings": ["🥓", "🌶️"]
-        },
-        {
-            "pizzaName": "Margherita",
-            "additionalToppings": ["🍌", "🌶️", "🍍"]
-        }
-    ]
-}
-
+
{
+    "id": 778,
+    "shop": "Luigis Pizza",
+    "name": "Edward Olson",
+    "phoneNumbers":
+        ["(935)503-3765x4154","(935)12345"],
+    "address": "Unit 9398 Box 2056 DPO AP 24022",
+    "image": null,
+    "pizzas": [
+        {
+            "pizzaName": "Salami",
+            "additionalToppings": ["🥓", "🌶️"]
+        },
+        {
+            "pizzaName": "Margherita",
+            "additionalToppings": ["🍌", "🌶️", "🍍"]
+        }
+    ]
+}
+
Check out the description of the fields The following examples use a pizza order dataset with an order having:
    @@ -147,48 +147,48 @@

    The dataset

  • image: null
  • and two pizzas contained in the pizzas item:
-
[
-    {
-        "pizzaName": "Salami",
-        "additionalToppings": ["🥓", "🌶️"]
-    },
-    {
-        "pizzaName": "Margherita",
-        "additionalToppings": ["🍌", "🌶️", "🍍"]
-    }
-]
-
+
[
+    {
+        "pizzaName": "Salami",
+        "additionalToppings": ["🥓", "🌶️"]
+    },
+    {
+        "pizzaName": "Margherita",
+        "additionalToppings": ["🍌", "🌶️", "🍍"]
+    }
+]
+
If you want to reproduce the examples, check how to recreate the dataset

It can be recreated with the following script:

-
create table test(id serial primary key, json_data json);
-
-insert into test(json_data) values (
-'{
-    "id": 778,
-    "shop": "Luigis Pizza",
-    "name": "Edward Olson",
-    "phoneNumbers":
-        ["(935)503-3765x4154","(935)12345"],
-    "address": "Unit 9398 Box 2056 DPO AP 24022",
-    "image": null,
-    "pizzas": [
-        {
-            "pizzaName": "Salami",
-            "additionalToppings": ["🥓", "🌶️"]
-        },
-        {
-            "pizzaName": "Margherita",
-            "additionalToppings": ["🍌", "🌶️", "🍍"]
-        }
-    ]
-}');
-
+
create table test(id serial primary key, json_data json);
+
+insert into test(json_data) values (
+'{
+    "id": 778,
+    "shop": "Luigis Pizza",
+    "name": "Edward Olson",
+    "phoneNumbers":
+        ["(935)503-3765x4154","(935)12345"],
+    "address": "Unit 9398 Box 2056 DPO AP 24022",
+    "image": null,
+    "pizzas": [
+        {
+            "pizzaName": "Salami",
+            "additionalToppings": ["🥓", "🌶️"]
+        },
+        {
+            "pizzaName": "Margherita",
+            "additionalToppings": ["🍌", "🌶️", "🍍"]
+        }
+    ]
+}');
+

Create a JSON object with JSON_OBJECT function

To create a JSON document, from a list of fields or strings you can use the JSON_OBJECT function.

-
select 
-    JSON_OBJECT('mykey1','myvalue1','mykey2','myvalue2') json_data;
-

Result

+
select 
+    JSON_OBJECT('mykey1','myvalue1','mykey2','myvalue2') json_data;
+

Result

+----------------------------------------------+
 | json_data                                    |
 +----------------------------------------------+
diff --git a/mysqljson/how-to-edit-JSON-document-mysql/index.html b/mysqljson/how-to-edit-JSON-document-mysql/index.html
index bd919784..82dc1748 100644
--- a/mysqljson/how-to-edit-JSON-document-mysql/index.html
+++ b/mysqljson/how-to-edit-JSON-document-mysql/index.html
@@ -120,26 +120,26 @@ 

The dataset

The dataset is the following:

-
{
-    "id": 778,
-    "shop": "Luigis Pizza",
-    "name": "Edward Olson",
-    "phoneNumbers":
-        ["(935)503-3765x4154","(935)12345"],
-    "address": "Unit 9398 Box 2056 DPO AP 24022",
-    "image": null,
-    "pizzas": [
-        {
-            "pizzaName": "Salami",
-            "additionalToppings": ["🥓", "🌶️"]
-        },
-        {
-            "pizzaName": "Margherita",
-            "additionalToppings": ["🍌", "🌶️", "🍍"]
-        }
-    ]
-}
-
+
{
+    "id": 778,
+    "shop": "Luigis Pizza",
+    "name": "Edward Olson",
+    "phoneNumbers":
+        ["(935)503-3765x4154","(935)12345"],
+    "address": "Unit 9398 Box 2056 DPO AP 24022",
+    "image": null,
+    "pizzas": [
+        {
+            "pizzaName": "Salami",
+            "additionalToppings": ["🥓", "🌶️"]
+        },
+        {
+            "pizzaName": "Margherita",
+            "additionalToppings": ["🍌", "🌶️", "🍍"]
+        }
+    ]
+}
+
Check out the description of the fields The following examples use a pizza order dataset with an order having:
    @@ -151,48 +151,48 @@

    The dataset

  • image: null
  • and two pizzas contained in the pizzas item:
-
[
-    {
-        "pizzaName": "Salami",
-        "additionalToppings": ["🥓", "🌶️"]
-    },
-    {
-        "pizzaName": "Margherita",
-        "additionalToppings": ["🍌", "🌶️", "🍍"]
-    }
-]
-
+
[
+    {
+        "pizzaName": "Salami",
+        "additionalToppings": ["🥓", "🌶️"]
+    },
+    {
+        "pizzaName": "Margherita",
+        "additionalToppings": ["🍌", "🌶️", "🍍"]
+    }
+]
+
If you want to reproduce the examples, check how to recreate the dataset

It can be recreated with the following script:

-
create table test(id serial primary key, json_data json);
-
-insert into test(json_data) values (
-'{
-    "id": 778,
-    "shop": "Luigis Pizza",
-    "name": "Edward Olson",
-    "phoneNumbers":
-        ["(935)503-3765x4154","(935)12345"],
-    "address": "Unit 9398 Box 2056 DPO AP 24022",
-    "image": null,
-    "pizzas": [
-        {
-            "pizzaName": "Salami",
-            "additionalToppings": ["🥓", "🌶️"]
-        },
-        {
-            "pizzaName": "Margherita",
-            "additionalToppings": ["🍌", "🌶️", "🍍"]
-        }
-    ]
-}');
-
+
create table test(id serial primary key, json_data json);
+
+insert into test(json_data) values (
+'{
+    "id": 778,
+    "shop": "Luigis Pizza",
+    "name": "Edward Olson",
+    "phoneNumbers":
+        ["(935)503-3765x4154","(935)12345"],
+    "address": "Unit 9398 Box 2056 DPO AP 24022",
+    "image": null,
+    "pizzas": [
+        {
+            "pizzaName": "Salami",
+            "additionalToppings": ["🥓", "🌶️"]
+        },
+        {
+            "pizzaName": "Margherita",
+            "additionalToppings": ["🍌", "🌶️", "🍍"]
+        }
+    ]
+}');
+

Edit a JSON document with JSON_SET function

To edit a JSON document you can use the JSON_SET function. To replace the second pizzaName from Margherita to Capricciosa you can

-
select 
-    JSON_SET(json_data,'$.pizzas[1].pizzaName','Capricciosa') from test;
-

Where

+
select 
+    JSON_SET(json_data,'$.pizzas[1].pizzaName','Capricciosa') from test;
+

Where

  • json_data is the JSON column
  • $.pizzas[1].pizzaName selects the pizzas item, the 2nd element in the array and the pizzaName subitem
  • @@ -204,9 +204,9 @@

    Edit a JSON document with < +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Edit a JSON document with JSON_REPLACE function

To edit a JSON document you can use the JSON_REPLACE function. To replace the second pizzaName from Margherita to Capricciosa you can

-
select 
-    JSON_REPLACE(json_data,'$.pizzas[1].pizzaName','Capricciosa') from test;
-

Where

+
select 
+    JSON_REPLACE(json_data,'$.pizzas[1].pizzaName','Capricciosa') from test;
+

Where

  • json_data is the JSON column
  • $.pizzas[1].pizzaName selects the pizzas item, the 2nd element in the array and the pizzaName subitem
  • @@ -219,9 +219,9 @@

    Edit a JSON document with < | {"id": 778, "name": "Edward Olson", "shop": "Luigis Pizza", "image": null, "pizzas": [{"pizzaName": "Salami", "additionalToppings": ["🥓", "🌶️"]}, {"pizzaName": "Capricciosa", "additionalToppings": ["🍌", "🌶️", "🍍"]}], "address": "Unit 9398 Box 2056 DPO AP 24022", "phoneNumbers": ["(935)503-3765x4154", "(935)12345"]} | +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

    Note: If you try to use the JSON_REPLACE with a non existing field, like the $.nameS, the function will NOT edit the document.

    -
    select 
    -    JSON_REPLACE(json_data,'$.nameS','Ugo') from test;
    -

    The above doesn’t edit the document since the key nameS is not present

    +
    select 
    +    JSON_REPLACE(json_data,'$.nameS','Ugo') from test;
    +

    The above doesn’t edit the document since the key nameS is not present

    +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
     | JSON_REPLACE(json_data,'$.nameS','Ugo')                                                                                                                                                                                                                                                                                                        |
     +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    diff --git a/mysqljson/how-to-extract-field-from-array-json-mysql/index.html b/mysqljson/how-to-extract-field-from-array-json-mysql/index.html
    index 7bad980e..7bb4cdb9 100644
    --- a/mysqljson/how-to-extract-field-from-array-json-mysql/index.html
    +++ b/mysqljson/how-to-extract-field-from-array-json-mysql/index.html
    @@ -116,26 +116,26 @@ 

    The dataset

    The dataset is the following:

    -
    {
    -    "id": 778,
    -    "shop": "Luigis Pizza",
    -    "name": "Edward Olson",
    -    "phoneNumbers":
    -        ["(935)503-3765x4154","(935)12345"],
    -    "address": "Unit 9398 Box 2056 DPO AP 24022",
    -    "image": null,
    -    "pizzas": [
    -        {
    -            "pizzaName": "Salami",
    -            "additionalToppings": ["🥓", "🌶️"]
    -        },
    -        {
    -            "pizzaName": "Margherita",
    -            "additionalToppings": ["🍌", "🌶️", "🍍"]
    -        }
    -    ]
    -}
    -
    +
    {
    +    "id": 778,
    +    "shop": "Luigis Pizza",
    +    "name": "Edward Olson",
    +    "phoneNumbers":
    +        ["(935)503-3765x4154","(935)12345"],
    +    "address": "Unit 9398 Box 2056 DPO AP 24022",
    +    "image": null,
    +    "pizzas": [
    +        {
    +            "pizzaName": "Salami",
    +            "additionalToppings": ["🥓", "🌶️"]
    +        },
    +        {
    +            "pizzaName": "Margherita",
    +            "additionalToppings": ["🍌", "🌶️", "🍍"]
    +        }
    +    ]
    +}
    +
    Check out the description of the fields The following examples use a pizza order dataset with an order having:
      @@ -147,49 +147,49 @@

      The dataset

    • image: null
    • and two pizzas contained in the pizzas item:
    -
    [
    -    {
    -        "pizzaName": "Salami",
    -        "additionalToppings": ["🥓", "🌶️"]
    -    },
    -    {
    -        "pizzaName": "Margherita",
    -        "additionalToppings": ["🍌", "🌶️", "🍍"]
    -    }
    -]
    -
    +
    [
    +    {
    +        "pizzaName": "Salami",
    +        "additionalToppings": ["🥓", "🌶️"]
    +    },
    +    {
    +        "pizzaName": "Margherita",
    +        "additionalToppings": ["🍌", "🌶️", "🍍"]
    +    }
    +]
    +
    If you want to reproduce the examples, check how to recreate the dataset

    It can be recreated with the following script:

    -
    create table test(id serial primary key, json_data json);
    -
    -insert into test(json_data) values (
    -'{
    -    "id": 778,
    -    "shop": "Luigis Pizza",
    -    "name": "Edward Olson",
    -    "phoneNumbers":
    -        ["(935)503-3765x4154","(935)12345"],
    -    "address": "Unit 9398 Box 2056 DPO AP 24022",
    -    "image": null,
    -    "pizzas": [
    -        {
    -            "pizzaName": "Salami",
    -            "additionalToppings": ["🥓", "🌶️"]
    -        },
    -        {
    -            "pizzaName": "Margherita",
    -            "additionalToppings": ["🍌", "🌶️", "🍍"]
    -        }
    -    ]
    -}');
    -
    +
    create table test(id serial primary key, json_data json);
    +
    +insert into test(json_data) values (
    +'{
    +    "id": 778,
    +    "shop": "Luigis Pizza",
    +    "name": "Edward Olson",
    +    "phoneNumbers":
    +        ["(935)503-3765x4154","(935)12345"],
    +    "address": "Unit 9398 Box 2056 DPO AP 24022",
    +    "image": null,
    +    "pizzas": [
    +        {
    +            "pizzaName": "Salami",
    +            "additionalToppings": ["🥓", "🌶️"]
    +        },
    +        {
    +            "pizzaName": "Margherita",
    +            "additionalToppings": ["🍌", "🌶️", "🍍"]
    +        }
    +    ]
    +}');
    +

    Extract an item from a JSON array with the -> operator

    Using the -> operator in conjunction with the [item_number] JSON Path sintax, we can extract from an array. The [item_number] syntax follows the JSON standards, therefore the array starting index is 0. The second pizza in the order can be extracted with

    -
    select 
    -    json_data -> '$.pizzas[1]' second_pizza
    -    from test;
    -

    In the above query

    +
    select 
    +    json_data -> '$.pizzas[1]' second_pizza
    +    from test;
    +

    In the above query

    • json_data -> '$.pizzas' extracts the pizzas field
    • the additional [1] extracts the second pizza (index starts from 0)
    • diff --git a/mysqljson/how-to-extract-field-from-json-mysql/index.html b/mysqljson/how-to-extract-field-from-json-mysql/index.html index 4efd4d53..59ca73c3 100644 --- a/mysqljson/how-to-extract-field-from-json-mysql/index.html +++ b/mysqljson/how-to-extract-field-from-json-mysql/index.html @@ -153,50 +153,50 @@

      The dataset

    • image: null
    • and two pizzas contained in the pizzas item:
    -
    [
    -    {
    -        "pizzaName": "Salami",
    -        "additionalToppings": ["🥓", "🌶️"]
    -    },
    -    {
    -        "pizzaName": "Margherita",
    -        "additionalToppings": ["🍌", "🌶️", "🍍"]
    -    }
    -]
    -
    +
    [
    +    {
    +        "pizzaName": "Salami",
    +        "additionalToppings": ["🥓", "🌶️"]
    +    },
    +    {
    +        "pizzaName": "Margherita",
    +        "additionalToppings": ["🍌", "🌶️", "🍍"]
    +    }
    +]
    +
    If you want to reproduce the examples, check how to recreate the dataset

    It can be recreated with the following script:

    -
    create table test(id serial primary key, json_data json);
    -
    -insert into test(json_data) values (
    -'{
    -    "id": 778,
    -    "shop": "Luigis Pizza",
    -    "name": "Edward Olson",
    -    "phoneNumbers":
    -        ["(935)503-3765x4154","(935)12345"],
    -    "address": "Unit 9398 Box 2056 DPO AP 24022",
    -    "image": null,
    -    "pizzas": [
    -        {
    -            "pizzaName": "Salami",
    -            "additionalToppings": ["🥓", "🌶️"]
    -        },
    -        {
    -            "pizzaName": "Margherita",
    -            "additionalToppings": ["🍌", "🌶️", "🍍"]
    -        }
    -    ]
    -}');
    -
    +
    create table test(id serial primary key, json_data json);
    +
    +insert into test(json_data) values (
    +'{
    +    "id": 778,
    +    "shop": "Luigis Pizza",
    +    "name": "Edward Olson",
    +    "phoneNumbers":
    +        ["(935)503-3765x4154","(935)12345"],
    +    "address": "Unit 9398 Box 2056 DPO AP 24022",
    +    "image": null,
    +    "pizzas": [
    +        {
    +            "pizzaName": "Salami",
    +            "additionalToppings": ["🥓", "🌶️"]
    +        },
    +        {
    +            "pizzaName": "Margherita",
    +            "additionalToppings": ["🍌", "🌶️", "🍍"]
    +        }
    +    ]
    +}');
    +

    Extract a JSON field using the -> operator

    To extract a field value from a JSON document, you can use the -> operator. The id and name fields can be extracted with:

    -
    select 
    -    json_data -> '$.id' id,
    -    json_data -> '$.name' name
    -    from test;
    -

    Result

    +
    select 
    +    json_data -> '$.id' id,
    +    json_data -> '$.name' name
    +    from test;
    +

    Result

    +------+----------------+
     | id   | name           |
     +------+----------------+
    @@ -204,11 +204,11 @@ 

    Extract a JSON field using th +------+----------------+

    Extract a JSON field as Text using the ->> operator

    To extract a field from a JSON document as Text, you can use the -> operator. The id and name fields can be extracted with:

    -
    select 
    -    json_data ->> '$.id' id,
    -    json_data ->> '$.name' order_name
    -from test;
    -

    Result:

    +
    select 
    +    json_data ->> '$.id' id,
    +    json_data ->> '$.name' order_name
    +from test;
    +

    Result:

    +------+--------------+
     | id   | order_name   |
     +------+--------------+
    @@ -216,11 +216,11 @@ 

    Extract a JSON field using th +------+--------------+

    Extract a JSON field as using the JSON_EXTRACT function

    To extract a field from a JSON document, you can use the JSON_EXTRACT function. The id and name fields can be extracted with:

    -
    select 
    -    JSON_EXTRACT(json_data, '$.id') id,
    -    JSON_EXTRACT(json_data, '$.name') order_name
    -from test;
    -

    Result:

    +
    select 
    +    JSON_EXTRACT(json_data, '$.id') id,
    +    JSON_EXTRACT(json_data, '$.name') order_name
    +from test;
    +

    Result:

    +------+----------------+
     | id   | order_name     |
     +------+----------------+
    diff --git a/mysqljson/how-to-get-json-field-types-mysql/index.html b/mysqljson/how-to-get-json-field-types-mysql/index.html
    index 9b1db532..e4740d35 100644
    --- a/mysqljson/how-to-get-json-field-types-mysql/index.html
    +++ b/mysqljson/how-to-get-json-field-types-mysql/index.html
    @@ -116,26 +116,26 @@ 

    The dataset

    The dataset is the following:

    -
    {
    -    "id": 778,
    -    "shop": "Luigis Pizza",
    -    "name": "Edward Olson",
    -    "phoneNumbers":
    -        ["(935)503-3765x4154","(935)12345"],
    -    "address": "Unit 9398 Box 2056 DPO AP 24022",
    -    "image": null,
    -    "pizzas": [
    -        {
    -            "pizzaName": "Salami",
    -            "additionalToppings": ["🥓", "🌶️"]
    -        },
    -        {
    -            "pizzaName": "Margherita",
    -            "additionalToppings": ["🍌", "🌶️", "🍍"]
    -        }
    -    ]
    -}
    -
    +
    {
    +    "id": 778,
    +    "shop": "Luigis Pizza",
    +    "name": "Edward Olson",
    +    "phoneNumbers":
    +        ["(935)503-3765x4154","(935)12345"],
    +    "address": "Unit 9398 Box 2056 DPO AP 24022",
    +    "image": null,
    +    "pizzas": [
    +        {
    +            "pizzaName": "Salami",
    +            "additionalToppings": ["🥓", "🌶️"]
    +        },
    +        {
    +            "pizzaName": "Margherita",
    +            "additionalToppings": ["🍌", "🌶️", "🍍"]
    +        }
    +    ]
    +}
    +
    Check out the description of the fields The following examples use a pizza order dataset with an order having:
      @@ -147,49 +147,49 @@

      The dataset

    • image: null
    • and two pizzas contained in the pizzas item:
    -
    [
    -    {
    -        "pizzaName": "Salami",
    -        "additionalToppings": ["🥓", "🌶️"]
    -    },
    -    {
    -        "pizzaName": "Margherita",
    -        "additionalToppings": ["🍌", "🌶️", "🍍"]
    -    }
    -]
    -
    +
    [
    +    {
    +        "pizzaName": "Salami",
    +        "additionalToppings": ["🥓", "🌶️"]
    +    },
    +    {
    +        "pizzaName": "Margherita",
    +        "additionalToppings": ["🍌", "🌶️", "🍍"]
    +    }
    +]
    +
    If you want to reproduce the examples, check how to recreate the dataset

    It can be recreated with the following script:

    -
    create table test(id serial primary key, json_data json);
    -
    -insert into test(json_data) values (
    -'{
    -    "id": 778,
    -    "shop": "Luigis Pizza",
    -    "name": "Edward Olson",
    -    "phoneNumbers":
    -        ["(935)503-3765x4154","(935)12345"],
    -    "address": "Unit 9398 Box 2056 DPO AP 24022",
    -    "image": null,
    -    "pizzas": [
    -        {
    -            "pizzaName": "Salami",
    -            "additionalToppings": ["🥓", "🌶️"]
    -        },
    -        {
    -            "pizzaName": "Margherita",
    -            "additionalToppings": ["🍌", "🌶️", "🍍"]
    -        }
    -    ]
    -}');
    -
    +
    create table test(id serial primary key, json_data json);
    +
    +insert into test(json_data) values (
    +'{
    +    "id": 778,
    +    "shop": "Luigis Pizza",
    +    "name": "Edward Olson",
    +    "phoneNumbers":
    +        ["(935)503-3765x4154","(935)12345"],
    +    "address": "Unit 9398 Box 2056 DPO AP 24022",
    +    "image": null,
    +    "pizzas": [
    +        {
    +            "pizzaName": "Salami",
    +            "additionalToppings": ["🥓", "🌶️"]
    +        },
    +        {
    +            "pizzaName": "Margherita",
    +            "additionalToppings": ["🍌", "🌶️", "🍍"]
    +        }
    +    ]
    +}');
    +

    Extract a JSON field type using the JSON_TYPE function

    You can get the type of JSON data with the JSON_TYPE function

    -
    select 
    -    JSON_TYPE(json_data -> '$.pizzas') pizzas
    -    from test;
    -

    In the above query

    +
    select 
    +    JSON_TYPE(json_data -> '$.pizzas') pizzas
    +    from test;
    +

    In the above query

    • json_data -> '$.pizzas' extracts the pizzas field
    • the surrounding JSON_TYPE retrieves the type
    • diff --git a/mysqljson/how-to-insert-field-JSON-document-mysql/index.html b/mysqljson/how-to-insert-field-JSON-document-mysql/index.html index 322a8e9a..6110c381 100644 --- a/mysqljson/how-to-insert-field-JSON-document-mysql/index.html +++ b/mysqljson/how-to-insert-field-JSON-document-mysql/index.html @@ -116,26 +116,26 @@

      The dataset

      The dataset is the following:

      -
      {
      -    "id": 778,
      -    "shop": "Luigis Pizza",
      -    "name": "Edward Olson",
      -    "phoneNumbers":
      -        ["(935)503-3765x4154","(935)12345"],
      -    "address": "Unit 9398 Box 2056 DPO AP 24022",
      -    "image": null,
      -    "pizzas": [
      -        {
      -            "pizzaName": "Salami",
      -            "additionalToppings": ["🥓", "🌶️"]
      -        },
      -        {
      -            "pizzaName": "Margherita",
      -            "additionalToppings": ["🍌", "🌶️", "🍍"]
      -        }
      -    ]
      -}
      -
      +
      {
      +    "id": 778,
      +    "shop": "Luigis Pizza",
      +    "name": "Edward Olson",
      +    "phoneNumbers":
      +        ["(935)503-3765x4154","(935)12345"],
      +    "address": "Unit 9398 Box 2056 DPO AP 24022",
      +    "image": null,
      +    "pizzas": [
      +        {
      +            "pizzaName": "Salami",
      +            "additionalToppings": ["🥓", "🌶️"]
      +        },
      +        {
      +            "pizzaName": "Margherita",
      +            "additionalToppings": ["🍌", "🌶️", "🍍"]
      +        }
      +    ]
      +}
      +
      Check out the description of the fields The following examples use a pizza order dataset with an order having:
        @@ -147,48 +147,48 @@

        The dataset

      • image: null
      • and two pizzas contained in the pizzas item:
      -
      [
      -    {
      -        "pizzaName": "Salami",
      -        "additionalToppings": ["🥓", "🌶️"]
      -    },
      -    {
      -        "pizzaName": "Margherita",
      -        "additionalToppings": ["🍌", "🌶️", "🍍"]
      -    }
      -]
      -
      +
      [
      +    {
      +        "pizzaName": "Salami",
      +        "additionalToppings": ["🥓", "🌶️"]
      +    },
      +    {
      +        "pizzaName": "Margherita",
      +        "additionalToppings": ["🍌", "🌶️", "🍍"]
      +    }
      +]
      +
      If you want to reproduce the examples, check how to recreate the dataset

      It can be recreated with the following script:

      -
      create table test(id serial primary key, json_data json);
      -
      -insert into test(json_data) values (
      -'{
      -    "id": 778,
      -    "shop": "Luigis Pizza",
      -    "name": "Edward Olson",
      -    "phoneNumbers":
      -        ["(935)503-3765x4154","(935)12345"],
      -    "address": "Unit 9398 Box 2056 DPO AP 24022",
      -    "image": null,
      -    "pizzas": [
      -        {
      -            "pizzaName": "Salami",
      -            "additionalToppings": ["🥓", "🌶️"]
      -        },
      -        {
      -            "pizzaName": "Margherita",
      -            "additionalToppings": ["🍌", "🌶️", "🍍"]
      -        }
      -    ]
      -}');
      -
      +
      create table test(id serial primary key, json_data json);
      +
      +insert into test(json_data) values (
      +'{
      +    "id": 778,
      +    "shop": "Luigis Pizza",
      +    "name": "Edward Olson",
      +    "phoneNumbers":
      +        ["(935)503-3765x4154","(935)12345"],
      +    "address": "Unit 9398 Box 2056 DPO AP 24022",
      +    "image": null,
      +    "pizzas": [
      +        {
      +            "pizzaName": "Salami",
      +            "additionalToppings": ["🥓", "🌶️"]
      +        },
      +        {
      +            "pizzaName": "Margherita",
      +            "additionalToppings": ["🍌", "🌶️", "🍍"]
      +        }
      +    ]
      +}');
      +

      Insert a field in a JSON document with JSON_INSERT function

      To insert a field in a JSON document you can use the JSON_INSERT function. To insert the drinks in the second pizza in the above order you can:

      -
      select 
      -    JSON_INSERT(json_data,'$.pizzas[1].drinks','Sparkling Water') extra_drink from test;
      -

      Where

      +
      select 
      +    JSON_INSERT(json_data,'$.pizzas[1].drinks','Sparkling Water') extra_drink from test;
      +

      Where

      • json_data is the JSON column
      • $.pizzas[1].drink selects the pizzas item, the 2nd element in the array and the drink subitem
      • diff --git a/mysqljson/how-to-load-json-mysql/index.html b/mysqljson/how-to-load-json-mysql/index.html index 84d9bb07..02d8e5ff 100644 --- a/mysqljson/how-to-load-json-mysql/index.html +++ b/mysqljson/how-to-load-json-mysql/index.html @@ -105,53 +105,53 @@

        To load JSON data into a MySQL column you need to include it as string.

        E.g. to include the following JSON:

        -
        {
        -    "id": 778,
        -    "shop": "Luigis Pizza",
        -    "name": "Edward Olson",
        -    "phoneNumbers":
        -        ["(935)503-3765x4154","(935)12345"],
        -    "address": "Unit 9398 Box 2056 DPO AP 24022",
        -    "image": null,
        -    "pizzas": [
        -        {
        -            "pizzaName": "Salami",
        -            "additionalToppings": ["🥓", "🌶️"]
        -        },
        -        {
        -            "pizzaName": "Margherita",
        -            "additionalToppings": ["🍌", "🌶️", "🍍"]
        -        }
        -    ]
        -}
        -

        In a table containing a json_data JSON column:

        -
        create table test(id serial primary key, json_data json);
        -

        You can just insert the json_data column as string:

        -
        insert into test(id, json_data) values (
        -1, 
        -'{
        -    "id": 778,
        -    "shop": "Luigis Pizza",
        -    "name": "Edward Olson",
        -    "phoneNumbers":
        -        ["(935)503-3765x4154","(935)12345"],
        -    "address": "Unit 9398 Box 2056 DPO AP 24022",
        -    "image": null,
        -    "pizzas": [
        -        {
        -            "pizzaName": "Salami",
        -            "additionalToppings": ["🥓", "🌶️"]
        -        },
        -        {
        -            "pizzaName": "Margherita",
        -            "additionalToppings": ["🍌", "🌶️", "🍍"]
        -        }
        -    ]
        -}');
        -

        MySQL will validate the content as JSON and, if correct, store the data.

        +
        {
        +    "id": 778,
        +    "shop": "Luigis Pizza",
        +    "name": "Edward Olson",
        +    "phoneNumbers":
        +        ["(935)503-3765x4154","(935)12345"],
        +    "address": "Unit 9398 Box 2056 DPO AP 24022",
        +    "image": null,
        +    "pizzas": [
        +        {
        +            "pizzaName": "Salami",
        +            "additionalToppings": ["🥓", "🌶️"]
        +        },
        +        {
        +            "pizzaName": "Margherita",
        +            "additionalToppings": ["🍌", "🌶️", "🍍"]
        +        }
        +    ]
        +}
        +

        In a table containing a json_data JSON column:

        +
        create table test(id serial primary key, json_data json);
        +

        You can just insert the json_data column as string:

        +
        insert into test(id, json_data) values (
        +1, 
        +'{
        +    "id": 778,
        +    "shop": "Luigis Pizza",
        +    "name": "Edward Olson",
        +    "phoneNumbers":
        +        ["(935)503-3765x4154","(935)12345"],
        +    "address": "Unit 9398 Box 2056 DPO AP 24022",
        +    "image": null,
        +    "pizzas": [
        +        {
        +            "pizzaName": "Salami",
        +            "additionalToppings": ["🥓", "🌶️"]
        +        },
        +        {
        +            "pizzaName": "Margherita",
        +            "additionalToppings": ["🍌", "🌶️", "🍍"]
        +        }
        +    ]
        +}');
        +

        MySQL will validate the content as JSON and, if correct, store the data.

        If you retrieve the data from the test table with

        -
        select * from test;
        -

        You can see the row correctly stored.

        +
        select * from test;
        +

        You can see the row correctly stored.

        +----+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
         | id | json_data                                                                                                                                                                                                                                                                                                                                      |
         +----+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
        diff --git a/mysqljson/how-to-merge-JSON-documents-mysql/index.html b/mysqljson/how-to-merge-JSON-documents-mysql/index.html
        index 0756411a..183ba004 100644
        --- a/mysqljson/how-to-merge-JSON-documents-mysql/index.html
        +++ b/mysqljson/how-to-merge-JSON-documents-mysql/index.html
        @@ -120,26 +120,26 @@ 

        The dataset

        The dataset is the following:

        -
        {
        -    "id": 778,
        -    "shop": "Luigis Pizza",
        -    "name": "Edward Olson",
        -    "phoneNumbers":
        -        ["(935)503-3765x4154","(935)12345"],
        -    "address": "Unit 9398 Box 2056 DPO AP 24022",
        -    "image": null,
        -    "pizzas": [
        -        {
        -            "pizzaName": "Salami",
        -            "additionalToppings": ["🥓", "🌶️"]
        -        },
        -        {
        -            "pizzaName": "Margherita",
        -            "additionalToppings": ["🍌", "🌶️", "🍍"]
        -        }
        -    ]
        -}
        -
        +
        {
        +    "id": 778,
        +    "shop": "Luigis Pizza",
        +    "name": "Edward Olson",
        +    "phoneNumbers":
        +        ["(935)503-3765x4154","(935)12345"],
        +    "address": "Unit 9398 Box 2056 DPO AP 24022",
        +    "image": null,
        +    "pizzas": [
        +        {
        +            "pizzaName": "Salami",
        +            "additionalToppings": ["🥓", "🌶️"]
        +        },
        +        {
        +            "pizzaName": "Margherita",
        +            "additionalToppings": ["🍌", "🌶️", "🍍"]
        +        }
        +    ]
        +}
        +
        Check out the description of the fields The following examples use a pizza order dataset with an order having:
          @@ -151,43 +151,43 @@

          The dataset

        • image: null
        • and two pizzas contained in the pizzas item:
        -
        [
        -    {
        -        "pizzaName": "Salami",
        -        "additionalToppings": ["🥓", "🌶️"]
        -    },
        -    {
        -        "pizzaName": "Margherita",
        -        "additionalToppings": ["🍌", "🌶️", "🍍"]
        -    }
        -]
        -
        +
        [
        +    {
        +        "pizzaName": "Salami",
        +        "additionalToppings": ["🥓", "🌶️"]
        +    },
        +    {
        +        "pizzaName": "Margherita",
        +        "additionalToppings": ["🍌", "🌶️", "🍍"]
        +    }
        +]
        +
        If you want to reproduce the examples, check how to recreate the dataset

        It can be recreated with the following script:

        -
        create table test(id serial primary key, json_data json);
        -
        -insert into test(json_data) values (
        -'{
        -    "id": 778,
        -    "shop": "Luigis Pizza",
        -    "name": "Edward Olson",
        -    "phoneNumbers":
        -        ["(935)503-3765x4154","(935)12345"],
        -    "address": "Unit 9398 Box 2056 DPO AP 24022",
        -    "image": null,
        -    "pizzas": [
        -        {
        -            "pizzaName": "Salami",
        -            "additionalToppings": ["🥓", "🌶️"]
        -        },
        -        {
        -            "pizzaName": "Margherita",
        -            "additionalToppings": ["🍌", "🌶️", "🍍"]
        -        }
        -    ]
        -}');
        -
        +
        create table test(id serial primary key, json_data json);
        +
        +insert into test(json_data) values (
        +'{
        +    "id": 778,
        +    "shop": "Luigis Pizza",
        +    "name": "Edward Olson",
        +    "phoneNumbers":
        +        ["(935)503-3765x4154","(935)12345"],
        +    "address": "Unit 9398 Box 2056 DPO AP 24022",
        +    "image": null,
        +    "pizzas": [
        +        {
        +            "pizzaName": "Salami",
        +            "additionalToppings": ["🥓", "🌶️"]
        +        },
        +        {
        +            "pizzaName": "Margherita",
        +            "additionalToppings": ["🍌", "🌶️", "🍍"]
        +        }
        +    ]
        +}');
        +

        Merge two JSON documents with JSON_MERGE_PRESERVE function

        To merge two (or more) JSON documents, by concatenating all the key values you can use the JSON_MERGE_PRESERVE function.

        select 
        @@ -203,12 +203,12 @@ 

        Merge two JS +------------------------------------------------------------------------------+

        Merge two JSON documents with JSON_MERGE_PATCH function

        To merge two (or more) JSON documents, by keeping only the latest value for each key you can use the JSON_MERGE_PATCH function.

        -
        select 
        -    JSON_MERGE_PATCH(
        -        '{"mykey1":"myvalue11","mykey2":"myvalue21"}',
        -        '{"mykey1":"myvalue12","mykey2":"myvalue22"}'
        -        ) json_data;
        -

        Result

        +
        select 
        +    JSON_MERGE_PATCH(
        +        '{"mykey1":"myvalue11","mykey2":"myvalue21"}',
        +        '{"mykey1":"myvalue12","mykey2":"myvalue22"}'
        +        ) json_data;
        +

        Result

        +------------------------------------------------+
         | json_data                                      |
         +------------------------------------------------+
        diff --git a/mysqljson/how-to-remove-field-JSON-document-mysql/index.html b/mysqljson/how-to-remove-field-JSON-document-mysql/index.html
        index 2fb0edd7..7dc67d4a 100644
        --- a/mysqljson/how-to-remove-field-JSON-document-mysql/index.html
        +++ b/mysqljson/how-to-remove-field-JSON-document-mysql/index.html
        @@ -116,26 +116,26 @@ 

        The dataset

        The dataset is the following:

        -
        {
        -    "id": 778,
        -    "shop": "Luigis Pizza",
        -    "name": "Edward Olson",
        -    "phoneNumbers":
        -        ["(935)503-3765x4154","(935)12345"],
        -    "address": "Unit 9398 Box 2056 DPO AP 24022",
        -    "image": null,
        -    "pizzas": [
        -        {
        -            "pizzaName": "Salami",
        -            "additionalToppings": ["🥓", "🌶️"]
        -        },
        -        {
        -            "pizzaName": "Margherita",
        -            "additionalToppings": ["🍌", "🌶️", "🍍"]
        -        }
        -    ]
        -}
        -
        +
        {
        +    "id": 778,
        +    "shop": "Luigis Pizza",
        +    "name": "Edward Olson",
        +    "phoneNumbers":
        +        ["(935)503-3765x4154","(935)12345"],
        +    "address": "Unit 9398 Box 2056 DPO AP 24022",
        +    "image": null,
        +    "pizzas": [
        +        {
        +            "pizzaName": "Salami",
        +            "additionalToppings": ["🥓", "🌶️"]
        +        },
        +        {
        +            "pizzaName": "Margherita",
        +            "additionalToppings": ["🍌", "🌶️", "🍍"]
        +        }
        +    ]
        +}
        +
        Check out the description of the fields The following examples use a pizza order dataset with an order having:
          @@ -147,48 +147,48 @@

          The dataset

        • image: null
        • and two pizzas contained in the pizzas item:
        -
        [
        -    {
        -        "pizzaName": "Salami",
        -        "additionalToppings": ["🥓", "🌶️"]
        -    },
        -    {
        -        "pizzaName": "Margherita",
        -        "additionalToppings": ["🍌", "🌶️", "🍍"]
        -    }
        -]
        -
        +
        [
        +    {
        +        "pizzaName": "Salami",
        +        "additionalToppings": ["🥓", "🌶️"]
        +    },
        +    {
        +        "pizzaName": "Margherita",
        +        "additionalToppings": ["🍌", "🌶️", "🍍"]
        +    }
        +]
        +
        If you want to reproduce the examples, check how to recreate the dataset

        It can be recreated with the following script:

        -
        create table test(id serial primary key, json_data json);
        -
        -insert into test(json_data) values (
        -'{
        -    "id": 778,
        -    "shop": "Luigis Pizza",
        -    "name": "Edward Olson",
        -    "phoneNumbers":
        -        ["(935)503-3765x4154","(935)12345"],
        -    "address": "Unit 9398 Box 2056 DPO AP 24022",
        -    "image": null,
        -    "pizzas": [
        -        {
        -            "pizzaName": "Salami",
        -            "additionalToppings": ["🥓", "🌶️"]
        -        },
        -        {
        -            "pizzaName": "Margherita",
        -            "additionalToppings": ["🍌", "🌶️", "🍍"]
        -        }
        -    ]
        -}');
        -
        +
        create table test(id serial primary key, json_data json);
        +
        +insert into test(json_data) values (
        +'{
        +    "id": 778,
        +    "shop": "Luigis Pizza",
        +    "name": "Edward Olson",
        +    "phoneNumbers":
        +        ["(935)503-3765x4154","(935)12345"],
        +    "address": "Unit 9398 Box 2056 DPO AP 24022",
        +    "image": null,
        +    "pizzas": [
        +        {
        +            "pizzaName": "Salami",
        +            "additionalToppings": ["🥓", "🌶️"]
        +        },
        +        {
        +            "pizzaName": "Margherita",
        +            "additionalToppings": ["🍌", "🌶️", "🍍"]
        +        }
        +    ]
        +}');
        +

        Remove a field from a JSON document with JSON_REMOVE function

        To remove one or more fields from a JSON document you can use the JSON_REMOVE function. To remove the the pizzaName from the second pizza in the above order you can:

        -
        select 
        -    JSON_REMOVE(json_data,'$.pizzas[1].pizzaName') remove_pizzaName from test;
        -

        Where

        +
        select 
        +    JSON_REMOVE(json_data,'$.pizzas[1].pizzaName') remove_pizzaName from test;
        +

        Where

        • json_data is the JSON column
        • $.pizzas[1].pizzaName selects the pizzas item, the 2nd element in the array and the pizzaName subitem
        • diff --git a/mysqljson/how-to-tabulate-JSON-document-mysql/index.html b/mysqljson/how-to-tabulate-JSON-document-mysql/index.html index 2feebd7b..ae007525 100644 --- a/mysqljson/how-to-tabulate-JSON-document-mysql/index.html +++ b/mysqljson/how-to-tabulate-JSON-document-mysql/index.html @@ -116,26 +116,26 @@

          The dataset

          The dataset is the following:

          -
          {
          -    "id": 778,
          -    "shop": "Luigis Pizza",
          -    "name": "Edward Olson",
          -    "phoneNumbers":
          -        ["(935)503-3765x4154","(935)12345"],
          -    "address": "Unit 9398 Box 2056 DPO AP 24022",
          -    "image": null,
          -    "pizzas": [
          -        {
          -            "pizzaName": "Salami",
          -            "additionalToppings": ["🥓", "🌶️"]
          -        },
          -        {
          -            "pizzaName": "Margherita",
          -            "additionalToppings": ["🍌", "🌶️", "🍍"]
          -        }
          -    ]
          -}
          -
          +
          {
          +    "id": 778,
          +    "shop": "Luigis Pizza",
          +    "name": "Edward Olson",
          +    "phoneNumbers":
          +        ["(935)503-3765x4154","(935)12345"],
          +    "address": "Unit 9398 Box 2056 DPO AP 24022",
          +    "image": null,
          +    "pizzas": [
          +        {
          +            "pizzaName": "Salami",
          +            "additionalToppings": ["🥓", "🌶️"]
          +        },
          +        {
          +            "pizzaName": "Margherita",
          +            "additionalToppings": ["🍌", "🌶️", "🍍"]
          +        }
          +    ]
          +}
          +
          Check out the description of the fields The following examples use a pizza order dataset with an order having:
            @@ -147,56 +147,56 @@

            The dataset

          • image: null
          • and two pizzas contained in the pizzas item:
          -
          [
          -    {
          -        "pizzaName": "Salami",
          -        "additionalToppings": ["🥓", "🌶️"]
          -    },
          -    {
          -        "pizzaName": "Margherita",
          -        "additionalToppings": ["🍌", "🌶️", "🍍"]
          -    }
          -]
          -
          +
          [
          +    {
          +        "pizzaName": "Salami",
          +        "additionalToppings": ["🥓", "🌶️"]
          +    },
          +    {
          +        "pizzaName": "Margherita",
          +        "additionalToppings": ["🍌", "🌶️", "🍍"]
          +    }
          +]
          +
          If you want to reproduce the examples, check how to recreate the dataset

          It can be recreated with the following script:

          -
          create table test(id serial primary key, json_data json);
          -
          -insert into test(json_data) values (
          -'{
          -    "id": 778,
          -    "shop": "Luigis Pizza",
          -    "name": "Edward Olson",
          -    "phoneNumbers":
          -        ["(935)503-3765x4154","(935)12345"],
          -    "address": "Unit 9398 Box 2056 DPO AP 24022",
          -    "image": null,
          -    "pizzas": [
          -        {
          -            "pizzaName": "Salami",
          -            "additionalToppings": ["🥓", "🌶️"]
          -        },
          -        {
          -            "pizzaName": "Margherita",
          -            "additionalToppings": ["🍌", "🌶️", "🍍"]
          -        }
          -    ]
          -}');
          -
          +
          create table test(id serial primary key, json_data json);
          +
          +insert into test(json_data) values (
          +'{
          +    "id": 778,
          +    "shop": "Luigis Pizza",
          +    "name": "Edward Olson",
          +    "phoneNumbers":
          +        ["(935)503-3765x4154","(935)12345"],
          +    "address": "Unit 9398 Box 2056 DPO AP 24022",
          +    "image": null,
          +    "pizzas": [
          +        {
          +            "pizzaName": "Salami",
          +            "additionalToppings": ["🥓", "🌶️"]
          +        },
          +        {
          +            "pizzaName": "Margherita",
          +            "additionalToppings": ["🍌", "🌶️", "🍍"]
          +        }
          +    ]
          +}');
          +

          Tabulate a JSON document with JSON_TABLE function

          To retrieve one or more JSON documents as columns and rows you can use the JSON_TABLE function. To retrieve the list of pizzas and their first additional topping from the above as table you can:

          -
          select tbl.* from
          -    test, 
          -    JSON_TABLE(
          -        json_data,
          -        '$.pizzas[*]' 
          -        COLUMNS (
          -            pizzaName VARCHAR(100) PATH '$.pizzaName', 
          -            additionalToppings VARCHAR(100) PATH '$.additionalToppings[0]'
          -            )
          -        ) tbl;
          -

          Where

          +
          select tbl.* from
          +    test, 
          +    JSON_TABLE(
          +        json_data,
          +        '$.pizzas[*]' 
          +        COLUMNS (
          +            pizzaName VARCHAR(100) PATH '$.pizzaName', 
          +            additionalToppings VARCHAR(100) PATH '$.additionalToppings[0]'
          +            )
          +        ) tbl;
          +

          Where

          • json_data is the JSON column
          • '$.pizzas[*]' generates a row for each pizza in the pizzas array
          • diff --git a/mysqljson/index.html b/mysqljson/index.html index 10553cbd..cff4f043 100644 --- a/mysqljson/index.html +++ b/mysqljson/index.html @@ -94,6 +94,36 @@

            +
            +
            +
            + + + +
            +

            How to query JSON in MySQL with JSON_CONTAINS

            + +
            +
            +
            +
            +

+ +
diff --git a/mysqljson/index.xml b/mysqljson/index.xml index c7b88e8e..25d296bc 100644 --- a/mysqljson/index.xml +++ b/mysqljson/index.xml @@ -8,6 +8,13 @@ en-us Mon, 09 Jan 2023 08:23:06 +0100 + + How to query JSON in MySQL with JSON_CONTAINS + https://ftisiot.net/mysqljson/query-json-contains-mysql/ + Fri, 01 Mar 2024 10:53:23 +0100 + https://ftisiot.net/mysqljson/query-json-contains-mysql/ + <p>You can query a JSON document in MySQL to find content within it with:</p> <ul> <li>The <code>JSON_CONTAINS</code> function that will return if a JSON document is contained within another JSON document. The function returns <code>1</code> if the document is contained, <code>0</code> elsewhere.</li> <li>The <code>JSON_CONTAINS</code> function that will return if a JSON document path is contained within another JSON document. The function returns <code>1</code> if the document is contained, <code>0</code> elsewhere.</li> </ul> + How to tabulate a JSON document in MySQL https://ftisiot.net/mysqljson/how-to-tabulate-JSON-document-mysql/ diff --git a/mysqljson/main/index.html b/mysqljson/main/index.html index 6256e8d0..1a522f9a 100644 --- a/mysqljson/main/index.html +++ b/mysqljson/main/index.html @@ -113,6 +113,7 @@

Parse JSON

  • How to extract a field from a JSON object in MySQL?
  • How to extract an item from an array in a JSON object in MySQL?
  • How to get the JSON field types in MySQL?
  • +
  • How to query JSON in MySQL with JSON_CONTAINS?
  • Create JSON

      diff --git a/mysqljson/page/2/index.html b/mysqljson/page/2/index.html index ee5291e1..dbc80f0a 100644 --- a/mysqljson/page/2/index.html +++ b/mysqljson/page/2/index.html @@ -94,6 +94,32 @@

      + +

    + +
    diff --git a/mysqljson/query-json-contains-mysql/index.html b/mysqljson/query-json-contains-mysql/index.html new file mode 100644 index 00000000..20c0bb10 --- /dev/null +++ b/mysqljson/query-json-contains-mysql/index.html @@ -0,0 +1,289 @@ + + + + + + + + + + + How to query JSON in MySQL with JSON_CONTAINS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    +

    How to query JSON in MySQL with JSON_CONTAINS

    +

    + + + + Published + + by + in Mysql, Json, Contains, Json_contains, Json_contains_path + at https://ftisiot.net/mysqljson/query-json-contains-mysql/ + + +

    +
    + + + + +
    + +
    + + + +
    +
    + +
    + + + +
    + + + + + + +
    +

    + Story logo +

    +

    + © 2024 +

    +
    + + + + + + + + diff --git a/page/10/index.html b/page/10/index.html index 39d203da..cb7ad3b7 100644 --- a/page/10/index.html +++ b/page/10/index.html @@ -89,6 +89,34 @@

    +
    +
    +
    +
    + + + +
    +

    OBI12c Performance Tiles PDF Print Error

    + +
    +
    +
    +
    +
    + +
    diff --git a/page/2/index.html b/page/2/index.html index da4c3cb0..f4fb88a6 100644 --- a/page/2/index.html +++ b/page/2/index.html @@ -89,6 +89,32 @@

    +
    +
    +
    +
    + + + +
    +

    re:Invent: Accelerate Generative AI development with Integrated Data Platforms

    + +
    +
    +
    +
    +
    + +
    diff --git a/page/3/index.html b/page/3/index.html index c33ae589..ac4d9e4e 100644 --- a/page/3/index.html +++ b/page/3/index.html @@ -89,6 +89,32 @@

    +
    + +
    + +
    @@ -332,32 +358,6 @@

    -
    - -
    - -

    diff --git a/page/4/index.html b/page/4/index.html index 41361467..a8c859cb 100644 --- a/page/4/index.html +++ b/page/4/index.html @@ -89,6 +89,32 @@

    +
    +
    +
    +
    + + + +
    +

    Pg Day Paris 2023: Fix Your Strings!

    + +
    +
    +
    +
    +
    + +
    diff --git a/page/5/index.html b/page/5/index.html index 7b381b9e..e8644782 100644 --- a/page/5/index.html +++ b/page/5/index.html @@ -89,6 +89,32 @@

    +
    + +
    + +
    diff --git a/page/6/index.html b/page/6/index.html index 2cb29747..74f2fca4 100644 --- a/page/6/index.html +++ b/page/6/index.html @@ -89,6 +89,32 @@

    +
    + +
    + +
    @@ -327,32 +353,6 @@

    -
    - -
    - -

    diff --git a/page/7/index.html b/page/7/index.html index e238dbbb..2c870411 100644 --- a/page/7/index.html +++ b/page/7/index.html @@ -89,6 +89,32 @@

    +
    + +
    + +
    diff --git a/page/8/index.html b/page/8/index.html index d3f93c46..8f4621e7 100644 --- a/page/8/index.html +++ b/page/8/index.html @@ -89,6 +89,32 @@

    +
    + +
    + +
    diff --git a/page/9/index.html b/page/9/index.html index 4f72e7e9..527eb21f 100644 --- a/page/9/index.html +++ b/page/9/index.html @@ -89,6 +89,32 @@

    +
    + +
    + +
    @@ -333,34 +359,6 @@

    -
    -
    -
    - - - -
    -

    OBI12c Performance Tiles PDF Print Error

    - -
    -
    -
    -
    -

    - -
    diff --git a/sitemap.xml b/sitemap.xml index 68a8538b..678031e4 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,13 +2,31 @@ - https://ftisiot.net/categories/ai/ - 2024-02-29T11:00:56+01:00 - https://ftisiot.net/categories/ - 2024-02-29T11:00:56+01:00 + 2024-03-01T10:53:23+01:00 + + https://ftisiot.net/categories/contains/ + 2024-03-01T10:53:23+01:00 https://ftisiot.net/ + 2024-03-01T10:53:23+01:00 + + https://ftisiot.net/mysqljson/query-json-contains-mysql/ + 2024-03-01T10:53:23+01:00 + + https://ftisiot.net/categories/json/ + 2024-03-01T10:53:23+01:00 + + https://ftisiot.net/categories/json_contains/ + 2024-03-01T10:53:23+01:00 + + https://ftisiot.net/categories/json_contains_path/ + 2024-03-01T10:53:23+01:00 + + https://ftisiot.net/categories/mysql/ + 2024-03-01T10:53:23+01:00 + + https://ftisiot.net/categories/ai/ 2024-02-29T11:00:56+01:00 https://ftisiot.net/posts/list-of-postgresql-ai-resources/ @@ -46,9 +64,6 @@ https://ftisiot.net/posts/mysql-concat/ 2024-02-12T14:43:29+01:00 - - https://ftisiot.net/categories/mysql/ - 2024-02-12T14:43:29+01:00 https://ftisiot.net/categories/string/ 2024-02-12T14:43:29+01:00 @@ -61,9 +76,6 @@ https://ftisiot.net/categories/jq/ 2024-02-02T11:25:54+01:00 - - https://ftisiot.net/categories/json/ - 2024-02-02T11:25:54+01:00 https://ftisiot.net/categories/dataload/ 2024-01-29T14:38:05+01:00 @@ -370,9 +382,6 @@ https://ftisiot.net/postgresqljson/how-to-index-and-query-json-postgresql/ 2023-01-06T16:59:12+01:00 - - https://ftisiot.net/categories/contains/ - 2023-01-06T16:39:26+01:00 https://ftisiot.net/postgresqljson/how-to-check-JSON-contains-postgresql/ 2023-01-06T16:39:26+01:00