Robert Cemper · Apr 6, 2024 go to post

Alternate approach:
in SMP SQL  run this:
 

CREATE PROCEDURE ZPM.terminal() LANGUAGE OBJECTSCRIPT
{
 zpm "install webterminal"
 quit 1
}
 and next
 SELECT ZPM.terminal()
Robert Cemper · Apr 5, 2024 go to post

confirmed! 
And healthshare is not available as docker image
SO >>> No Docker Demo nor Migration for HealthShare ????   👹

Robert Cemper · Apr 5, 2024 go to post

agreed.
But Switching on/off Journal by process every time you write ^EVENT seems rather uncomfortable.

though it's compact as you know exactly when you need it,
 

Robert Cemper · Apr 5, 2024 go to post

depending on the actual long time use you may of course also    
use ^mtemp.EVENT  (in IRISTEMP)    
instead of a journaled ^EVENT in your actual namespace to escape transactions

Robert Cemper · Apr 5, 2024 go to post
  • LOCK would be indeed the best equivalent to Isolation Modes
  • just IRISTEMP doesn't react to COMMIT or ROLLBACK  (there is no related Journal)
  • so instead of writing to your ^EVENT Global you may write to a PPG ^||EVENT acting as your  private temp
  • after Commit or Rollback you decide if you MERGE  ^||EVENT to public ^EVENT or not.
  • from your description, I assume you do it anyhow  
Robert Cemper · Apr 1, 2024 go to post

Congratulations to all the winners!
It was a great event and highly useful to follow.

Robert Cemper · Mar 28, 2024 go to post

PLEASE!
if you have a different question then PLEASE don't change the original content
this breaks the total information flow.
Existing replies will look like nonsense!

Robert Cemper · Mar 27, 2024 go to post

Thanks @Raj Singh  great input  !
I recently struggled with LOAD DATA and finally dropped it in favor
of an old-fashioned COS import for 2 reasons:

  • installation of Java was a prerequisite (might be mentioned somewhere, not identified)
    not a default in community containers
  • quality of data was POOR to express it politely e.g:
    • column expected to be DOUBLE   >> content was 
      • number 
      • $ number
      • some text
      • NULL
  • date with any sick non -SQL format
  • just empty lines by wild running \n

so some exception handling after validation would have been a great feature in my case
to filter out sick records.

The sick CSV is available on GitHub
 
 

Robert Cemper · Mar 27, 2024 go to post

By SQL priniciple:     
any straight name is meant to be a COLUMN of the actual table.  eg. Embeddings
but an external HostVariable is designated by an initial : (colon)  e.g.  : new_embedding_str or :params

This seems to be the deeper cause your problem

in addition I'd suggest to add  print(new_embedding_str)  to verify its format. (one of my problems.

Furthermore, take a closer look to this example:
iris-vector-search/blob/main/demo/sql_demo.ipynb

Robert Cemper · Mar 27, 2024 go to post

Sounds promising:
in my COS example, I had to use pure String parameters like  "0.54456,0.6987646,0.I123" 
happened by accident, more for reading and debugging

Robert Cemper · Mar 26, 2024 go to post

I use a similar setup in my example in OEX ,
Especially with TO_VECTOR() I ran into problems if I didn't add the explicit
type and size of the vector.  e.g. TO_VECTOR("..........",,DOUBLE,384)
as model all-MiniLM-L6-v2  produces exactly that type and size:
Don't ask for why. I just used the proposed example

Robert Cemper · Mar 26, 2024 go to post

- Thank you @Andrew Wardly:
Your observation is pretty correct. It derives from a late Latin dialect spoken
around Locarno (today Switzerland) around 1600. Eventually starting with a very sharp S.
So the mental link to "Semper Fidelis" is pretty close and matches well.  

Robert Cemper · Mar 22, 2024 go to post

eventually better to check for longer lists

USER>s x=$lfs("Purple,Black,Yellow,Pink")
USER>s y=$lfs("Red,Green,Orange,Yellow")
USER>f z="y","x" f i=1:1:$ll(@z) i $i(dif($li(@z,i)))
 
USER>zw dif
dif("Black")=1
dif("Green")=1
dif("Orange")=1
dif("Pink")=1
dif("Purple")=1
dif("Red")=1
dif("Yellow")=2
 

looping with $o() over dif() allows programmatic check

Robert Cemper · Mar 21, 2024 go to post

I just realized that $vector() is a left+right function similar to $li()

  • set $vector(target,...) = ....  to set
  • set vec = $vector(...)          to get   
Robert Cemper · Mar 21, 2024 go to post

experimenting with class %Library.Vector I found an unattractive way:

;; compose JSON array  >> v
USER>zw v
v=[($double(.5)),($double(1.5)),($double(2.2000000000000001776))]  ; <DYNAMIC ARRAY>
USER>set vec=##class(%Vector).OdbcToLogical(v)
 
USER>zw vec
vec={"type":"double", "count":3, "length":3, "vector":[$double(.5),$double(1.5),$double(2.2000000000000001776)]}  ; <VECTOR>

Applying OdbcToLogical  was really shocking

Robert Cemper · Mar 21, 2024 go to post

Indeed:
I was unable to locate an official docu on new  SQL function TO_VECTOR()
Similarly, I found no documentation on how to set a VECTOR Datetype on pure object level
e.g. obj.vectorproperty = ?????? or obj.vectorproperty.set(?????)
I tried a bit with DisplayToLogical  but gave up in the end

Robert Cemper · Mar 21, 2024 go to post

Routine names starting with %Z or %z go to namespace %SYS automatically:
Though by mapping it to namespace %ALL any routine can be available in any namespace

Robert Cemper · Mar 20, 2024 go to post

Hi al!,
Just returning from some private troubleshooting I'm deeply moved and thankful for this feedback.
It's once more a motivation to continue my activities.
Sometimes I'm insisting on small pieces that may bypass general attention.
Though servicing customers - and I understand you all as my customers -
requires to take care also of the small and often annoying pieces. 

Special big THANKS to the brilliant team behind the DC+OEX+GM facility.
YOU ARE GREAT. 💐🌷🌺🌸💮🌼🌻
 

Robert Cemper · Mar 13, 2024 go to post

Thank you for publishing my attempts and the clear message:

  • There is not just 1 solution. !